中英双语

This commit is contained in:
tianmo committed 2026-10-22 18:13:43 +08:00
1 parent ea26af26ee
commit b98c0333e6
50 files changed
+4082 -2049

No files matched your search

@@ -2,54 +2,54 @@
<!-- 4. 粒子属性 -->
<div class="group">
<div class="group-head" @click="toggle('attr')">
<span class="caret">{{ collapsed.attr ? '▸' : '▾' }}</span><span>粒子属性</span>
<button class="group-reset" title="重置粒子属性参数" @click.stop="resetModule('attr')">重置</button>
<span class="caret">{{ collapsed.attr ? '▸' : '▾' }}</span><span>{{ $t('attributes.title') }}</span>
<button class="group-reset" :title="$t('attributes.reset')" @click.stop="resetModule('attr')">{{ $t('common.reset') }}</button>
</div>
<div class="group-body attr-body" v-show="!collapsed.attr">
<div class="attr-section-title">粒子初始参数</div>
<div class="attr-section-title">{{ $t('attributes.initialParams') }}</div>
<ParticleAttributeControl
label="初始生命周期"
:label="$t('attributes.initialLife')"
:allow-curve="false"
v-model:mode="sys.config.lifeMode"
v-model:value-min="sys.config.lifeMin"
v-model:value-max="sys.config.lifeMax"
v-model:curve="sys.config.lifeCurve"
:min="0.1" :max="10" :step="0.1"
curve-label="随机采样 →"
:curve-label="$t('attributes.randomSample')"
/>
<ParticleAttributeControl
label="初始速度"
:label="$t('attributes.initialSpeed')"
:allow-curve="false"
v-model:mode="sys.config.speedMode"
v-model:value-min="sys.config.speedMin"
v-model:value-max="sys.config.speedMax"
v-model:curve="sys.config.speedCurve"
:min="0" :max="1000" :step="1"
curve-label="随机采样 →"
:curve-label="$t('attributes.randomSample')"
/>
<div class="attr-axis-head">
<span>初始缩放</span>
<span>{{ $t('attributes.initialScale') }}</span>
<div class="axis-modes">
<button class="axis-mode" :class="{ on: sys.config.scaleAxisMode === 'uniform' }" @click="sys.config.scaleAxisMode = 'uniform'">统一</button>
<button class="axis-mode" :class="{ on: sys.config.scaleAxisMode === 'separate' }" @click="sys.config.scaleAxisMode = 'separate'">XY分离</button>
<button class="axis-mode" :class="{ on: sys.config.scaleAxisMode === 'uniform' }" @click="sys.config.scaleAxisMode = 'uniform'">{{ $t('attributes.uniform') }}</button>
<button class="axis-mode" :class="{ on: sys.config.scaleAxisMode === 'separate' }" @click="sys.config.scaleAxisMode = 'separate'">{{ $t('attributes.separateXY') }}</button>
</div>
</div>
<ParticleAttributeControl
:label="sys.config.scaleAxisMode === 'uniform' ? '初始缩放' : '缩放 X'"
:label="sys.config.scaleAxisMode === 'uniform' ? $t('attributes.initialScale') : $t('attributes.scaleX')"
:allow-curve="false"
v-model:mode="sys.config.scaleMode"
v-model:value-min="sys.config.scaleMin"
v-model:value-max="sys.config.scaleMax"
v-model:curve="sys.config.scaleCurve"
:min="0" :max="5" :step="0.05"
curve-label="随机采样 →"
:curve-label="$t('attributes.randomSample')"
/>
<ParticleAttributeControl
v-if="sys.config.scaleAxisMode === 'separate'"
label="缩放 Y"
:label="$t('attributes.scaleY')"
:show-modes="false"
:allow-curve="false"
v-model:mode="sys.config.scaleMode"
@@ -57,11 +57,11 @@
v-model:value-max="sys.config.scaleYMax"
v-model:curve="sys.config.scaleYCurve"
:min="0" :max="5" :step="0.05"
curve-label="随机采样 →"
:curve-label="$t('attributes.randomSample')"
/>
<ParticleAttributeControl
label="初始旋转"
:label="$t('attributes.initialRotation')"
allow-direction
:allow-curve="false"
v-model:mode="sys.config.initialRotationMode"
@@ -69,19 +69,19 @@
v-model:value-max="sys.config.initialRotationMax"
v-model:curve="sys.config.initialRotationCurve"
:min="-360" :max="360" :step="1"
curve-label="随机采样 →"
:curve-label="$t('attributes.randomSample')"
/>
<div class="attr-section-title life-title">粒子生命周期变化参数</div>
<div class="attr-section-title life-title">{{ $t('attributes.lifecycleTitle') }}</div>
<div class="life-item">
<label class="switch-row">
<input type="checkbox" v-model="sys.config.speedOverLifeEnabled" />
<span class="switch-ui"></span><span>生命周期内速度</span>
<span class="switch-ui"></span><span>{{ $t('attributes.speedOverLife') }}</span>
</label>
<ParticleAttributeControl
v-if="sys.config.speedOverLifeEnabled"
label="速度倍率"
:label="$t('attributes.speedMultiplier')"
:mode="sys.config.speedOverLifeMode"
@update:mode="setSpeedOverLifeMode"
v-model:value-min="sys.config.speedOverLifeMin"
@@ -89,22 +89,22 @@
v-model:curve="sys.config.speedOverLifeCurve"
:default-curve="FLAT_CURVE"
:min="0" :max="3" :step="0.05"
curve-label="生命周期 →"
:curve-label="$t('attributes.lifeTo')"
/>
</div>
<div class="life-item">
<label class="switch-row">
<input type="checkbox" v-model="sys.config.scaleOverLifeEnabled" @change="prepareScaleOverLifeCurve" />
<span class="switch-ui"></span><span>生命周期内缩放</span>
<span class="switch-ui"></span><span>{{ $t('attributes.scaleOverLife') }}</span>
</label>
<template v-if="sys.config.scaleOverLifeEnabled">
<div class="axis-modes life-axis">
<button class="axis-mode" :class="{ on: sys.config.scaleOverLifeAxisMode === 'uniform' }" @click="sys.config.scaleOverLifeAxisMode = 'uniform'">统一</button>
<button class="axis-mode" :class="{ on: sys.config.scaleOverLifeAxisMode === 'separate' }" @click="sys.config.scaleOverLifeAxisMode = 'separate'">XY分离</button>
<button class="axis-mode" :class="{ on: sys.config.scaleOverLifeAxisMode === 'uniform' }" @click="sys.config.scaleOverLifeAxisMode = 'uniform'">{{ $t('attributes.uniform') }}</button>
<button class="axis-mode" :class="{ on: sys.config.scaleOverLifeAxisMode === 'separate' }" @click="sys.config.scaleOverLifeAxisMode = 'separate'">{{ $t('attributes.separateXY') }}</button>
</div>
<ParticleAttributeControl
:label="sys.config.scaleOverLifeAxisMode === 'uniform' ? '缩放倍率' : '倍率 X'"
:label="sys.config.scaleOverLifeAxisMode === 'uniform' ? $t('attributes.scaleMultiplier') : $t('attributes.multiplierX')"
:mode="sys.config.scaleOverLifeMode"
@update:mode="setScaleOverLifeMode"
v-model:value-min="sys.config.scaleOverLifeMin"
@@ -112,11 +112,11 @@
v-model:curve="sys.config.scaleOverLifeCurve"
:default-curve="FLAT_CURVE"
:min="0" :max="3" :step="0.05"
curve-label="生命周期 →"
:curve-label="$t('attributes.lifeTo')"
/>
<ParticleAttributeControl
v-if="sys.config.scaleOverLifeAxisMode === 'separate'"
label="倍率 Y"
:label="$t('attributes.multiplierY')"
:show-modes="false"
v-model:mode="sys.config.scaleOverLifeMode"
v-model:value-min="sys.config.scaleYOverLifeMin"
@@ -124,7 +124,7 @@
v-model:curve="sys.config.scaleYOverLifeCurve"
:default-curve="FLAT_CURVE"
:min="0" :max="3" :step="0.05"
curve-label="生命周期 →"
:curve-label="$t('attributes.lifeTo')"
/>
</template>
</div>
@@ -132,18 +132,18 @@
<div class="life-item">
<label class="switch-row">
<input type="checkbox" v-model="sys.config.rotationOverLifeEnabled" />
<span class="switch-ui"></span><span>生命周期内旋转</span>
<span class="switch-ui"></span><span>{{ $t('attributes.rotationOverLife') }}</span>
</label>
<ParticleAttributeControl
v-if="sys.config.rotationOverLifeEnabled"
label="旋转速度"
:label="$t('attributes.rotationSpeed')"
v-model:mode="sys.config.rotationOverLifeMode"
v-model:value-min="sys.config.rotationSpeedMin"
v-model:value-max="sys.config.rotationSpeedMax"
v-model:curve="sys.config.rotationOverLifeCurve"
:default-curve="LINEAR_CURVE"
:min="-720" :max="720" :step="10"
curve-label="生命周期 →"
:curve-label="$t('attributes.lifeTo')"
/>
</div>
</div>