* @zh 移除效果 * @en Remove effect * * @param instanceId - @zh 实例 ID @en Instance ID
(instanceId: string)
| 252 | * @param instanceId - @zh 实例 ID @en Instance ID |
| 253 | */ |
| 254 | remove(instanceId: string): boolean { |
| 255 | const effect = this._effects.get(instanceId); |
| 256 | if (!effect) return false; |
| 257 | |
| 258 | effect.isActive = false; |
| 259 | |
| 260 | // Call handler |
| 261 | const handler = this._handlers.get(effect.definition.typeId); |
| 262 | handler?.onRemove?.(effect, this._target); |
| 263 | |
| 264 | // Remove from collections |
| 265 | this._effects.delete(instanceId); |
| 266 | this._effectsByType.get(effect.definition.typeId)?.delete(instanceId); |
| 267 | |
| 268 | for (const tag of effect.definition.tags) { |
| 269 | this._effectsByTag.get(tag)?.delete(instanceId); |
| 270 | } |
| 271 | |
| 272 | // Emit event |
| 273 | this._emitEvent('removed', effect); |
| 274 | |
| 275 | return true; |
| 276 | } |
| 277 | |
| 278 | /** |
| 279 | * @zh 按类型移除效果 |
no test coverage detected