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); } }
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); }