Falco Engine 3.9.0.1 (beta)
Animation.cs
Go to the documentation of this file.
1
2using System;
3using System.Runtime.CompilerServices;
4using System.Runtime.InteropServices;
5
6namespace FalcoEngine
7{
8 public class Animation : Component
9 {
10 internal Animation() { }
11
12 /*----------- PUBLIC ------------*/
13
14 public delegate void AnimationEvent(Animation sender, string animName);
15 public event AnimationEvent onEnded;
16
20 public bool isPlaying { [MethodImpl(MethodImplOptions.InternalCall)] get; }
21
25 public int numAnimationClips { [MethodImpl(MethodImplOptions.InternalCall)] get; }
26
31 public void Play(string name)
32 {
33 INTERNAL_play(name);
34 }
35
41 public void CrossFade(string name, float duration = 1.0f)
42 {
43 INTERNAL_crossFade(name, duration);
44 }
45
49 public void Stop()
50 {
51 INTERNAL_stop();
52 }
53
59 public void SetLoop(string name, bool loop)
60 {
61 INTERNAL_setLoop(name, loop);
62 }
63
69 public bool GetLoop(string name)
70 {
71 return INTERNAL_getLoop(name);
72 }
73
79 public bool IsPlaying(string name)
80 {
81 return INTERNAL_isPlaying(name);
82 }
83
90 {
91 INTERNAL_getAnimationClipInfo(index, out AnimationClipInfo info);
92 return info;
93 }
94
95 private void CallOnEnded(Animation sender, string animName)
96 {
97 onEnded?.Invoke(sender, animName);
98 }
99
100 /*----------- INTERNAL CALLS ------------*/
101
102 [MethodImpl(MethodImplOptions.InternalCall)]
103 private extern void INTERNAL_play(string name);
104
105 [MethodImpl(MethodImplOptions.InternalCall)]
106 private extern void INTERNAL_crossFade(string name, float duration);
107
108 [MethodImpl(MethodImplOptions.InternalCall)]
109 private extern void INTERNAL_stop();
110
111 [MethodImpl(MethodImplOptions.InternalCall)]
112 private extern void INTERNAL_setLoop(string name, bool loop);
113
114 [MethodImpl(MethodImplOptions.InternalCall)]
115 private extern bool INTERNAL_getLoop(string name);
116
117 [MethodImpl(MethodImplOptions.InternalCall)]
118 private extern bool INTERNAL_isPlaying(string name);
119
120 [MethodImpl(MethodImplOptions.InternalCall)]
121 private extern void INTERNAL_getAnimationClipInfo(int index, out AnimationClipInfo info);
122 }
123}
bool IsPlaying(string name)
Returns if the animation clip is playing
Definition: Animation.cs:79
delegate void AnimationEvent(Animation sender, string animName)
AnimationEvent onEnded
Definition: Animation.cs:15
void SetLoop(string name, bool loop)
Set animation clip is looping by name
Definition: Animation.cs:59
AnimationClipInfo GetAnimationClipInfo(int index)
Returns animation clip info by its name
Definition: Animation.cs:89
void CrossFade(string name, float duration=1.0f)
Play animation clip by name with smooth transition between this and previous clips
Definition: Animation.cs:41
int numAnimationClips
Get animation clips count
Definition: Animation.cs:25
bool isPlaying
Returns if any of animation clips attached to this component is playing
Definition: Animation.cs:20
void Stop()
Stop playing
Definition: Animation.cs:49
void Play(string name)
Play animation clip by name
Definition: Animation.cs:31
bool GetLoop(string name)
Get animation clip is looping by name
Definition: Animation.cs:69