-
Notifications
You must be signed in to change notification settings - Fork 174
/
AlembicShotPlayable.cs
50 lines (43 loc) · 1.64 KB
/
AlembicShotPlayable.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#if UNITY_2017_1_OR_NEWER
using System;
using UnityEngine.Playables;
namespace UTJ.Alembic
{
public class AlembicShotPlayable : PlayableBehaviour
{
AlembicStreamPlayer m_StreamPlayer;
public AlembicStreamPlayer streamPlayer
{
get
{
return m_StreamPlayer;
}
set
{
m_StreamPlayer = value;
if( m_StreamPlayer != null )
m_StreamPlayer.m_ManualUpdateMode = true;
}
}
public float m_StartTimeOffset;
public float m_EndTimeClipOff;
public float m_TimeScale;
public AlembicPlaybackSettings.CycleType m_Cycle = AlembicPlaybackSettings.CycleType.Hold;
public override void ProcessFrame(Playable playable, FrameData info, object playerData)
{
base.ProcessFrame(playable, info, playerData);
if (streamPlayer == null)
return;
streamPlayer.m_PlaybackSettings.m_startTime = 0f;
streamPlayer.m_PlaybackSettings.m_cycle = m_Cycle;
streamPlayer.m_PlaybackSettings.m_timeOffset = (float)m_StartTimeOffset;
streamPlayer.m_PlaybackSettings.m_endTime = (float)streamPlayer.m_PlaybackSettings.m_duration - m_EndTimeClipOff;
streamPlayer.m_PlaybackSettings.m_timeScale = (float)m_TimeScale;
streamPlayer.m_PlaybackSettings.m_Time = (float)playable.GetTime();
streamPlayer.m_PlaybackSettings.m_OverrideTime = true;
streamPlayer.m_PlaybackSettings.m_preserveStartTime = true;
streamPlayer.ManualUpdate();
}
}
}
#endif