mirror of
https://gitee.com/jisol/jisol-game/
synced 2025-09-27 10:46:17 +00:00
提交
This commit is contained in:
@@ -48,7 +48,7 @@ namespace GAS.Editor
|
||||
/// <summary>
|
||||
/// 这个方法被反射引用到, 重构请小心!!
|
||||
/// </summary>
|
||||
public static void ShowWindow(TimelineAbilityAssetBase asset)
|
||||
public static void ShowWindow(TimelineAbilityAsset asset)
|
||||
{
|
||||
var wnd = GetWindow<AbilityTimelineEditorWindow>();
|
||||
wnd.titleContent = new GUIContent("AbilityTimelineEditorWindow");
|
||||
@@ -63,7 +63,7 @@ namespace GAS.Editor
|
||||
AbilityAsset.Save();
|
||||
}
|
||||
|
||||
private void InitAbility(TimelineAbilityAssetBase asset)
|
||||
private void InitAbility(TimelineAbilityAsset asset)
|
||||
{
|
||||
_abilityAsset.value = asset;
|
||||
MaxFrame.value = AbilityAsset.FrameCount;
|
||||
@@ -84,7 +84,7 @@ namespace GAS.Editor
|
||||
|
||||
private ObjectField _abilityAsset;
|
||||
private Button _btnShowAbilityAssetDetail;
|
||||
public TimelineAbilityAssetBase AbilityAsset => _abilityAsset.value as TimelineAbilityAssetBase;
|
||||
public TimelineAbilityAsset AbilityAsset => _abilityAsset.value as TimelineAbilityAsset;
|
||||
|
||||
// private TimelineAbilityEditorWindow AbilityAssetEditor => AbilityAsset != null
|
||||
// ? UnityEditor.Editor.CreateEditor(AbilityAsset) as TimelineAbilityEditorWindow
|
||||
@@ -208,7 +208,7 @@ namespace GAS.Editor
|
||||
|
||||
if (_currentMaxFrame == value) return;
|
||||
_currentMaxFrame = value;
|
||||
AbilityAsset.FrameCount = _currentMaxFrame;
|
||||
AbilityAsset.frameCount = _currentMaxFrame;
|
||||
SaveAsset();
|
||||
MaxFrame.value = _currentMaxFrame;
|
||||
TrackView.UpdateContentSize();
|
||||
|
@@ -34,7 +34,7 @@ namespace GAS.Editor
|
||||
public List<TrackBase> TrackList { get; } = new();
|
||||
|
||||
private static AbilityTimelineEditorConfig Config => AbilityTimelineEditorWindow.Instance.Config;
|
||||
private static TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private static TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
|
||||
private void InitTracks()
|
||||
{
|
||||
|
@@ -8,7 +8,7 @@ namespace GAS.Editor
|
||||
|
||||
public class TaskClip : TrackClip<TaskClipEventTrack>
|
||||
{
|
||||
private TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
public TaskClipEvent TaskClipData => clipData as TaskClipEvent;
|
||||
|
||||
public TaskClipEvent ClipDataForSave
|
||||
|
@@ -42,7 +42,7 @@ namespace GAS.Editor
|
||||
|
||||
private const string GRP_BOX = "GRP_BOX";
|
||||
private const string GRP_BOX_TASK = "GRP_BOX/Task";
|
||||
private TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private TaskClip _clip;
|
||||
|
||||
public static TaskClipEditor Create(TaskClip clip)
|
||||
|
@@ -13,7 +13,7 @@ namespace GAS.Editor
|
||||
protected override Color TrackColor => new Color(0.7f, 0.3f, 0.7f, 0.2f);
|
||||
protected override Color MenuColor => new Color(0.5f, 0.3f, 0.5f, 1);
|
||||
|
||||
private TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
public TaskClipEventTrackData TaskClipTrackDataForSave
|
||||
{
|
||||
get
|
||||
|
@@ -7,7 +7,7 @@ namespace GAS.Editor
|
||||
|
||||
public class PassiveTaskClip : TrackClip<PassiveTaskClipEventTrack>
|
||||
{
|
||||
private TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
public PassiveTaskClipEvent TaskClipData => clipData as PassiveTaskClipEvent;
|
||||
|
||||
public PassiveTaskClipEvent ClipDataForSave
|
||||
|
@@ -42,7 +42,7 @@ namespace GAS.Editor
|
||||
|
||||
private const string GRP_BOX = "GRP_BOX";
|
||||
private const string GRP_BOX_TASK = "GRP_BOX/Task";
|
||||
private TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private PassiveTaskClip _clip;
|
||||
|
||||
public static PassiveTaskClipEditor Create(PassiveTaskClip clip)
|
||||
|
@@ -13,7 +13,7 @@ namespace GAS.Editor
|
||||
protected override Color TrackColor => new Color(0.7f, 0.3f, 0.7f, 0.2f);
|
||||
protected override Color MenuColor => new Color(0.5f, 0.3f, 0.5f, 1);
|
||||
|
||||
private TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
public PassiveTaskClipEventTrackData TaskClipTrackDataForSave
|
||||
{
|
||||
get
|
||||
|
@@ -11,7 +11,7 @@ namespace GAS.Editor
|
||||
public class TaskMarkEventTrack : TrackBase
|
||||
{
|
||||
private TaskMarkEventTrackData _instantTasksTrackData;
|
||||
private static TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private static TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
|
||||
public TaskMarkEventTrackData InstantTaskEventTrackData
|
||||
{
|
||||
|
@@ -10,7 +10,7 @@ namespace GAS.Editor
|
||||
|
||||
public class BuffGameplayEffectClipEditor : OdinEditorWindow
|
||||
{
|
||||
private TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
|
||||
private BuffGameplayEffectClip _clip;
|
||||
|
||||
|
@@ -13,7 +13,7 @@ namespace GAS.Editor
|
||||
protected override Color TrackColor => new(0.9f, 0.6f, 0.6f, 0.2f);
|
||||
protected override Color MenuColor => new(0.9f, 0.6f, 0.6f, 1);
|
||||
|
||||
private TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
|
||||
public BuffGameplayEffectTrackData BuffTrackDataForSave
|
||||
{
|
||||
|
@@ -8,7 +8,7 @@ namespace GAS.Editor
|
||||
|
||||
public class DurationalCueClip : TrackClip<DurationalCueTrack>
|
||||
{
|
||||
private TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
public DurationalCueClipEvent DurationalCueClipData => clipData as DurationalCueClipEvent;
|
||||
|
||||
private DurationalCueClipEvent ClipDataForSave
|
||||
|
@@ -10,7 +10,7 @@ namespace GAS.Editor
|
||||
|
||||
public class DurationalCueClipEditor : OdinEditorWindow
|
||||
{
|
||||
private TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
|
||||
private DurationalCueClip _clip;
|
||||
|
||||
|
@@ -13,7 +13,7 @@ namespace GAS.Editor
|
||||
protected override Color TrackColor => new(0.1f, 0.6f, 0.1f, 0.2f);
|
||||
protected override Color MenuColor => new(0.1f, 0.6f, 0.1f, 1);
|
||||
|
||||
private TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
|
||||
public DurationalCueTrackData CueTrackDataForSave
|
||||
{
|
||||
|
@@ -12,7 +12,7 @@ namespace GAS.Editor
|
||||
public class InstantCueTrack : TrackBase
|
||||
{
|
||||
private InstantCueTrackData _instantCuesTrackData;
|
||||
private static TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private static TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
|
||||
public InstantCueTrackData InstantCueTrackData
|
||||
{
|
||||
|
@@ -13,7 +13,7 @@ namespace GAS.Editor
|
||||
private Color _trackColor;
|
||||
private Type _trackDataType;
|
||||
private Type _trackType;
|
||||
private static TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private static TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private static AbilityTimelineEditorConfig Config => AbilityTimelineEditorWindow.Instance.Config;
|
||||
private static TimelineTrackView TrackView => AbilityTimelineEditorWindow.Instance.TrackView;
|
||||
public override Type TrackDataType { get; }
|
||||
|
@@ -10,7 +10,7 @@ namespace GAS.Editor
|
||||
|
||||
public class PassiveGameplayEffectClipEditor : OdinEditorWindow
|
||||
{
|
||||
private TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
|
||||
private PassiveGameplayEffectClip _clip;
|
||||
|
||||
|
@@ -9,7 +9,7 @@ namespace GAS.Editor
|
||||
public class PassiveGameplayEffectTrack : TrackBase
|
||||
{
|
||||
private PassiveGameplayEffectTrackData _PassiveGameplayEffectTrackData;
|
||||
private TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
|
||||
public override Type TrackDataType => typeof(PassiveGameplayEffectTrackData);
|
||||
protected override Color TrackColor => new(0.9f, 0.6f, 0.6f, 0.2f);
|
||||
|
@@ -9,7 +9,7 @@ namespace GAS.Editor
|
||||
|
||||
public class ReleaseGameplayEffectTrack : TrackBase
|
||||
{
|
||||
private static TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private static TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
public ReleaseGameplayEffectTrackData ReleaseGameplayEffectTrackData {
|
||||
get
|
||||
{
|
||||
|
@@ -8,7 +8,7 @@ namespace GAS.Editor
|
||||
using UnityEngine.UIElements;
|
||||
public abstract class TrackMarkBase:TrackItemBase
|
||||
{
|
||||
protected static TimelineAbilityAssetBase AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
protected static TimelineAbilityAsset AbilityAsset => AbilityTimelineEditorWindow.Instance.AbilityAsset;
|
||||
private static string MarkAssetGuid => "5a3b3360bcba29b4cac2875f518af19d";
|
||||
public float FrameUnitWidth { get;protected set; }
|
||||
public int StartFrameIndex=>markData.startFrame;
|
||||
|
@@ -6,7 +6,7 @@ namespace GAS.Runtime
|
||||
public abstract class AbstractAbility
|
||||
{
|
||||
public readonly string Name;
|
||||
public readonly AbilityAsset DataReference;
|
||||
public readonly IAbilityAsset DataReference;
|
||||
|
||||
// TODO : AbilityTask
|
||||
// public List<OngoingAbilityTask> OngoingAbilityTasks=new List<OngoingAbilityTask>();
|
||||
@@ -20,7 +20,7 @@ namespace GAS.Runtime
|
||||
|
||||
public GameplayEffect Cost { get; protected set; }
|
||||
|
||||
public AbstractAbility(AbilityAsset abilityAsset)
|
||||
public AbstractAbility(IAbilityAsset abilityAsset)
|
||||
{
|
||||
DataReference = abilityAsset;
|
||||
|
||||
@@ -64,13 +64,4 @@ namespace GAS.Runtime
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
public abstract class AbstractAbility<T> : AbstractAbility where T : AbilityAsset
|
||||
{
|
||||
public T AbilityAsset => DataReference as T;
|
||||
|
||||
protected AbstractAbility(T abilityAsset) : base(abilityAsset)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@@ -3,16 +3,21 @@ using UnityEngine.Profiling;
|
||||
|
||||
namespace GAS.Runtime
|
||||
{
|
||||
public abstract class TimelineAbilityT<T> : AbstractAbility<T> where T : TimelineAbilityAssetBase
|
||||
public class TimelineAbility : AbstractAbility
|
||||
{
|
||||
protected TimelineAbilityT(T abilityAsset) : base(abilityAsset)
|
||||
public TimelineAbility(IAbilityAsset abilityAsset) : base(abilityAsset)
|
||||
{
|
||||
}
|
||||
|
||||
public override AbilitySpec CreateSpec(AbilitySystemComponent owner)
|
||||
{
|
||||
return new TimelineAbilitySpec(this, owner);
|
||||
}
|
||||
}
|
||||
|
||||
public abstract class TimelineAbilitySpecT<AbilityT, AssetT> : AbilitySpec<AbilityT> where AbilityT : TimelineAbilityT<AssetT> where AssetT : TimelineAbilityAssetBase
|
||||
public class TimelineAbilitySpec : AbilitySpec
|
||||
{
|
||||
protected TimelineAbilityPlayer<AbilityT, AssetT> _player;
|
||||
private TimelineAbilityPlayer _player;
|
||||
|
||||
public int FrameCount => _player.FrameCount;
|
||||
public int FrameRate => _player.FrameRate;
|
||||
@@ -27,7 +32,7 @@ namespace GAS.Runtime
|
||||
/// </summary>
|
||||
public AbilitySystemComponent Target { get; private set; }
|
||||
|
||||
protected TimelineAbilitySpecT(AbilityT ability, AbilitySystemComponent owner) : base(ability, owner)
|
||||
public TimelineAbilitySpec(TimelineAbility ability, AbilitySystemComponent owner) : base(ability, owner)
|
||||
{
|
||||
_player = new(this);
|
||||
}
|
||||
@@ -42,9 +47,9 @@ namespace GAS.Runtime
|
||||
_player.Play();
|
||||
}
|
||||
|
||||
public virtual LFloat GetPlaySpeed()
|
||||
public LFloat GetPlaySpeed()
|
||||
{
|
||||
return Data.AbilityAsset.Speed;
|
||||
return _player.AbilityAsset.Speed;
|
||||
}
|
||||
|
||||
public override void CancelAbility()
|
||||
@@ -64,29 +69,5 @@ namespace GAS.Runtime
|
||||
Profiler.EndSample();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 这是一个最朴素的TimelineAbility实现, 如果要实现更复杂的TimelineAbility, 请用TimelineAbilityT和TimelineAbilitySpecT为基类
|
||||
/// </summary>
|
||||
public sealed class TimelineAbility : TimelineAbilityT<TimelineAbilityAsset>
|
||||
{
|
||||
public TimelineAbility(TimelineAbilityAsset abilityAsset) : base(abilityAsset)
|
||||
{
|
||||
}
|
||||
|
||||
public override AbilitySpec CreateSpec(AbilitySystemComponent owner)
|
||||
{
|
||||
return new TimelineAbilitySpec(this, owner);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 这是一个最朴素的TimelineAbilitySpec实现, 如果要实现更复杂的TimelineAbility, 请用TimelineAbilityT和TimelineAbilitySpecT为基类
|
||||
/// </summary>
|
||||
public sealed class TimelineAbilitySpec : TimelineAbilitySpecT<TimelineAbilityT<TimelineAbilityAsset>, TimelineAbilityAsset>
|
||||
{
|
||||
public TimelineAbilitySpec(TimelineAbilityT<TimelineAbilityAsset> ability, AbilitySystemComponent owner) : base(ability, owner)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -10,8 +10,9 @@ using UnityEngine.Serialization;
|
||||
|
||||
namespace GAS.Runtime
|
||||
{
|
||||
public abstract class TimelineAbilityAssetBase : AbilityAsset
|
||||
public abstract class TimelineAbilityAsset : AbilityAsset
|
||||
{
|
||||
|
||||
[TitleGroup("Data")]
|
||||
[HorizontalGroup("Data/H1", 1 / 3f)]
|
||||
[TabGroup("Data/H1/V1", "Timeline", SdfIconType.ClockHistory, TextColor = "#00FF00")]
|
||||
@@ -32,6 +33,28 @@ namespace GAS.Runtime
|
||||
$"调用\"GAS.Editor.AbilityTimelineEditorWindow\"类的静态方法ShowWindow(TimelineAbilityAsset asset)失败, 代码可能被重构了: {e}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public LFloat Speed => speed;
|
||||
public bool ManualEndAbility => manualEndAbility;
|
||||
|
||||
public int FrameCount => frameCount;// 能力结束时间
|
||||
|
||||
public List<DurationalCueTrackData> DurationalCues => durationalCues;
|
||||
|
||||
public List<InstantCueTrackData> InstantCues => instantCues;
|
||||
|
||||
public List<ReleaseGameplayEffectTrackData> ReleaseGameplayEffect => releaseGameplayEffect;
|
||||
|
||||
public List<BuffGameplayEffectTrackData> BuffGameplayEffects => buffGameplayEffects;
|
||||
|
||||
public List<TaskMarkEventTrackData> InstantTasks => instantTasks;
|
||||
|
||||
public List<TaskClipEventTrackData> OngoingTasks => ongoingTasks;
|
||||
|
||||
public List<PassiveGameplayEffectTrackData> PassiveGameplayEffects => passiveGameplayEffects;
|
||||
|
||||
public List<PassiveTaskClipEventTrackData> PassiveTasks => passiveTasks;
|
||||
|
||||
/// <summary>
|
||||
/// 播放速率, 常用于加速或减速播放(例如基于攻击速度的技能, 播放速率随攻击速度变化)
|
||||
@@ -40,40 +63,40 @@ namespace GAS.Runtime
|
||||
[LabelText(GASTextDefine.ABILITY_PLAY_RATE)]
|
||||
[LabelWidth(100)]
|
||||
[MinValue(0)]
|
||||
public LFloat Speed = 1;
|
||||
public LFloat speed = 1;
|
||||
|
||||
[TabGroup("Data/H1/V1", "Timeline")]
|
||||
[LabelText(GASTextDefine.ABILITY_MANUAL_ENDABILITY)]
|
||||
[LabelWidth(100)]
|
||||
[FormerlySerializedAs("manualEndAbility")]
|
||||
public bool ManualEndAbility;
|
||||
public bool manualEndAbility;
|
||||
|
||||
[HideInInspector]
|
||||
public int FrameCount; // 能力结束时间
|
||||
public int frameCount; // 能力结束时间
|
||||
|
||||
[HideInInspector]
|
||||
public List<DurationalCueTrackData> DurationalCues = new List<DurationalCueTrackData>();
|
||||
public List<DurationalCueTrackData> durationalCues = new List<DurationalCueTrackData>();
|
||||
|
||||
[HideInInspector]
|
||||
public List<InstantCueTrackData> InstantCues = new List<InstantCueTrackData>();
|
||||
public List<InstantCueTrackData> instantCues = new List<InstantCueTrackData>();
|
||||
|
||||
[HideInInspector]
|
||||
public List<ReleaseGameplayEffectTrackData> ReleaseGameplayEffect = new List<ReleaseGameplayEffectTrackData>();
|
||||
public List<ReleaseGameplayEffectTrackData> releaseGameplayEffect = new List<ReleaseGameplayEffectTrackData>();
|
||||
|
||||
[HideInInspector]
|
||||
public List<BuffGameplayEffectTrackData> BuffGameplayEffects = new List<BuffGameplayEffectTrackData>();
|
||||
public List<BuffGameplayEffectTrackData> buffGameplayEffects = new List<BuffGameplayEffectTrackData>();
|
||||
|
||||
[HideInInspector]
|
||||
public List<TaskMarkEventTrackData> InstantTasks = new List<TaskMarkEventTrackData>();
|
||||
public List<TaskMarkEventTrackData> instantTasks = new List<TaskMarkEventTrackData>();
|
||||
|
||||
[HideInInspector]
|
||||
public List<TaskClipEventTrackData> OngoingTasks = new List<TaskClipEventTrackData>();
|
||||
public List<TaskClipEventTrackData> ongoingTasks = new List<TaskClipEventTrackData>();
|
||||
|
||||
[HideInInspector]
|
||||
public List<PassiveGameplayEffectTrackData> PassiveGameplayEffects = new List<PassiveGameplayEffectTrackData>();
|
||||
public List<PassiveGameplayEffectTrackData> passiveGameplayEffects = new List<PassiveGameplayEffectTrackData>();
|
||||
|
||||
[HideInInspector]
|
||||
public List<PassiveTaskClipEventTrackData> PassiveTasks = new List<PassiveTaskClipEventTrackData>();
|
||||
public List<PassiveTaskClipEventTrackData> passiveTasks = new List<PassiveTaskClipEventTrackData>();
|
||||
|
||||
#if UNITY_EDITOR
|
||||
public void Save()
|
||||
@@ -83,19 +106,5 @@ namespace GAS.Runtime
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
public abstract class TimelineAbilityAssetT<T> : TimelineAbilityAssetBase where T : class
|
||||
{
|
||||
public sealed override Type AbilityType()
|
||||
{
|
||||
return typeof(T);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 这是一个最朴素的TimelineAbilityAsset实现, 如果要实现更复杂的TimelineAbilityAsset, 请用TimelineAbilityAssetBase或TimelineAbilityAssetT为基类
|
||||
/// </summary>
|
||||
public sealed class TimelineAbilityAsset : TimelineAbilityAssetT<TimelineAbility>
|
||||
{
|
||||
}
|
||||
|
||||
}
|
@@ -36,9 +36,9 @@ namespace GAS.Runtime
|
||||
public InstantAbilityTask task;
|
||||
}
|
||||
|
||||
public class TimelineAbilityPlayer<AbilityT, AssetT> where AssetT : TimelineAbilityAssetBase where AbilityT : TimelineAbilityT<AssetT>
|
||||
public class TimelineAbilityPlayer
|
||||
{
|
||||
private readonly TimelineAbilitySpecT<AbilityT, AssetT> _abilitySpec;
|
||||
private readonly TimelineAbilitySpec _abilitySpec;
|
||||
private readonly List<RuntimeBuffClip> _cacheBuffGameplayEffectTrack = new();
|
||||
|
||||
private readonly List<RuntimeDurationCueClip> _cacheDurationalCueTrack = new();
|
||||
@@ -57,7 +57,7 @@ namespace GAS.Runtime
|
||||
private int _currentFrame;
|
||||
private LFloat _playTotalTime;
|
||||
|
||||
public TimelineAbilityPlayer(TimelineAbilitySpecT<AbilityT, AssetT> abilitySpec)
|
||||
public TimelineAbilityPlayer(TimelineAbilitySpec abilitySpec)
|
||||
{
|
||||
_abilitySpec = abilitySpec;
|
||||
Cache();
|
||||
@@ -65,7 +65,7 @@ namespace GAS.Runtime
|
||||
|
||||
public bool IsPlaying { get; private set; }
|
||||
|
||||
public AssetT AbilityAsset => _abilitySpec.Data.AbilityAsset;
|
||||
public TimelineAbilityAsset AbilityAsset => _abilitySpec.Ability.DataReference as TimelineAbilityAsset;
|
||||
public int FrameCount => AbilityAsset.FrameCount;
|
||||
public int FrameRate => JexGasManager.FrameRate;
|
||||
|
||||
|
@@ -10,7 +10,7 @@ namespace GAS.Runtime
|
||||
{
|
||||
public List<BuffGameplayEffectClipEvent> clipEvents = new List<BuffGameplayEffectClipEvent>();
|
||||
|
||||
public override void AddToAbilityAsset(TimelineAbilityAssetBase abilityAsset)
|
||||
public override void AddToAbilityAsset(TimelineAbilityAsset abilityAsset)
|
||||
{
|
||||
base.AddToAbilityAsset(abilityAsset);
|
||||
abilityAsset.BuffGameplayEffects.Add(this);
|
||||
|
@@ -9,7 +9,7 @@ namespace GAS.Runtime
|
||||
{
|
||||
public List<DurationalCueClipEvent> clipEvents = new List<DurationalCueClipEvent>();
|
||||
|
||||
public override void AddToAbilityAsset(TimelineAbilityAssetBase abilityAsset)
|
||||
public override void AddToAbilityAsset(TimelineAbilityAsset abilityAsset)
|
||||
{
|
||||
base.AddToAbilityAsset(abilityAsset);
|
||||
abilityAsset.DurationalCues.Add(this);
|
||||
|
@@ -8,7 +8,7 @@ namespace GAS.Runtime
|
||||
{
|
||||
public List<InstantCueMarkEvent> markEvents = new List<InstantCueMarkEvent>();
|
||||
|
||||
public override void AddToAbilityAsset(TimelineAbilityAssetBase abilityAsset)
|
||||
public override void AddToAbilityAsset(TimelineAbilityAsset abilityAsset)
|
||||
{
|
||||
base.AddToAbilityAsset(abilityAsset);
|
||||
abilityAsset.InstantCues.Add(this);
|
||||
|
@@ -9,7 +9,7 @@ namespace GAS.Runtime
|
||||
{
|
||||
public List<PassiveGameplayEffectClipEvent> clipEvents = new List<PassiveGameplayEffectClipEvent>();
|
||||
|
||||
public override void AddToAbilityAsset(TimelineAbilityAssetBase abilityAsset)
|
||||
public override void AddToAbilityAsset(TimelineAbilityAsset abilityAsset)
|
||||
{
|
||||
base.AddToAbilityAsset(abilityAsset);
|
||||
abilityAsset.PassiveGameplayEffects.Add(this);
|
||||
|
@@ -8,7 +8,7 @@ namespace GAS.Runtime
|
||||
{
|
||||
public List<PassiveTaskClipEvent> clipEvents = new List<PassiveTaskClipEvent>();
|
||||
|
||||
public override void AddToAbilityAsset(TimelineAbilityAssetBase abilityAsset)
|
||||
public override void AddToAbilityAsset(TimelineAbilityAsset abilityAsset)
|
||||
{
|
||||
base.AddToAbilityAsset(abilityAsset);
|
||||
abilityAsset.PassiveTasks.Add(this);
|
||||
|
@@ -10,7 +10,7 @@ namespace GAS.Runtime
|
||||
{
|
||||
public List<ReleaseGameplayEffectMarkEvent> markEvents = new List<ReleaseGameplayEffectMarkEvent>();
|
||||
|
||||
public override void AddToAbilityAsset(TimelineAbilityAssetBase abilityAsset)
|
||||
public override void AddToAbilityAsset(TimelineAbilityAsset abilityAsset)
|
||||
{
|
||||
base.AddToAbilityAsset(abilityAsset);
|
||||
abilityAsset.ReleaseGameplayEffect.Add(this);
|
||||
|
@@ -10,7 +10,7 @@ namespace GAS.Runtime
|
||||
{
|
||||
public List<TaskClipEvent> clipEvents = new List<TaskClipEvent>();
|
||||
|
||||
public override void AddToAbilityAsset(TimelineAbilityAssetBase abilityAsset)
|
||||
public override void AddToAbilityAsset(TimelineAbilityAsset abilityAsset)
|
||||
{
|
||||
base.AddToAbilityAsset(abilityAsset);
|
||||
abilityAsset.OngoingTasks.Add(this);
|
||||
|
@@ -9,7 +9,7 @@ namespace GAS.Runtime
|
||||
{
|
||||
public List<TaskMarkEvent> markEvents = new List<TaskMarkEvent>();
|
||||
|
||||
public override void AddToAbilityAsset(TimelineAbilityAssetBase abilityAsset)
|
||||
public override void AddToAbilityAsset(TimelineAbilityAsset abilityAsset)
|
||||
{
|
||||
base.AddToAbilityAsset(abilityAsset);
|
||||
abilityAsset.InstantTasks.Add(this);
|
||||
|
@@ -7,7 +7,7 @@ namespace GAS.Runtime
|
||||
{
|
||||
public string trackName;
|
||||
|
||||
public virtual void AddToAbilityAsset(TimelineAbilityAssetBase abilityAsset)
|
||||
public virtual void AddToAbilityAsset(TimelineAbilityAsset abilityAsset)
|
||||
{
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user