예제 #1
0
        public V_Skeleton_Updater(Mesh mesh, V_Skeleton_Anim[] loadAnims, float frameRateMod, float frameRateModModifier, V_UnitSkeleton.OnAnimTrigger onAnimTrigger, V_UnitSkeleton.OnAnimTrigger OnAnyAnimTrigger, int id = -1)
        {
            this.mesh = mesh;
            this.id   = id;

            List <V_Skeleton_Anim> tmpAnims = new List <V_Skeleton_Anim>();

            hasVariableSortingOrder = false;
            for (int i = 0; i < loadAnims.Length; i++)
            {
                V_Skeleton_Anim clone = loadAnims[i].Clone();
                if (!hasVariableSortingOrder && clone.HasVariableSortingOrder())
                {
                    hasVariableSortingOrder = true;
                }
                clone.SetFrameRateMod(frameRateMod * frameRateModModifier);
                clone.onAnimTrigger  = onAnimTrigger;
                clone.onAnimTrigger += OnAnyAnimTrigger;
                tmpAnims.Add(clone);
            }
            bodyPartNameAnimDic = new Dictionary <string, V_Skeleton_Anim>();
            anims = tmpAnims.ToArray();
            foreach (V_Skeleton_Anim anim in anims)
            {
                bodyPartNameAnimDic[anim.bodyPart.customName] = anim;
            }
            animsLength = anims.Length;


            verticesArr  = new Vector3[animsLength * 4];
            uvsArr       = new Vector2[animsLength * 4];
            trianglesArr = new int[animsLength * 6];


            Play();
        }
예제 #2
0
        public void PlayAnim(UnitAnimType animType, int angle, float frameRateMod, V_UnitSkeleton.OnAnimComplete onAnimComplete, V_UnitSkeleton.OnAnimTrigger onAnimTrigger, V_UnitSkeleton.OnAnimInterrupted onAnimInterrupted)
        {
            // Ignores if same animType, same angle and same frameRateMod

            // 8 angles
            if (animType == activeAnimType && activeAngle == angle)
            {
                // Same anim, same angle
                return;
            }
            else
            {
                if (animType != activeAnimType)
                {
                    // Different anim, same angle
                }
                else
                {
                    // Different angle, same anim
                }
            }
            PlayAnimForced(animType, angle, frameRateMod, onAnimComplete, onAnimTrigger, onAnimInterrupted);
        }
예제 #3
0
 public void PlayAnim(UnitAnim unitAnim, V_UnitSkeleton.OnAnimComplete onAnimComplete, V_UnitSkeleton.OnAnimTrigger onAnimTrigger)
 {
     playerBase.GetUnitAnimation().PlayAnim(unitAnim, 1f, onAnimComplete, onAnimTrigger, null);
 }
예제 #4
0
        public void PlayAnim(UnitAnimType animType, Vector3 dir, float frameRateMod, V_UnitSkeleton.OnAnimComplete onAnimComplete, V_UnitSkeleton.OnAnimTrigger onAnimTrigger, V_UnitSkeleton.OnAnimInterrupted onAnimInterrupted)
        {
            int angle = GetAngleFromVector(dir);

            PlayAnim(animType, angle, frameRateMod, onAnimComplete, onAnimTrigger, onAnimInterrupted);
        }
예제 #5
0
 public void PlayAnim(UnitAnimType animType, float frameRateMod, V_UnitSkeleton.OnAnimComplete onAnimComplete, V_UnitSkeleton.OnAnimTrigger onAnimTrigger, V_UnitSkeleton.OnAnimInterrupted onAnimInterrupted)
 {
     PlayAnim(animType, activeAngle, frameRateMod, onAnimComplete, onAnimTrigger, onAnimInterrupted);
 }
예제 #6
0
 public void UpdateAnim(UnitAnimType animType, int angle, float frameRateMod, V_UnitSkeleton.OnAnimComplete onAnimComplete, V_UnitSkeleton.OnAnimTrigger onAnimTrigger, V_UnitSkeleton.OnAnimInterrupted onAnimInterrupted)
 {
     // Update animation if different angle
     if (animType == activeAnimType)
     {
         // Same anim, check angle
         if (activeAngle == angle)
         {
             // Same angle, ignore
             return;
         }
         else
         {
             // Different angle
             activeAngle = angle;
             UnitAnim unitAnim = activeAnimType.GetUnitAnim(activeAngle);
             activeAnim = unitAnim;
             unitSkeleton.PlayAnimContinueFrames(unitAnim, frameRateMod, onAnimComplete, onAnimTrigger, onAnimInterrupted);
         }
     }
     else
     {
         // Different anim
         PlayAnim(animType, angle, frameRateMod, onAnimComplete, onAnimTrigger, onAnimInterrupted);
     }
 }
예제 #7
0
        public void PlayAnimForced(UnitAnim unitAnim, float frameRateMod, V_UnitSkeleton.OnAnimComplete onAnimComplete, V_UnitSkeleton.OnAnimTrigger onAnimTrigger, V_UnitSkeleton.OnAnimInterrupted onAnimInterrupted)
        {
            // Forcefully play animation no matter what is currently playing
            activeAnimType = unitAnim.GetUnitAnimType();
            activeAnim     = unitAnim;

            unitSkeleton.PlayAnim(unitAnim, frameRateMod, onAnimComplete, onAnimTrigger, onAnimInterrupted);
        }
예제 #8
0
        public void PlayAnim(UnitAnim unitAnim, float frameRateMod, V_UnitSkeleton.OnAnimComplete onAnimComplete, V_UnitSkeleton.OnAnimTrigger onAnimTrigger, V_UnitSkeleton.OnAnimInterrupted onAnimInterrupted)
        {
            // Ignores if same animType, same angle and same frameRateMod

            if (unitAnim == activeAnim)
            {
                // Same anim, same angle
                return;
            }
            PlayAnimForced(unitAnim, frameRateMod, onAnimComplete, onAnimTrigger, onAnimInterrupted);
        }