Exemple #1
0
        public static void M2Camera()
        {
            SpecialSeek(openedFile.camerasPos);

            for (int i = 0; i < openedFile.camerasNum; i++)
            {
                M2Camera cam = new M2Camera();
                cam.type     = reader.ReadUInt32();
                cam.farClip  = reader.ReadUInt32();
                cam.nearClip = reader.ReadUInt32();

                /* Translation Position */
                cam.translationPosHeader       = new uint[] { reader.ReadUInt16(), reader.ReadUInt16() };
                cam.translationPosTimeStampNb  = reader.ReadUInt32();
                cam.translationPosTimeStampPos = reader.ReadUInt32();
                cam.translationPosKeyNb        = reader.ReadUInt32();
                cam.translationPosKeyPos       = reader.ReadUInt32();

                cam.position = new float[] { reader.ReadUInt32(), reader.ReadUInt32(), reader.ReadUInt32() };

                /* Translation Target */
                cam.translationTarHeader       = new uint[] { reader.ReadUInt16(), reader.ReadUInt16() };
                cam.translationTarTimeStampNb  = reader.ReadUInt32();
                cam.translationTarTimeStampPos = reader.ReadUInt32();

                cam.translationTarKeyNb  = reader.ReadUInt32();
                cam.translationTarKeyPos = reader.ReadUInt32();
                cam.target = new float[] { reader.ReadUInt32(), reader.ReadUInt32(), reader.ReadUInt32() };

                /* Roll */
                cam.rollHeader       = new uint[] { reader.ReadUInt16(), reader.ReadUInt16() };
                cam.rollTimestampNb  = reader.ReadUInt32();
                cam.rollTimestampPos = reader.ReadUInt16();
                cam.rollKeysNb       = reader.ReadUInt16();
                cam.rollKeysPos      = reader.ReadUInt16();

                /* FOV */
                cam.fovHeader       = new uint[] { reader.ReadUInt16(), reader.ReadUInt16() };
                cam.fovTimestampNb  = reader.ReadUInt32();
                cam.fovTimestampPos = reader.ReadUInt32();
                cam.fovKeysNb       = reader.ReadUInt32();
                cam.fovKeysPos      = reader.ReadUInt32();

                openedFile.cameras.Add(cam);
            }
        }
Exemple #2
0
        public M2Array <M2Camera> GetCameras()
        {
            M2Array <M2Camera> cameras = new M2Array <M2Camera>();

            if (!_model.Has <CAMS>())
            {
                return(cameras);
            }

            foreach (var c in _model.Get <CAMS>())
            {
                M2Camera camera = new M2Camera()
                {
                    FarClip            = c.FarClip,
                    FieldOfView        = new M2Track <C3Vector>(),
                    NearClip           = c.NearClip,
                    PositionBase       = c.Pivot.ToC3Vector,
                    TargetPositionBase = c.TargetPosition.ToC3Vector
                };
                camera.FieldOfView.Timestamps.Add(new M2Array <uint>()
                {
                    0
                });
                camera.FieldOfView.Values.Add(new M2Array <C3Vector>()
                {
                    new C3Vector(c.FieldOfView, 0, 0)
                });

                switch (c.Name.ToUpper())
                {
                case "PORTRAIT":
                    camera.Type = M2Camera.CameraType.Portrait;
                    break;

                case "PAPERDOLL":
                    camera.Type = M2Camera.CameraType.CharacterInfo;
                    break;

                default:
                    continue;
                }

                cameras.Add(camera);
            }

            //Add missing CharacterInfo camera
            if (!cameras.Any(x => x.Type == M2Camera.CameraType.CharacterInfo) && cameras.Any(x => x.Type == M2Camera.CameraType.Portrait))
            {
                var      c      = cameras.First(x => x.Type == M2Camera.CameraType.Portrait);
                M2Camera camera = new M2Camera()
                {
                    FarClip            = c.FarClip,
                    FieldOfView        = c.FieldOfView,
                    NearClip           = c.NearClip,
                    PositionBase       = c.PositionBase,
                    TargetPositionBase = c.TargetPositionBase,
                    Type = M2Camera.CameraType.CharacterInfo
                };

                cameras.Add(camera);
            }

            return(cameras);
        }