コード例 #1
0
 public void Lerp(SerializedFrame f2, float t)
 {
     for (int i = 0; i < objects.Count; i++)
     {
         objects[i].Lerp(f2.objects[i], t);
     }
 }
コード例 #2
0
    private void transferPlayerFrames(Frame playerFrame, int sceneBuildIndex)
    {
        foreach (Frame frame in playerFrame.GetComponentsInChildren <Frame>())
        {
            SerializedFrame serializedFrame = currentGame.GetFrameById(frame.id);

            if (serializedFrame != null)
            {
                serializedFrame.scene = sceneBuildIndex;
            }
        }
    }
コード例 #3
0
ファイル: Frame.cs プロジェクト: holycrab13/neverdawn
    internal SerializedFrame SerializeTo(SerializableGame data)
    {
        if (data == null)
        {
            return(null);
        }

        data[id] = new SerializedFrame()
        {
            id            = id,
            prefab        = prefab,
            scene         = SceneManager.GetActiveScene().buildIndex,
            destroyed     = destroyed,
            position      = SerializableVector3.FromVector3(transform.position),
            rotation      = SerializableVector3.FromVector3(transform.eulerAngles),
            componentData = SerializeComponents()
        };

        return(data[id]);
    }
コード例 #4
0
    private void FixedUpdate()
    {
        if (!writing)
        {
            return;
        }
        if (frames.Count > 1060)
        {
            writing = false;
            int num = 60;
            for (int i = 0; i < num; i++)
            {
                frames[i].Lerp(frames[i + 1000], 1f - 1f * (float)i / (float)num);
            }
            for (int j = 0; j < 1000; j++)
            {
                File.AppendAllText(filename, JsonUtility.ToJson(frames[j], prettyPrint: false));
                File.AppendAllText(filename, ",\r\n");
            }
        }
        SerializedFrame serializedFrame = new SerializedFrame();

        serializedFrame.objects.Add(StoreTransform(ragdoll.partHips.transform));
        serializedFrame.objects.Add(StoreTransform(ragdoll.partWaist.transform));
        serializedFrame.objects.Add(StoreTransform(ragdoll.partChest.transform));
        serializedFrame.objects.Add(StoreTransform(ragdoll.partHead.transform));
        serializedFrame.objects.Add(StoreTransform(ragdoll.partLeftArm.transform));
        serializedFrame.objects.Add(StoreTransform(ragdoll.partLeftForearm.transform));
        serializedFrame.objects.Add(StoreTransform(ragdoll.partLeftThigh.transform));
        serializedFrame.objects.Add(StoreTransform(ragdoll.partLeftLeg.transform));
        serializedFrame.objects.Add(StoreTransform(ragdoll.partRightArm.transform));
        serializedFrame.objects.Add(StoreTransform(ragdoll.partRightForearm.transform));
        serializedFrame.objects.Add(StoreTransform(ragdoll.partRightThigh.transform));
        serializedFrame.objects.Add(StoreTransform(ragdoll.partRightLeg.transform));
        frames.Add(serializedFrame);
    }
コード例 #5
0
ファイル: Frame.cs プロジェクト: holycrab13/neverdawn
    /// <summary>
    /// Deserializes a set of serialized frames into the scene
    /// </summary>
    /// <param name="frames"></param>
    internal static void DeserializeFrames(SerializableGame gameData, int sceneBuildIndex)
    {
        SerializableGame data = GameController.instance.currentGame;

        // Create a dictionarry with ALL saved frames
        foreach (SerializedFrame serializedFrame in gameData.frames)
        {
            data[serializedFrame.id] = serializedFrame;
        }

        _frames = new List <Frame>();
        _frames.AddRange(FindObjectsOfType <Frame>());

        // Check the current scene of all stationary frames
        foreach (Frame frame in _frames)
        {
            if (data.ContainsKey(frame.id))
            {
                SerializedFrame serializedFrame = data[frame.id];

                // stationary is not in the scene..
                if (serializedFrame.scene != sceneBuildIndex)
                {
                    Destroy(frame.gameObject);
                }
            }
        }

        SerializedFrame[] sceneFrames = gameData.GetFramesBySceneBuildIndex(sceneBuildIndex);

        // Create all the frames needed in the scene
        foreach (SerializedFrame serializedFrame in sceneFrames)
        {
            Frame frame = FindFrameById(serializedFrame.id);

            // If the frame doesn't exist in the level yet, create it!
            if (frame == null)
            {
                // If the frame has been destroyed in the last session, we won't need it ever again!
                if (serializedFrame.destroyed)
                {
                    data.Remove(serializedFrame.id);
                    continue;
                }

                frame = Instantiate(NeverdawnDatabase.GetPrefab(serializedFrame.prefab));
            }

            if (serializedFrame.destroyed)
            {
                Destroy(frame.gameObject);
                continue;
            }

            frame.id                    = serializedFrame.id;
            frame.prefab                = serializedFrame.prefab;
            frame.transform.position    = serializedFrame.position.ToVector3();
            frame.transform.eulerAngles = serializedFrame.rotation.ToVector3();

            frame.Init();
        }

        // Load the frame components
        foreach (SerializedFrame serializedFrame in sceneFrames)
        {
            Frame frame = FindFrameById(serializedFrame.id);
            frame.DeserializeComponents(serializedFrame.componentData);
        }
    }