/// <summary> /// Saves the player recording if he broke the record. /// </summary> private void SaveRecording(Queue <RecordMovement.RecordBlock> recording) { GhostJson jsonSave = new GhostJson() { points = new RecordingJson[recording.Count] }; int idx = 0; while (recording.Count != 0) { RecordMovement.RecordBlock currBlock = recording.Dequeue(); jsonSave.points[idx] = new RecordingJson() { pos = new ThreeNumbersSave(currBlock.Position.x, currBlock.Position.y, currBlock.Position.z), rotation = new FourNumbersSave(currBlock.Rotation.x, currBlock.Rotation.y, currBlock.Rotation.z, currBlock.Rotation.w), time = currBlock.PointInTime }; idx++; } string jsonString = JsonUtility.ToJson(jsonSave); File.WriteAllText(RECORDING_FILE_PATH, jsonString); }
/// <summary> /// Load a ghost recording. /// </summary> private Queue <RecordMovement.RecordBlock> LoadRecording() { if (File.Exists(RECORDING_FILE_PATH) == false) { return(null); } string jsonString = File.ReadAllText(RECORDING_FILE_PATH); GhostJson jsonSave = JsonUtility.FromJson <GhostJson>(jsonString); Queue <RecordMovement.RecordBlock> recording = new Queue <RecordMovement.RecordBlock>(); for (int i = 0; i < jsonSave.points.Length; i++) { recording.Enqueue(new RecordMovement.RecordBlock() { PointInTime = jsonSave.points[i].time, Position = jsonSave.points[i].pos.ToVector3(), Rotation = jsonSave.points[i].rotation.ToQuat() }); } return(recording); }