From b9e3b483969ccd3d6f797a9dd9dcd34f2fb6d8b9 Mon Sep 17 00:00:00 2001 From: jasonm-unity Date: Tue, 22 Aug 2017 11:33:06 -0400 Subject: [PATCH] fixed 1frame lag when playing alembic from timeline/playable --- .../Scripts/Importer/AlembicStreamPlayer.cs | 9 ++++++++- .../Scripts/Timeline/AlembicShotPlayable.cs | 19 +++++++++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/AlembicImporter/Assets/UTJ/Alembic/Scripts/Importer/AlembicStreamPlayer.cs b/AlembicImporter/Assets/UTJ/Alembic/Scripts/Importer/AlembicStreamPlayer.cs index a3b7ef16b..3bd076f84 100644 --- a/AlembicImporter/Assets/UTJ/Alembic/Scripts/Importer/AlembicStreamPlayer.cs +++ b/AlembicImporter/Assets/UTJ/Alembic/Scripts/Importer/AlembicStreamPlayer.cs @@ -6,6 +6,7 @@ namespace UTJ.Alembic public class AlembicStreamPlayer : MonoBehaviour { private AlembicStream _stream = null; + public bool m_ManualUpdateMode = false; [HideInInspector] public AlembicStream Stream @@ -49,9 +50,15 @@ void OnEnable() } + public void ManualUpdate() + { + if (Stream != null && m_ManualUpdateMode == true) + Stream.ProcessUpdateEvent(); + } + public void Update() { - if (Stream != null) + if (Stream != null && m_ManualUpdateMode == false) Stream.ProcessUpdateEvent(); } diff --git a/AlembicImporter/Assets/UTJ/Alembic/Scripts/Timeline/AlembicShotPlayable.cs b/AlembicImporter/Assets/UTJ/Alembic/Scripts/Timeline/AlembicShotPlayable.cs index db7e4c728..8215009c2 100644 --- a/AlembicImporter/Assets/UTJ/Alembic/Scripts/Timeline/AlembicShotPlayable.cs +++ b/AlembicImporter/Assets/UTJ/Alembic/Scripts/Timeline/AlembicShotPlayable.cs @@ -7,9 +7,19 @@ namespace UTJ.Alembic { public class AlembicShotPlayable : PlayableBehaviour { - public AlembicStreamPlayer streamPlayer { get; set; } - - public float m_StartTimeOffsetsdfs; + AlembicStreamPlayer m_StreamPlayer; + public AlembicStreamPlayer streamPlayer + { + get + { + return m_StreamPlayer; + } + set + { + m_StreamPlayer = value; + m_StreamPlayer.m_ManualUpdateMode = true; + } + } public float m_StartTimeOffset; public float m_EndTimeClipOff; @@ -22,7 +32,6 @@ public override void ProcessFrame(Playable playable, FrameData info, object play 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; @@ -31,6 +40,8 @@ public override void ProcessFrame(Playable playable, FrameData info, object play streamPlayer.m_PlaybackSettings.m_Time = (float)playable.GetTime(); streamPlayer.m_PlaybackSettings.m_OverrideTime = true; streamPlayer.m_PlaybackSettings.m_preserveStartTime = true; + + streamPlayer.ManualUpdate(); } } }