加入碰撞和粒子发射路径

This commit is contained in:
tianmo committed 2026-09-05 18:18:05 +08:00
1 parent 026ee74d48
commit 72d8daa283
12 files changed
+1365 -1276

No files matched your search

+5 -5
View File
@@ -1,5 +1,5 @@
import { defineStore } from 'pinia'
import { EmitterConfig, defaultConfig, ParticleState, type SceneCollider } from '../core/particleEmitter'
import { EmitterConfig, defaultConfig, ensureEmitterConfig, ParticleState, type SceneCollider } from '../core/particleEmitter'
import type { SpineSceneObject } from '../spine/spineTypes'
import { releaseSpineAsset, retainSpineAsset } from '../spine/spineAssetRegistry'
import { cloneEditorValue } from '../editor/editorClone'
@@ -20,8 +20,6 @@ export interface ParticleSystem {
export interface CollisionBody extends SceneCollider {
name: string
visible: boolean
tags: string[]
selectedTag: string
followPath: boolean
followPathId: number
followDuration: number
@@ -254,8 +252,6 @@ export const useParticleStore = defineStore('particle', {
id,
name: `Collider${id}`,
visible: true,
tags: ['Default'],
selectedTag: 'Default',
shape: 'circle',
enabled: true,
x: 0,
@@ -402,6 +398,10 @@ export const useParticleStore = defineStore('particle', {
removeCollider(id: number) {
const index = this.colliders.findIndex((item) => item.id === id)
if (index >= 0) this.colliders.splice(index, 1)
for (const system of this.systems) {
const config = ensureEmitterConfig(system.config as any)
config.collisionColliderIds = config.collisionColliderIds.filter((colliderId) => colliderId !== id)
}
if (this.activeObjectType === 'collision' && this.activeObjectId === id) {
const fallback = this.systems[0]
this.activeObjectType = fallback ? 'particle' : 'collision'