整合SLSUtilities
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using Cielonos.MainGame.Characters;
|
||||
using Cielonos.MainGame.FunctionalAnimation;
|
||||
using Sirenix.OdinInspector;
|
||||
@@ -19,7 +21,7 @@ namespace Cielonos.MainGame.Inventory
|
||||
private List<string> registeredFunctionNames = new List<string>();
|
||||
|
||||
[TitleGroup("Data")]
|
||||
public List<FuncAnimData> fullBodyFuncAnims = new List<FuncAnimData>();
|
||||
public FuncAnimDataCollection fullBodyFuncAnims;
|
||||
public ContentData contentData;
|
||||
public ViewObjectData viewObjectData;
|
||||
public VFXData vfxData;
|
||||
@@ -112,10 +114,10 @@ namespace Cielonos.MainGame.Inventory
|
||||
|
||||
public partial class ItemBase
|
||||
{
|
||||
protected RuntimeFuncAnim PlayTargetedAnimation(string animationName, CharacterBase target = null,
|
||||
float adsorptionMinDistance = 1f, bool autoRotate = true,
|
||||
FunctionalAnimationSubmodule funcAnimSm = null,
|
||||
float animationSpeedMultiplier = 1f, float transitionDuration = 0.1f, bool isNormalizedTransition = false)
|
||||
protected bool PlayTargetedAnimation(string animationName, CharacterBase target = null,
|
||||
float adsorptionMinDistance = 1f, bool autoRotate = true, FunctionalAnimationSubmodule funcAnimSm = null,
|
||||
float animationSpeedMultiplier = 1f, float transitionDuration = 0.1f, bool isNormalizedTransition = false,
|
||||
string comboTreeName = "Main")
|
||||
{
|
||||
|
||||
funcAnimSm ??= fullBodyFuncAnimSm;
|
||||
@@ -124,7 +126,7 @@ namespace Cielonos.MainGame.Inventory
|
||||
{
|
||||
float actionCoolDownTime = fullBodyFuncAnimSm.currentData.Interval(IntervalType.ActionDisruption).StartTime /
|
||||
fullBodyFuncAnimSm.currentPlaySpeedMultiplier;
|
||||
comboSm?.SuspendThenSetup(actionCoolDownTime);
|
||||
comboSm?[comboTreeName].SuspendThenSetup(actionCoolDownTime);
|
||||
//GameManager.Player.eventController.GeneralAttackEvents.InvokeAllEvents();
|
||||
|
||||
if (target != null)
|
||||
@@ -133,10 +135,10 @@ namespace Cielonos.MainGame.Inventory
|
||||
funcAnimSm.currentRuntimeFuncAnim.AddUpdateUntilEvent(new SetRootAdsorptionAdjustment(target, adsorptionMinDistance));
|
||||
}
|
||||
|
||||
return funcAnimSm.currentRuntimeFuncAnim;
|
||||
return true;
|
||||
}
|
||||
|
||||
return null;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,7 +146,9 @@ namespace Cielonos.MainGame.Inventory
|
||||
{
|
||||
public void RegisterFullBodyFuncAnims()
|
||||
{
|
||||
foreach (FuncAnimData funcAnim in fullBodyFuncAnims)
|
||||
if (fullBodyFuncAnims == null) return;
|
||||
|
||||
foreach (FuncAnimData funcAnim in fullBodyFuncAnims.animDataList)
|
||||
{
|
||||
player.animationSc.fullBodyFuncAnimSm.Add(funcAnim);
|
||||
}
|
||||
@@ -166,19 +170,23 @@ namespace Cielonos.MainGame.Inventory
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void RegisterFunctionsToAnimSc(params Action<RuntimeFuncAnim>[] functions)
|
||||
protected virtual void RegisterFunctionsToAnimSc()
|
||||
{
|
||||
foreach (Action<RuntimeFuncAnim> function in functions)
|
||||
foreach (CustomFunction function in fullBodyFuncAnims.preloadFunctions)
|
||||
{
|
||||
string functionName = function.Method.Name;
|
||||
if (!player.animationSc.registeredFunctions.TryAdd(functionName, function))
|
||||
string functionName = function.functionName;
|
||||
string FAPF_functionName = new StringBuilder(functionName).Insert(0, "FAPF_").ToString();
|
||||
MethodInfo method = GetType().GetMethod(FAPF_functionName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
|
||||
|
||||
if (method == null)
|
||||
{
|
||||
Debug.LogWarning($"Function {functionName} is already registered.");
|
||||
}
|
||||
else
|
||||
{
|
||||
registeredFunctionNames.Add(functionName);
|
||||
}
|
||||
Debug.LogWarning($"Function {functionName} not found in {this.GetType().Name}. Skipping registration.");
|
||||
continue;
|
||||
}
|
||||
|
||||
Action<RuntimeFuncAnim> action = Delegate.CreateDelegate(typeof(Action<RuntimeFuncAnim>), this, method) as Action<RuntimeFuncAnim>;
|
||||
registeredFunctionNames.Add(functionName);
|
||||
player.animationSc.registeredFunctions.TryAdd(functionName, action);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -193,17 +201,5 @@ namespace Cielonos.MainGame.Inventory
|
||||
}
|
||||
registeredFunctionNames.Clear();
|
||||
}
|
||||
|
||||
protected virtual void RemoveFunctionsFromAnimSc(params Action[] functions)
|
||||
{
|
||||
foreach (Action function in functions)
|
||||
{
|
||||
string functionName = function.Method.Name;
|
||||
if (!player.animationSc.registeredFunctions.Remove(functionName))
|
||||
{
|
||||
Debug.LogWarning($"Function {functionName} is not found.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user