예제 #1
0
    public override void OnInspectorGUI()
    {
        if (!Application.isPlaying)
        {
            if (m_scene.SceneName == string.Empty)
            {
                EditorGUILayout.HelpBox("Please firstly save the scenes", MessageType.Error);
            }
            else
            {
                var scnData = SceneData.GetBySceneName(m_scene.SceneName);

                var sceneExist = scnData != null;

                var defaultColor = GUI.color;

                GUI.color = (sceneExist) ? defaultColor : new Color(1f, 0.5f, 0.3f);

                if (GUILayout.Button("Manage Setting Data"))
                {
                    CreateScenePopupWindow.ShowWindow(m_scene);
                }

                GUI.color = defaultColor;

                var deviceType = SceneDetail.GetBySceneName(m_scene.SceneName).deviceType;
                EditorGUILayout.LabelField("Device Type", deviceType);
            }
        }

        base.OnInspectorGUI();
    }
예제 #2
0
    public void Init(TGBaseScene _scene)
    {
        m_scene = _scene;

        m_prevSceneData   = m_newSceneData = SceneData.GetBySceneName(m_scene.SceneName);
        m_prevSceneDetail = m_newSceneDetail = SceneDetail.GetBySceneName(m_scene.SceneName);
    }
예제 #3
0
    private void OnGUI()
    {
        EditorGUILayout.BeginVertical();

        var settingData = TGSettingData.GetInstance();

        // 如果没有则提示到TGframework/Preferences里创建
        if (settingData.sceneDatas == null || settingData.sceneDatas.Count == 0)
        {
            EditorGUILayout.HelpBox("没有任何的SceneData,请通过TGFramework/Preferences创建", MessageType.Error);
            return;
        }

        // 如果有则允许通过弹窗选择,并且列出该信息
        m_newSceneData   = DrawSceneDataSelection();
        m_newSceneDetail = DrawSceneDetailSelection();

        EditorGUILayout.BeginHorizontal();

        if (GUILayout.Button("Confirm"))
        {
            var setting = TGSettingData.GetInstance();
            // 检测信息是否发生改变,如果发生改变则先把旧的信息移除
            if (m_prevSceneData != m_newSceneData && m_prevSceneData != null)
            {
                m_prevSceneData.sceneDetails.Remove(m_prevSceneDetail);
            }

            // 如果该场景已经存在,则更新其数值
            // 反之则添加新数据到列表里
            if (m_newSceneData != null)
            {
                var scnIndex = m_newSceneData.sceneDetails.IndexOf(m_newSceneDetail);
                if (scnIndex >= 0)
                {
                    m_newSceneData.sceneDetails[scnIndex] = m_newSceneDetail;
                }
                else
                {
                    m_newSceneData.sceneDetails.Add(m_newSceneDetail);
                }
            }

            EditorUtility.SetDirty(settingData);

            EditorWindow.GetWindow <TGSettingDataWindow>().Repaint();

            Close();
        }

        if (GUILayout.Button("Cancel"))
        {
            Close();
        }

        EditorGUILayout.EndHorizontal();

        EditorGUILayout.EndVertical();
    }
예제 #4
0
    private void DrawSceneDetail(SceneDetail _sc)
    {
        var asset = AssetDatabase.LoadAssetAtPath <SceneAsset>(TGPaths.FullScenePath(_sc.sceneName));

        if (asset == null)
        {
            EditorGUILayout.HelpBox("Please make sure scene has saved to Assets/_Projects/Scenes Directory", MessageType.Warning);
        }
        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.ObjectField(asset, typeof(SceneAsset), false, GUILayout.Width(350), GUILayout.MinWidth(150));
        EditorGUILayout.LabelField(_sc.deviceType, GUILayout.Width(100));
        EditorGUILayout.EndHorizontal();
    }
예제 #5
0
        public override void AddObjectDetail(Object obj, Object refObj, Object detailRefObj)
        {
            ObjectDetail detail = null;

            foreach (var v in CheckList)
            {
                if (v.checkObject == obj)
                {
                    detail = v;
                }
            }
            if (detail == null)
            {
                detail = new SceneDetail(obj, this);
            }
            detail.AddObjectReference(refObj, detailRefObj);
        }