Esempio n. 1
0
        public void InitFrames(int FramesCount)
        {
            Frame = new BoneAnimation[FramesCount];

            for (int i = 0; i < FramesCount; i++)
            {
                Frame[i] = new BoneAnimation();
            }
        }
Esempio n. 2
0
        public void AddAnimationAt(int frame_number, string animation_name, BoneFrame frame, ZMOTrack.TrackType trackType)
        {
            bool          createdAnim = false;
            bool          createdFare = false;
            BoneAnimation banim       = BoneAnimations.Find(ba => ba.Name.Equals(animation_name, System.StringComparison.InvariantCultureIgnoreCase));

            // if new animation - create
            if (banim == null)
            {
                banim       = new BoneAnimation(animation_name);
                createdAnim = true;
            }

            BoneFrame bframe = banim.Frames.Find(a => a.Frame == frame_number);

            // if new frame - create
            if (bframe == null)
            {
                bframe = new BoneFrame()
                {
                    Frame = frame_number
                };

                createdFare = true;
            }

            // add/update frame transform
            switch (trackType)
            {
            case ZMOTrack.TrackType.POSITION:
                bframe.Position = frame.Position;
                break;

            case ZMOTrack.TrackType.ROTATION:
                bframe.Rotation = frame.Rotation.Normalized();
                break;

            case ZMOTrack.TrackType.SCALE:
                bframe.Scale = frame.Scale;
                break;
            }

            if (createdFare)
            {
                banim.Frames.Add(bframe);
            }

            if (createdAnim)
            {
                BoneAnimations.Add(banim);
            }
        }