整合SLSUtilities
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Cielonos.MainGame.Characters;
|
||||
using SLSFramework.General;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace SLSUtilities.FunctionalAnimation
|
||||
public string animationName => funcAnimData.animInfo.animationName;
|
||||
public bool isLooping => funcAnimData.animationClip.isLooping;
|
||||
|
||||
public CharacterBase executor;
|
||||
public IFuncAnimExecutor executor;
|
||||
public float currentPlayTime;
|
||||
public bool isDisrupted;
|
||||
public int dataAnimEventIndex;
|
||||
@@ -23,8 +23,11 @@ namespace SLSUtilities.FunctionalAnimation
|
||||
public VariableCollection runtimeVariables;
|
||||
public Dictionary<string, bool> updateUntilStatus;
|
||||
private List<FuncAnimEvent> playedEndEvents;
|
||||
|
||||
[NonSerialized]
|
||||
public object currentActionParams;
|
||||
|
||||
public RuntimeFuncAnim(FuncAnimData funcAnimData, CharacterBase character)
|
||||
public RuntimeFuncAnim(FuncAnimData funcAnimData, IFuncAnimExecutor character)
|
||||
{
|
||||
this.funcAnimData = funcAnimData;
|
||||
this.executor = character;
|
||||
@@ -43,10 +46,24 @@ namespace SLSUtilities.FunctionalAnimation
|
||||
dataEvents.updateUntilEvents.ForEach(payload => payload.runtimeFuncAnim = this);
|
||||
}
|
||||
|
||||
public T GetParams<T>() where T : class
|
||||
{
|
||||
if (currentActionParams is T typedParams)
|
||||
{
|
||||
return typedParams;
|
||||
}
|
||||
|
||||
Debug.LogWarning(currentActionParams != null
|
||||
? $"[RuntimeFuncAnim] 参数类型不匹配。期望: {typeof(T).Name}, 实际: {currentActionParams.GetType().Name}"
|
||||
: $"[RuntimeFuncAnim] 尝试获取 {typeof(T).Name},但当前参数为空。");
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public void AddAnimEvent(float time, FuncAnimPayloadBase payload, bool isEnd = false)
|
||||
{
|
||||
payload.runtimeFuncAnim = this;
|
||||
runtimeEvents.animEvents.Add(new FuncAnimEvent(funcAnimData, time, payload, isEnd));
|
||||
runtimeEvents.animEvents.Add(new FuncAnimEvent(time, payload, isEnd));
|
||||
}
|
||||
|
||||
public void UpdateAnimEvent()
|
||||
|
||||
Reference in New Issue
Block a user