public void PlayAnim(UnitAnim unitAnim, float frameRateModModifier, OnAnimComplete onAnimComplete, OnAnimTrigger onAnimTrigger, OnAnimInterrupted onAnimInterrupted) { if (this.onAnimInterrupted != null) { OnAnimInterrupted tmpAnimInterrupted = this.onAnimInterrupted; this.onAnimInterrupted = null; tmpAnimInterrupted(lastUnitAnim, unitAnim, alreadyLooped); if (OnAnyAnimInterrupted != null) { OnAnyAnimInterrupted(lastUnitAnim, unitAnim, alreadyLooped); } } this.onAnimComplete = onAnimComplete; this.onAnimTrigger = onAnimTrigger; this.onAnimInterrupted = onAnimInterrupted; lastUnitAnim = unitAnim; alreadyLooped = false; // Dynamic anim V_Skeleton_Updater newSkeletonUpdater = new V_Skeleton_Updater(mesh, unitAnim.GetAnims(), frameRateMod, frameRateModModifier, onAnimTrigger, OnAnyAnimTrigger); newSkeletonUpdater.TestFirstFrameTrigger(); skeletonUpdater = newSkeletonUpdater; if (OnAnyPlayAnim != null) { OnAnyPlayAnim(unitAnim); } }
/*public void SetFrameRateMod(float frameRateMod) { * this.frameRateMod = frameRateMod; * * if (anims != null) { * foreach (V_Skeleton_Anim anim in anims) { * anim.SetFrameRateMod(frameRateMod); * } * } * } * public void SetFrameRateMod_DontStack(float frameRateMod) { * this.frameRateMod = frameRateMod; * * if (anims != null) { * foreach (V_Skeleton_Anim anim in anims) { * anim.SetFrameRateMod_DontStack(frameRateMod); * } * } * }*/ public bool ClearOnAnimInterruptedIfMatches(OnAnimInterrupted onAnimInterrupted) { if (this.onAnimInterrupted == onAnimInterrupted) { // Matches, clear! this.onAnimInterrupted = null; return(true); } return(false); }
public void PlayAnimContinueFrames(UnitAnim unitAnim, float frameRateModModifier, OnAnimComplete onAnimComplete, OnAnimTrigger onAnimTrigger, OnAnimInterrupted onAnimInterrupted) { //Play new anim starting from same frames if (this.onAnimInterrupted != null) { OnAnimInterrupted tmpAnimInterrupted = this.onAnimInterrupted; this.onAnimInterrupted = null; tmpAnimInterrupted(lastUnitAnim, unitAnim, alreadyLooped); if (OnAnyAnimInterrupted != null) { OnAnyAnimInterrupted(lastUnitAnim, unitAnim, alreadyLooped); } } this.onAnimComplete = onAnimComplete; this.onAnimTrigger = onAnimTrigger; this.onAnimInterrupted = onAnimInterrupted; lastUnitAnim = unitAnim; alreadyLooped = false; // Dynamic anim if (skeletonUpdater is V_Skeleton_Updater) { // Continuing from normal updater V_Skeleton_Updater newSkeletonUpdater = new V_Skeleton_Updater(mesh, unitAnim.GetAnims(), frameRateMod, frameRateModModifier, onAnimTrigger, OnAnyAnimTrigger); newSkeletonUpdater.SetFramesToSame((skeletonUpdater as V_Skeleton_Updater).GetAnims()); skeletonUpdater = newSkeletonUpdater; } else { // Previous was cached updater, ignore continue frames skeletonUpdater = new V_Skeleton_Updater(mesh, unitAnim.GetAnims(), frameRateMod, frameRateModModifier, onAnimTrigger, OnAnyAnimTrigger); } }