From 418b3029d34a0ed8ff22b942c5dc1dd52d285937 Mon Sep 17 00:00:00 2001 From: cd <-> Date: Thu, 15 Jun 2023 21:46:29 +0800 Subject: [PATCH] =?UTF-8?q?timeline=20clip=20=E8=87=AA=E7=94=B1=E8=BD=AC?= =?UTF-8?q?=E5=90=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Generated/ArticyEditorSettings.asset | 2 +- .../Timeline/TimelineClip/ClipInputControl.cs | 22 ++++ .../TimelineClip/ClipInputControl.cs.meta | 3 + .../TimelineClip/TimelineClipPoolManager.cs | 1 + .../skill_hero01_fist_skill0101.playable | 111 +++++++++++++++++- .../Assets/TimelineCustom/InputControl.meta | 8 ++ .../InputControl/InputControlBehaviour.cs | 14 +++ .../InputControlBehaviour.cs.meta | 11 ++ .../InputControl/InputControlClip.cs | 22 ++++ .../InputControl/InputControlClip.cs.meta | 11 ++ .../InputControlMixerBehaviour.cs | 23 ++++ .../InputControlMixerBehaviour.cs.meta | 11 ++ .../InputControl/InputControlTrack.cs | 13 ++ .../InputControl/InputControlTrack.cs.meta | 11 ++ 14 files changed, 260 insertions(+), 3 deletions(-) create mode 100644 client/Assets/Game/Scripts/Timeline/TimelineClip/ClipInputControl.cs create mode 100644 client/Assets/Game/Scripts/Timeline/TimelineClip/ClipInputControl.cs.meta create mode 100644 client/Assets/TimelineCustom/InputControl.meta create mode 100644 client/Assets/TimelineCustom/InputControl/InputControlBehaviour.cs create mode 100644 client/Assets/TimelineCustom/InputControl/InputControlBehaviour.cs.meta create mode 100644 client/Assets/TimelineCustom/InputControl/InputControlClip.cs create mode 100644 client/Assets/TimelineCustom/InputControl/InputControlClip.cs.meta create mode 100644 client/Assets/TimelineCustom/InputControl/InputControlMixerBehaviour.cs create mode 100644 client/Assets/TimelineCustom/InputControl/InputControlMixerBehaviour.cs.meta create mode 100644 client/Assets/TimelineCustom/InputControl/InputControlTrack.cs create mode 100644 client/Assets/TimelineCustom/InputControl/InputControlTrack.cs.meta diff --git a/client/Assets/ArticyImporter/Content/Generated/ArticyEditorSettings.asset b/client/Assets/ArticyImporter/Content/Generated/ArticyEditorSettings.asset index 9966bd1..dba1852 100644 --- a/client/Assets/ArticyImporter/Content/Generated/ArticyEditorSettings.asset +++ b/client/Assets/ArticyImporter/Content/Generated/ArticyEditorSettings.asset @@ -21,6 +21,6 @@ MonoBehaviour: mLastUsedPackagesHash: 1177269412 mLastUsedPackagesCount: 1 mLastBuildCode: 1 - mLastEditorStartupTimeTicks: 638222589423104105 + mLastEditorStartupTimeTicks: 638222589433305598 mNewVersionAvailable: 1 mLastAttachedFlowPlayerValue: 0 diff --git a/client/Assets/Game/Scripts/Timeline/TimelineClip/ClipInputControl.cs b/client/Assets/Game/Scripts/Timeline/TimelineClip/ClipInputControl.cs new file mode 100644 index 0000000..2556280 --- /dev/null +++ b/client/Assets/Game/Scripts/Timeline/TimelineClip/ClipInputControl.cs @@ -0,0 +1,22 @@ +namespace Game +{ + public class ClipInputControl : TimelineClipBase + { + private InputControlClip _mRealAsset; + + public override void OnEnter() + { + _mRealAsset = Asset as InputControlClip; + Owner.move.IsFreeTurn = _mRealAsset.template.IsFreeTurn; + } + + public override void OnStay() + { + } + + public override void OnLeave() + { + Owner.move.IsFreeTurn = !_mRealAsset.template.IsFreeTurn; + } + } +} \ No newline at end of file diff --git a/client/Assets/Game/Scripts/Timeline/TimelineClip/ClipInputControl.cs.meta b/client/Assets/Game/Scripts/Timeline/TimelineClip/ClipInputControl.cs.meta new file mode 100644 index 0000000..2b688ac --- /dev/null +++ b/client/Assets/Game/Scripts/Timeline/TimelineClip/ClipInputControl.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 859eb3221c13438eb6b3ae1ca0f32c68 +timeCreated: 1686836094 \ No newline at end of file diff --git a/client/Assets/Game/Scripts/Timeline/TimelineClip/TimelineClipPoolManager.cs b/client/Assets/Game/Scripts/Timeline/TimelineClip/TimelineClipPoolManager.cs index 741ce54..abd12e9 100644 --- a/client/Assets/Game/Scripts/Timeline/TimelineClip/TimelineClipPoolManager.cs +++ b/client/Assets/Game/Scripts/Timeline/TimelineClip/TimelineClipPoolManager.cs @@ -30,6 +30,7 @@ namespace Game Register(); Register(); Register(); + Register(); } private void Register() where T2 : TimelineClipBase, new() diff --git a/client/Assets/Resources/Timeline/skill_hero01_fist_skill0101.playable b/client/Assets/Resources/Timeline/skill_hero01_fist_skill0101.playable index 0eac784..2c406ed 100644 --- a/client/Assets/Resources/Timeline/skill_hero01_fist_skill0101.playable +++ b/client/Assets/Resources/Timeline/skill_hero01_fist_skill0101.playable @@ -1586,6 +1586,98 @@ MonoBehaviour: m_EditorClassIdentifier: template: moveSpeedScale: -0.5 +--- !u!114 &-536719081228147351 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c0af86dcc0103db4eada768bc0a1fa8e, type: 3} + m_Name: Input Control Track + m_EditorClassIdentifier: + m_Version: 3 + m_AnimClip: {fileID: 0} + m_Locked: 0 + m_Muted: 0 + m_CustomPlayableFullTypename: + m_Curves: {fileID: 0} + m_Parent: {fileID: 11400000} + m_Children: [] + m_Clips: + - m_Version: 1 + m_Start: 0.2 + m_ClipIn: 0 + m_Asset: {fileID: 6252038257660576424} + m_Duration: 0.19999999999999998 + m_TimeScale: 1 + m_ParentTrack: {fileID: -536719081228147351} + m_EaseInDuration: 0 + m_EaseOutDuration: 0 + m_BlendInDuration: 0 + m_BlendOutDuration: 0 + m_MixInCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_MixOutCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_BlendInCurveMode: 0 + m_BlendOutCurveMode: 0 + m_ExposedParameterNames: [] + m_AnimationCurves: {fileID: 0} + m_Recordable: 0 + m_PostExtrapolationMode: 0 + m_PreExtrapolationMode: 0 + m_PostExtrapolationTime: 0 + m_PreExtrapolationTime: 0 + m_DisplayName: InputControlClip + m_Markers: + m_Objects: [] --- !u!114 &-535530294913848340 MonoBehaviour: m_ObjectHideFlags: 1 @@ -1898,6 +1990,7 @@ MonoBehaviour: - {fileID: -505701961135431839} - {fileID: -8593017252192611433} - {fileID: 5555280687335423580} + - {fileID: -536719081228147351} m_FixedDuration: 0.9 m_EditorSettings: m_Framerate: 60 @@ -2203,10 +2296,10 @@ MonoBehaviour: m_Children: [] m_Clips: - m_Version: 1 - m_Start: 0.4 + m_Start: 0.43333333333333335 m_ClipIn: 0 m_Asset: {fileID: 7000958700220519553} - m_Duration: 0.2666666666666666 + m_Duration: 0.43333333333333335 m_TimeScale: 1 m_ParentTrack: {fileID: 5555280687335423580} m_EaseInDuration: 0 @@ -2381,6 +2474,20 @@ MonoBehaviour: jumpCancel: 1 groundCancel: 0 skillCancel: 1 +--- !u!114 &6252038257660576424 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cf3a0ded57877e4408206f1ebe220ada, type: 3} + m_Name: InputControlClip + m_EditorClassIdentifier: + template: + IsFreeTurn: 1 --- !u!114 &6393506803891717977 MonoBehaviour: m_ObjectHideFlags: 1 diff --git a/client/Assets/TimelineCustom/InputControl.meta b/client/Assets/TimelineCustom/InputControl.meta new file mode 100644 index 0000000..d27858e --- /dev/null +++ b/client/Assets/TimelineCustom/InputControl.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 51143b6b71daf464db8991252d57247f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client/Assets/TimelineCustom/InputControl/InputControlBehaviour.cs b/client/Assets/TimelineCustom/InputControl/InputControlBehaviour.cs new file mode 100644 index 0000000..a13cbe1 --- /dev/null +++ b/client/Assets/TimelineCustom/InputControl/InputControlBehaviour.cs @@ -0,0 +1,14 @@ +using System; +using UnityEngine; +using UnityEngine.Playables; +using UnityEngine.Timeline; + +[Serializable] +public class InputControlBehaviour : PlayableBehaviour +{ + [Rename("受否自由转向")] public bool IsFreeTurn; + + public override void OnPlayableCreate(Playable playable) + { + } +} \ No newline at end of file diff --git a/client/Assets/TimelineCustom/InputControl/InputControlBehaviour.cs.meta b/client/Assets/TimelineCustom/InputControl/InputControlBehaviour.cs.meta new file mode 100644 index 0000000..98dc0c2 --- /dev/null +++ b/client/Assets/TimelineCustom/InputControl/InputControlBehaviour.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 838c2439f8663114995bda1c0f8d8bae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client/Assets/TimelineCustom/InputControl/InputControlClip.cs b/client/Assets/TimelineCustom/InputControl/InputControlClip.cs new file mode 100644 index 0000000..f3e3747 --- /dev/null +++ b/client/Assets/TimelineCustom/InputControl/InputControlClip.cs @@ -0,0 +1,22 @@ +using System; +using UnityEngine; +using UnityEngine.Playables; +using UnityEngine.Timeline; + +[Serializable] +public class InputControlClip : PlayableAsset, ITimelineClipAsset +{ + public InputControlBehaviour template = new InputControlBehaviour (); + + public ClipCaps clipCaps + { + get { return ClipCaps.None; } + } + + public override Playable CreatePlayable (PlayableGraph graph, GameObject owner) + { + var playable = ScriptPlayable.Create (graph, template); + InputControlBehaviour clone = playable.GetBehaviour (); + return playable; + } +} diff --git a/client/Assets/TimelineCustom/InputControl/InputControlClip.cs.meta b/client/Assets/TimelineCustom/InputControl/InputControlClip.cs.meta new file mode 100644 index 0000000..f9bf7cb --- /dev/null +++ b/client/Assets/TimelineCustom/InputControl/InputControlClip.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cf3a0ded57877e4408206f1ebe220ada +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client/Assets/TimelineCustom/InputControl/InputControlMixerBehaviour.cs b/client/Assets/TimelineCustom/InputControl/InputControlMixerBehaviour.cs new file mode 100644 index 0000000..c9e460a --- /dev/null +++ b/client/Assets/TimelineCustom/InputControl/InputControlMixerBehaviour.cs @@ -0,0 +1,23 @@ +using System; +using UnityEngine; +using UnityEngine.Playables; +using UnityEngine.Timeline; + +public class InputControlMixerBehaviour : PlayableBehaviour +{ + // NOTE: This function is called at runtime and edit time. Keep that in mind when setting the values of properties. + public override void ProcessFrame(Playable playable, FrameData info, object playerData) + { + int inputCount = playable.GetInputCount (); + + for (int i = 0; i < inputCount; i++) + { + float inputWeight = playable.GetInputWeight(i); + ScriptPlayable inputPlayable = (ScriptPlayable)playable.GetInput(i); + InputControlBehaviour input = inputPlayable.GetBehaviour (); + + // Use the above variables to process each frame of this playable. + + } + } +} diff --git a/client/Assets/TimelineCustom/InputControl/InputControlMixerBehaviour.cs.meta b/client/Assets/TimelineCustom/InputControl/InputControlMixerBehaviour.cs.meta new file mode 100644 index 0000000..662f071 --- /dev/null +++ b/client/Assets/TimelineCustom/InputControl/InputControlMixerBehaviour.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b953d6e8b7295ea44ad73543757b04c4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/client/Assets/TimelineCustom/InputControl/InputControlTrack.cs b/client/Assets/TimelineCustom/InputControl/InputControlTrack.cs new file mode 100644 index 0000000..81161f3 --- /dev/null +++ b/client/Assets/TimelineCustom/InputControl/InputControlTrack.cs @@ -0,0 +1,13 @@ +using UnityEngine; +using UnityEngine.Playables; +using UnityEngine.Timeline; + +[TrackColor(0.855f, 0.8623f, 0.87f)] +[TrackClipType(typeof(InputControlClip))] +public class InputControlTrack : TrackAsset +{ + public override Playable CreateTrackMixer(PlayableGraph graph, GameObject go, int inputCount) + { + return ScriptPlayable.Create (graph, inputCount); + } +} diff --git a/client/Assets/TimelineCustom/InputControl/InputControlTrack.cs.meta b/client/Assets/TimelineCustom/InputControl/InputControlTrack.cs.meta new file mode 100644 index 0000000..3fdc146 --- /dev/null +++ b/client/Assets/TimelineCustom/InputControl/InputControlTrack.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c0af86dcc0103db4eada768bc0a1fa8e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: