コード例 #1
0
    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);
        }
    }
コード例 #2
0
 public void SaveScene(SpiralScene scene)
 {
     if (scene == UnsavedScene)
     {
         UnsavedScene = CreateScene();
         SavedScenes.Add(scene);
         SaveData();
     }
 }
コード例 #3
0
    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);
    }
コード例 #4
0
    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();
    }
コード例 #5
0
ファイル: PlaybackUI.cs プロジェクト: ajkolenc/Zentacle
 public void RecordGif(SpiralScene scene, System.Action callback)
 {
     SetBackground(scene.BackgroundColor);
     SetVisible(true);
     recorder.Record();
     SpiralManager.Instance.PlayScene(scene, () => {
         SaveUI.Instance.StartSave(recorder, () => {
             callback();
         });
     });
 }
コード例 #6
0
ファイル: PlaybackUI.cs プロジェクト: ajkolenc/Zentacle
 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();
     });
 }
コード例 #7
0
    public void Init()
    {
        if (clearDataOnStart)
        {
            PlayerPrefs.DeleteAll();
        }

        UnsavedScene      = CreateScene();
        UnsavedScene.name = "Scene 1";

        LoadData();
        LoadStartScene();
    }
コード例 #8
0
    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);
            }
        }
    }
コード例 #9
0
ファイル: SpiralManager.cs プロジェクト: ajkolenc/Zentacle
    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);
        }
    }
コード例 #10
0
ファイル: PlaybackUI.cs プロジェクト: ajkolenc/Zentacle
 public void PlayAnimation(SpiralScene scene, System.Action callback = null)
 {
     SetBackground(scene.BackgroundColor);
     SetVisible(true);
     SpiralManager.Instance.PlayScene(scene, callback);
 }
コード例 #11
0
ファイル: SpiralManager.cs プロジェクト: ajkolenc/Zentacle
 public void PlayScene(SpiralScene scene, System.Action callback, float delay = 0.1f)
 {
     StartCoroutine(playScene(scene, callback, delay));
 }
コード例 #12
0
ファイル: SpiralManager.cs プロジェクト: ajkolenc/Zentacle
 public void PlayScene(SpiralScene scene, float delay = 0.1f)
 {
     PlayScene(scene, null, delay);
 }
コード例 #13
0
 public void Copy(SpiralScene sceneToCopy)
 {
     SerializableManager.Deserialize <SpiralScene>(this, sceneToCopy.ToJSON());
 }