void SetState(SurfaceCameraState state) { CameraPosition = FreeSurfacePosition = state.FreeSurfacePosition; CameraDistance = CameraPosition.Length(); FreeSurfaceYaw = state.FreeSurfaceYaw; FreeSurfacePitch = state.FreeSurfacePitch; freeSurfaceRotation = state.FreeRotation; var newLonLat = GetCameraLonLat(); Yaw = newLonLat.X; Pitch = -newLonLat.Y; }
List<SurfaceCameraState> LoadCameraStatesFromFile(string fileName) { if (!File.Exists(fileName)) return null; var states = new List<SurfaceCameraState>(); var lines = File.ReadAllLines(fileName); for (int i = 0; i < lines.Length; i++) { var line = lines[i]; var s = line.Split(new char[] {'\t'}, StringSplitOptions.RemoveEmptyEntries); var curState = new SurfaceCameraState(); curState.Id = s[0]; curState.FreeSurfacePosition = new DVector3(double.Parse(s[1]), double.Parse(s[2]), double.Parse(s[3])); curState.FreeSurfaceYaw = double.Parse(s[4]); curState.FreeSurfacePitch = double.Parse(s[5]); curState.WaitTime = float.Parse(s[6]); curState.TransitionTime = float.Parse(s[7]); curState.FreeRotation = DQuaternion.RotationAxis(DVector3.UnitY, curState.FreeSurfaceYaw) * DQuaternion.RotationAxis(DVector3.UnitX, curState.FreeSurfacePitch); states.Add(curState); } return states; }