Ejemplo n.º 1
0
    /// <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);
    }
Ejemplo n.º 2
0
    /// <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);
    }