mirror of
https://github.com/maxartz15/VertexAnimation.git
synced 2025-06-14 15:16:10 +02:00
Example1
Example1 Assets. Co-Authored-By: Neeto-rzo <68438932+Neeto-rzo@users.noreply.github.com>
This commit is contained in:
109
Samples~/Example1/Scripts/SampleAnimationSystemsAuthoring.cs
Normal file
109
Samples~/Example1/Scripts/SampleAnimationSystemsAuthoring.cs
Normal file
@ -0,0 +1,109 @@
|
||||
using Unity.Entities;
|
||||
using Unity.Mathematics;
|
||||
using TAO.VertexAnimation;
|
||||
|
||||
public class SampleAnimationSystemsAuthoring : UnityEngine.MonoBehaviour
|
||||
{
|
||||
[UnityEngine.SerializeField]
|
||||
private SampleSystem sampleSystem = SampleSystem.PlayRandomAnimation;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
switch (sampleSystem)
|
||||
{
|
||||
case SampleSystem.PlayRandomAnimation:
|
||||
{
|
||||
var system = World.DefaultGameObjectInjectionWorld.GetExistingSystem<PlayRandomAnimationSystem>();
|
||||
system.Enabled = true;
|
||||
}
|
||||
break;
|
||||
case SampleSystem.PlayAnimationByName:
|
||||
{
|
||||
var system = World.DefaultGameObjectInjectionWorld.GetExistingSystem<PlayAnimationByNameSystem>();
|
||||
system.Enabled = true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public enum SampleSystem
|
||||
{
|
||||
PlayRandomAnimation,
|
||||
PlayAnimationByName
|
||||
}
|
||||
}
|
||||
|
||||
// Example system to update animation parameters.
|
||||
[UpdateBefore(typeof(VA_AnimatorSystem))]
|
||||
public class PlayRandomAnimationSystem : SystemBase
|
||||
{
|
||||
protected override void OnCreate()
|
||||
{
|
||||
base.OnCreate();
|
||||
|
||||
Enabled = false;
|
||||
}
|
||||
|
||||
protected override void OnUpdate()
|
||||
{
|
||||
Random random = Random.CreateFromIndex((uint)UnityEngine.Time.time);
|
||||
float deltaTime = UnityEngine.Time.deltaTime;
|
||||
|
||||
Entities.ForEach((ref VA_AnimatorComponent ac) =>
|
||||
{
|
||||
// Get the animation lib data.
|
||||
ref VA_AnimationLibraryData animationsRef = ref ac.animationLibrary.Value;
|
||||
|
||||
// 'Play' the actual animation.
|
||||
ac.animationTime += deltaTime;
|
||||
|
||||
if (ac.animationTime > animationsRef.animations[ac.animationIndex].duration)
|
||||
{
|
||||
// Set time. Using the difference to smoothen out animations when looping.
|
||||
ac.animationTime -= animationsRef.animations[ac.animationIndex].duration;
|
||||
|
||||
// New random animation.
|
||||
ac.animationIndex = random.NextInt(0, animationsRef.animations.Length);
|
||||
}
|
||||
|
||||
}).ScheduleParallel();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Example system to set the animation by name.
|
||||
[UpdateBefore(typeof(VA_AnimatorSystem))]
|
||||
public class PlayAnimationByNameSystem : SystemBase
|
||||
{
|
||||
protected override void OnCreate()
|
||||
{
|
||||
base.OnCreate();
|
||||
|
||||
Enabled = false;
|
||||
}
|
||||
|
||||
protected override void OnUpdate()
|
||||
{
|
||||
float deltaTime = UnityEngine.Time.deltaTime;
|
||||
|
||||
Entities.ForEach((Entity entity, ref VA_AnimatorComponent ac) =>
|
||||
{
|
||||
// Get the animation lib data.
|
||||
ref VA_AnimationLibraryData animationsRef = ref ac.animationLibrary.Value;
|
||||
|
||||
// Set the animation index on the AnimatorComponent to play this animation.
|
||||
ac.animationIndex = VA_AnimationLibraryUtils.GetAnimation(ref animationsRef, "Character1Shoot");
|
||||
|
||||
// 'Play' the actual animation.
|
||||
ac.animationTime += deltaTime;
|
||||
|
||||
if (ac.animationTime > animationsRef.animations[ac.animationIndex].duration)
|
||||
{
|
||||
// Set time. Using the difference to smoothen out animations when looping.
|
||||
ac.animationTime -= animationsRef.animations[ac.animationIndex].duration;
|
||||
}
|
||||
}).ScheduleParallel();
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 32426091bb6243f40ac8e44310903ba6
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user