コード例 #1
0
 public ZMOChannel(ZMOTrack.TrackType TrackType, int BoneID)
 {
     this.Type   = TrackType;
     this.BoneID = BoneID;
 }
コード例 #2
0
 public ZMOChannel()
 {
     BoneID = -1;
     Type   = ZMOTrack.TrackType.NONE;
 }
コード例 #3
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);
            }
        }