public void LoadData() { int sceneCount = PlayerPrefs.GetInt("Scene Count", 0); for (int i = 0; i < sceneCount; i++) { string sceneJson = PlayerPrefs.GetString("Saved Scene " + i); if (i >= SavedScenes.Count) { SpiralScene scene = SerializableManager.Deserialize <SpiralScene>(sceneJson); SavedScenes.Add(scene); } else { SerializableManager.Deserialize <SpiralScene>(SavedScenes[i], sceneJson); } } string inProgress = PlayerPrefs.GetString("In Progress Scene", ""); if (inProgress != "") { SerializableManager.Deserialize <SpiralScene>(UnsavedScene, inProgress); } }
public void SaveScene(SpiralScene scene) { if (scene == UnsavedScene) { UnsavedScene = CreateScene(); SavedScenes.Add(scene); SaveData(); } }
public SpiralScene CreateScene(SpiralScene copy = null) { SpiralScene baseScene = copy ?? defaultScene; SpiralScene scene = new GameObject(defaultScene.name).AddComponent <SpiralScene>(); scene.transform.SetParent(transform, false); SerializableManager.Deserialize <SpiralScene>(scene, baseScene.ToJSON()); return(scene); }
public void RefreshSceneOptions() { SceneDropDown.BeginOptions(); List <string> presetOptions = new List <string>(); foreach (SpiralScene preset in DataManager.Instance.PresetScenes) { presetOptions.Add(preset.name); } SceneDropDown.AddOption("Presets", presetOptions, (x) => { LinkedSavedScene = null; DataManager.Instance.UnsavedScene.Copy(DataManager.Instance.PresetScenes[x]); LoadScene(DataManager.Instance.UnsavedScene); }); List <string> savedScenes = new List <string>(); foreach (SpiralScene saved in DataManager.Instance.SavedScenes) { savedScenes.Add(saved.name); } savedScenes.Add("[SAVE CURRENT]"); SceneDropDown.AddOption("Saved Scenes", savedScenes, (x) => { if (x < DataManager.Instance.SavedScenes.Count) { LinkedSavedScene = DataManager.Instance.SavedScenes[x]; DataManager.Instance.UnsavedScene.Copy(LinkedSavedScene); LoadScene(DataManager.Instance.UnsavedScene); } else { OnSaveAsNewScene(); } preventSave = true; }, (x) => { SpiralScene toRemove = DataManager.Instance.SavedScenes[x]; if (toRemove == LinkedSavedScene) { LinkedSavedScene = null; SceneSaveChanges.gameObject.SetActive(false); } DataManager.Instance.DeleteScene(x); UIManager.TriggerRefresh(); }); SceneDropDown.AddOption("[RESET SCENE]", (x) => { LinkedSavedScene = null; DataManager.Instance.LoadDefaultScene(); }); SceneDropDown.EndOptions(); }
public void RecordGif(SpiralScene scene, System.Action callback) { SetBackground(scene.BackgroundColor); SetVisible(true); recorder.Record(); SpiralManager.Instance.PlayScene(scene, () => { SaveUI.Instance.StartSave(recorder, () => { callback(); }); }); }
public void TakeScreenshot(SpiralScene scene, System.Action callback) { SetBackground(scene.BackgroundColor); SetVisible(true); SpiralManager.Instance.PlayScene(scene, () => { Texture2D screenshot = new Texture2D(spiralTexture.width, spiralTexture.height); RenderTexture.active = spiralTexture; screenshot.ReadPixels(new Rect(0, 0, spiralTexture.width, spiralTexture.height), 0, 0); SaveManager.SaveFile(screenshot.EncodeToPNG(), scene.name, ".png", "Image"); callback(); }); }
public void Init() { if (clearDataOnStart) { PlayerPrefs.DeleteAll(); } UnsavedScene = CreateScene(); UnsavedScene.name = "Scene 1"; LoadData(); LoadStartScene(); }
public void LoadScene(SpiralScene scene) { DataManager.Instance.CopiedObject = null; CurrentScene = scene; SceneTitle.text = scene.name; for (int i = 0; i < Groups.Count; i++) { PatternGroupUI ui = Groups[i]; if (i < scene.Patterns.Count) { SpiralScene.PatternGroup g = scene.Patterns[i]; ui.LoadGroup(g); } else { ui.LoadGroup(null); } } }
IEnumerator playScene(SpiralScene scene, System.Action callback, float delay) { if (playing) { Clear(); } playing = true; yield return(new WaitForSeconds(delay)); if (playing) { executingSimulation = true; animationCallback = callback; Camera.SetBackground(scene.BackgroundColor); particleMaterials.Clear(); float avgColor = (scene.BackgroundColor.r + scene.BackgroundColor.g + scene.BackgroundColor.b) / 3f; Synth.CurrentScale = (Synth.ScaleType)(Mathf.Min(3, Mathf.FloorToInt(4 * avgColor))); float startZoom = 0f; for (int i = 0; i < scene.Patterns.Count; i++) { SpiralScene.PatternGroup group = scene.Patterns[i]; if (group != null && group.Pattern != null && group.Particle != null && group.Enabled) { Material particleMat = group.Pattern.Generate(group.Particle, group.Color, i * 0.1f); particleMaterials.Add(group, particleMat); startZoom = Mathf.Max(group.Pattern.SpokeDistance, startZoom); } } Camera.SetMinZoom(startZoom); } }
public void PlayAnimation(SpiralScene scene, System.Action callback = null) { SetBackground(scene.BackgroundColor); SetVisible(true); SpiralManager.Instance.PlayScene(scene, callback); }
public void PlayScene(SpiralScene scene, System.Action callback, float delay = 0.1f) { StartCoroutine(playScene(scene, callback, delay)); }
public void PlayScene(SpiralScene scene, float delay = 0.1f) { PlayScene(scene, null, delay); }
public void Copy(SpiralScene sceneToCopy) { SerializableManager.Deserialize <SpiralScene>(this, sceneToCopy.ToJSON()); }