Ejemplo n.º 1
0
    /// <summary>
    /// クリップの開始時に呼ばれる
    /// </summary>
    /// <param name="time"></param>
    public void OnControlTimeStart()
    {
        this.sceneInformationList = GameObject.Find("SceneInformationList").GetComponent <SceneInformationList>().sceneInformationList;
        this.sceneInformationList.OrderBy(i => i.EndTime);
        this.sceneInformationList.Add(null);

        sceneDisplayManager = new SceneDisplayManager();
    }
    /// <summary>
    /// Inspectorの拡張
    /// </summary>
    public override void OnInspectorGUI()
    {
        serializedObject.Update();
        var _sceneInformationList = _listTarget.sceneInformationList;

        GUI.backgroundColor = defaultColor;

        if (!_doneUpdateSceneList)
        {
            _isOpenIndivisualInformation = new bool[_sceneInformationList.Count];
            _doneUpdateSceneList         = true;
        }

        _isOpenMainList = EditorGUILayout.Foldout(_isOpenMainList, "SceneList");

        if (_isOpenMainList)
        {
            EditorGUI.indentLevel++;


            if (GUILayout.Button("AllOpen"))
            {
                _isOpenIndivisualInformation = _isOpenIndivisualInformation.Select(b => true).ToArray();
            }

            if (GUILayout.Button("AllClose"))
            {
                _isOpenIndivisualInformation = _isOpenIndivisualInformation.Select(b => false).ToArray();
            }

            for (int i = 0; i < _sceneInformationList.Count; i++)
            {
                EditorGUI.indentLevel++;

                _isOpenIndivisualInformation[i] = EditorGUILayout.Foldout(_isOpenIndivisualInformation[i], "Scene_" + (i + 1));
                if (_isOpenIndivisualInformation[i])
                {
                    FetchPropertyFromSceneInformation(_sceneInformationList[i], i);


                    if (GUILayout.Button("Preview"))
                    {
                        var _sceneDisplayManager = new SceneDisplayManager();
                        _sceneDisplayManager.PreviewDisplayScene(_sceneInformationList[i]);
                    }

                    GUI.backgroundColor = Color.red;
                    if (GUILayout.Button("Remove"))
                    {
                        _sceneInformationList.RemoveAt(i);
                        _doneUpdateSceneList = false;
                    }
                    GUI.backgroundColor = defaultColor;
                }
                EditorGUI.indentLevel--;
            }

            GUI.backgroundColor = Color.gray;

            if (GUILayout.Button("Add"))
            {
                _sceneInformationList.Add(new SceneInformation(0, 0, ""));
                SceneNumberProperty.InsertArrayElementAtIndex(SceneNumberProperty.arraySize);
                _doneUpdateSceneList = false;
            }

            GUILayout.Space(10);

            if (GUILayout.Button("Clear"))
            {
                _sceneInformationList.Clear();
            }
        }
        serializedObject.ApplyModifiedProperties();
    }