Unity-jump-proj

This commit is contained in:
2024-09-09 11:07:16 +03:00
parent 2c29906bbf
commit fd96a5627d
13707 changed files with 866380 additions and 0 deletions

View File

@ -0,0 +1,71 @@
using UnityEngine.Playables;
namespace UnityEngine.Timeline
{
class ActivationMixerPlayable : PlayableBehaviour
{
ActivationTrack.PostPlaybackState m_PostPlaybackState;
bool m_BoundGameObjectInitialStateIsActive;
private GameObject m_BoundGameObject;
public static ScriptPlayable<ActivationMixerPlayable> Create(PlayableGraph graph, int inputCount)
{
return ScriptPlayable<ActivationMixerPlayable>.Create(graph, inputCount);
}
public ActivationTrack.PostPlaybackState postPlaybackState
{
get { return m_PostPlaybackState; }
set { m_PostPlaybackState = value; }
}
public override void OnPlayableDestroy(Playable playable)
{
if (m_BoundGameObject == null)
return;
switch (m_PostPlaybackState)
{
case ActivationTrack.PostPlaybackState.Active:
m_BoundGameObject.SetActive(true);
break;
case ActivationTrack.PostPlaybackState.Inactive:
m_BoundGameObject.SetActive(false);
break;
case ActivationTrack.PostPlaybackState.Revert:
m_BoundGameObject.SetActive(m_BoundGameObjectInitialStateIsActive);
break;
case ActivationTrack.PostPlaybackState.LeaveAsIs:
default:
break;
}
}
public override void ProcessFrame(Playable playable, FrameData info, object playerData)
{
if (m_BoundGameObject == null)
{
m_BoundGameObject = playerData as GameObject;
m_BoundGameObjectInitialStateIsActive = m_BoundGameObject != null && m_BoundGameObject.activeSelf;
}
if (m_BoundGameObject == null)
return;
int inputCount = playable.GetInputCount();
bool hasInput = false;
for (int i = 0; i < inputCount; i++)
{
if (playable.GetInputWeight(i) > 0)
{
hasInput = true;
break;
}
}
m_BoundGameObject.SetActive(hasInput);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e165a99d845c10e4ea0f546e542e8684
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,29 @@
#if UNITY_EDITOR
using System.ComponentModel;
#endif
using UnityEngine.Playables;
namespace UnityEngine.Timeline
{
/// <summary>
/// Playable Asset class for Activation Tracks
/// </summary>
#if UNITY_EDITOR
[DisplayName("Activation Clip")]
#endif
class ActivationPlayableAsset : PlayableAsset, ITimelineClipAsset
{
/// <summary>
/// Returns a description of the features supported by activation clips
/// </summary>
public ClipCaps clipCaps { get { return ClipCaps.None; } }
/// <summary>
/// Overrides PlayableAsset.CreatePlayable() to inject needed Playables for an activation asset
/// </summary>
public override Playable CreatePlayable(PlayableGraph graph, GameObject go)
{
return Playable.Create(graph);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: fde0d25a170598d46a0b9dc16b4527a5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,94 @@
using System;
using UnityEngine.Playables;
namespace UnityEngine.Timeline
{
/// <summary>
/// Track that can be used to control the active state of a GameObject.
/// </summary>
[Serializable]
[TrackClipType(typeof(ActivationPlayableAsset))]
[TrackBindingType(typeof(GameObject))]
[ExcludeFromPreset]
[TimelineHelpURL(typeof(ActivationTrack))]
public class ActivationTrack : TrackAsset
{
[SerializeField]
PostPlaybackState m_PostPlaybackState = PostPlaybackState.LeaveAsIs;
ActivationMixerPlayable m_ActivationMixer;
/// <summary>
/// Specify what state to leave the GameObject in after the Timeline has finished playing.
/// </summary>
public enum PostPlaybackState
{
/// <summary>
/// Set the GameObject to active.
/// </summary>
Active,
/// <summary>
/// Set the GameObject to Inactive.
/// </summary>
Inactive,
/// <summary>
/// Revert the GameObject to the state in was in before the Timeline was playing.
/// </summary>
Revert,
/// <summary>
/// Leave the GameObject in the state it was when the Timeline was stopped.
/// </summary>
LeaveAsIs
}
internal override bool CanCompileClips()
{
return !hasClips || base.CanCompileClips();
}
/// <summary>
/// Specifies what state to leave the GameObject in after the Timeline has finished playing.
/// </summary>
public PostPlaybackState postPlaybackState
{
get { return m_PostPlaybackState; }
set { m_PostPlaybackState = value; UpdateTrackMode(); }
}
/// <inheritdoc/>
public override Playable CreateTrackMixer(PlayableGraph graph, GameObject go, int inputCount)
{
var mixer = ActivationMixerPlayable.Create(graph, inputCount);
m_ActivationMixer = mixer.GetBehaviour();
UpdateTrackMode();
return mixer;
}
internal void UpdateTrackMode()
{
if (m_ActivationMixer != null)
m_ActivationMixer.postPlaybackState = m_PostPlaybackState;
}
/// <inheritdoc/>
public override void GatherProperties(PlayableDirector director, IPropertyCollector driver)
{
var gameObject = GetGameObjectBinding(director);
if (gameObject != null)
{
driver.AddFromName(gameObject, "m_IsActive");
}
}
/// <inheritdoc/>
protected override void OnCreateClip(TimelineClip clip)
{
clip.displayName = "Active";
base.OnCreateClip(clip);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 21bf7f712d84d26478ebe6a299f21738
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: