public void Lerp(SerializedFrame f2, float t) { for (int i = 0; i < objects.Count; i++) { objects[i].Lerp(f2.objects[i], t); } }
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; } } }
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]); }
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); }
/// <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); } }