コード例 #1
0
 //-----------------------------------------------------------------------------------
 void OnEnable()
 {
     if (CRManagerEditor.IsOpen)
     {
         CRManagerEditor window = CRManagerEditor.Instance;
         window.WantRepaint += Repaint;
     }
 }
コード例 #2
0
        //-----------------------------------------------------------------------------------
        public void UnselectSelected()
        {
            listSelectedIdx_.Clear();

            CRManagerEditor window = CRManagerEditor.Instance;

            window.RepaintSubscribers();
        }
コード例 #3
0
        //-----------------------------------------------------------------------------------
        public void RenderFieldObjects(string labelText, CNFieldController fieldController, bool enabled, bool showScope, CNFieldWindow.Type windowType)
        {
            if (objects_rect_width == 1)
            {
                CRManagerEditor.RepaintIfOpen();
            }

            EditorGUI.BeginDisabledGroup(!enabled);
            Event     ev     = Event.current;
            EventType evType = ev.type;

            EditorGUILayout.BeginHorizontal();

            EditorGUILayout.LabelField(labelText, GUILayout.MaxWidth(showScope ? short_label_width : long_label_width));

            GUILayout.Label("", EditorStyles.objectField);
            Rect objectsRect = GUILayoutUtility.GetLastRect();

            if (evType == EventType.Repaint)
            {
                objects_rect_width = objectsRect.width;
            }

            fieldController.DrawFieldItems(objectsRect, tex_icon_size);

            if (evType == EventType.MouseDown && ev.button == 0 &&
                objectsRect.Contains(ev.mousePosition))
            {
                if (windowType == CNFieldWindow.Type.normal)
                {
                    CNFieldWindowSmall.ShowWindow <CNFieldWindowSmall>(labelText, fieldController, this);
                }
                else if (windowType == CNFieldWindow.Type.extended)
                {
                    CNFieldWindowBig.ShowWindow <CNFieldWindowBig>(labelText, fieldController, this);
                }
            }
            if (showScope)
            {
                GUILayout.Space(10f);
                EditorGUILayout.LabelField("Scope", GUILayout.Width(40f));
                CNField.ScopeFlag auxScope = fieldController.GetScopeType();
                EditorGUI.BeginChangeCheck();
                auxScope = (CNField.ScopeFlag)EditorGUILayout.EnumPopup(auxScope, GUILayout.Width(70f));
                if (EditorGUI.EndChangeCheck())
                {
                    fieldController.SetScopeType(auxScope);
                    cnHierarchy.RecalculateFieldsDueToUserAction();
                    EditorUtility.SetDirty(Data);
                }
            }
            ProccesEvents(ev, evType, fieldController, objectsRect);
            EditorGUILayout.EndHorizontal();
            EditorGUI.EndDisabledGroup();
        }
コード例 #4
0
        //-----------------------------------------------------------------------------------
        void OnDisable()
        {
            if (CRManagerEditor.IsOpen)
            {
                CRManagerEditor window = CRManagerEditor.Instance;
                window.WantRepaint -= Repaint;
            }

            if (View != null)
            {
                View.Deinit();
            }
        }
コード例 #5
0
        //-----------------------------------------------------------------------------------
        private void ChangeToReplayingModeDone()
        {
            stopRequested_ = false;
            SimulationManager.ChangeToReplayingDone();

            manager_.BuildBakerData();

            EditorApplication.update -= UpdateSimulating;
            EditorApplication.update += UpdateReplaying;

            SimulationManager.SetReplayingFrame((uint)frame_, false);

            SceneView.RepaintAll();
            CRManagerEditor.RepaintIfOpen();
        }
コード例 #6
0
        //-----------------------------------------------------------------------------------
        public void FilterAlreadySelectedNodes()
        {
            listCommandNodeCurrent_.Clear();
            listCommandNodeCurrent_.AddRange(listCommandNodeAllowed_);

            foreach (CommandNode cNode in listCommandNodeAllowed_)
            {
                if (field_.ContainsNode(cNode))
                {
                    FilterChildrenAndMergeFieldWithParents(cNode);
                }
            }

            CRManagerEditor instance = CRManagerEditor.Instance;

            instance.RepaintSubscribers();
        }
コード例 #7
0
        public override void OnInspectorGUI()
        {
            Caronte_Fx fxData = target as Caronte_Fx;

            EditorGUILayout.Space();
            EditorGUILayout.Space();
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Open in CaronteFX Editor", GUILayout.Height(30f)))
            {
                CRManagerEditor window = (CRManagerEditor)CRManagerEditor.Init();
                window.Controller.SetFxDataActive(fxData);
            }
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
        }
コード例 #8
0
        private void DrawNodeGUI(HashSet <CommandNode> setNode)
        {
            if (setNode.Count == 0)
            {
                GUILayout.Label("-");
            }
            foreach (CommandNode node in setNode)
            {
                GUILayout.BeginHorizontal();
                Rect boxRect   = GUILayoutUtility.GetRect(new GUIContent(""), EditorStyles.textField, GUILayout.ExpandWidth(true));
                Rect labelRect = new Rect(boxRect.xMin + 5, boxRect.yMin, boxRect.width * 0.75f - 5, boxRect.height);
                GUI.Box(labelRect, "");
                GUI.Label(labelRect, node.Name);
                Rect buttonRect = new Rect(labelRect.xMax + 10, boxRect.yMin, boxRect.width * 0.25f - 15, boxRect.height);

                if (GUI.Button(buttonRect, "Select", EditorStyles.miniButton))
                {
                    window_ = (CRManagerEditor)CRManagerEditor.Init();
                    hierarchy_.FocusAndSelect(node);
                }

                GUILayout.EndHorizontal();
            }
        }
コード例 #9
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            bool isEditing = false;

            if (CRManagerEditor.IsOpen)
            {
                window_              = CRManagerEditor.Instance;
                window_.WantRepaint -= Repaint;
                window_.WantRepaint += Repaint;
            }

            if (CNManager.IsInitedStatic)
            {
                manager_   = CNManager.Instance;
                hierarchy_ = manager_.Hierarchy;
                manager_.GetBodiesData(listBodyData_);

                isEditing = manager_.Player.IsEditing;
            }
            else
            {
                listBodyData_.Clear();
            }

            CRBodyData bdData = null;
            uint       idBody = uint.MaxValue;

            int nBodyData = listBodyData_.Count;

            BodyType bodyType;
            string   bodyTypeText;
            string   bodyIdText;

            if (nBodyData == 0)
            {
                bodyType     = BodyType.None;
                bodyTypeText = "-";
                bodyIdText   = "-";
            }
            else
            {
                bdData = listBodyData_[0];

                bodyType     = bdData.bodyType_;
                bodyTypeText = GetBodyTypeString(bdData.bodyType_);
                idBody       = bdData.idBody_;

                for (int i = 1; i < nBodyData; i++)
                {
                    bdData = listBodyData_[i];

                    if (bdData.bodyType_ != bodyType)
                    {
                        bodyType     = BodyType.None;
                        bodyTypeText = "-";
                        bodyIdText   = "-";
                        break;
                    }
                }

                if (idBody == uint.MaxValue || nBodyData > 1)
                {
                    bodyIdText = "-";
                }
                else
                {
                    bodyIdText = idBody.ToString();
                }
            }

            HashSet <CommandNode> setBodyDefinition = new HashSet <CommandNode>();
            HashSet <CommandNode> setBodyReference  = new HashSet <CommandNode>();

            for (int i = 0; i < nBodyData; i++)
            {
                bdData = listBodyData_[i];
                List <CommandNode> bdDataNodes = bdData.listNode_;
                int nDataNodes = bdDataNodes.Count;
                for (int j = 0; j < nDataNodes; j++)
                {
                    CommandNode node = bdDataNodes[j];
                    if (j == 0)
                    {
                        setBodyDefinition.Add(node);
                    }
                    else
                    {
                        setBodyReference.Add(node);
                    }
                }
            }

            EditorGUILayout.Space();

            EditorGUILayout.LabelField("Body type: ", bodyTypeText);
            EditorGUILayout.LabelField("Body id:", bodyIdText);

            EditorGUILayout.Space();

            if (bodyType == BodyType.None)
            {
                DrawFullBodySection();
            }
            else if (bodyType == BodyType.Ropebody)
            {
                DrawRopeColliderSection(isEditing);
            }
            else
            {
                DrawBodyColliderSection();
            }

            EditorGUILayout.Space();
            EditorGUILayout.LabelField("Body Definition: ");

            scrollVecDefinition_ = GUILayout.BeginScrollView(scrollVecDefinition_, GUILayout.ExpandHeight(false));

            DrawNodeGUI(setBodyDefinition);
            GUILayout.EndScrollView();

            EditorGUILayout.Space();
            EditorGUILayout.LabelField("Referenced in: ");

            scrollVecReferenced_ = GUILayout.BeginScrollView(scrollVecReferenced_, GUILayout.ExpandHeight(false));
            DrawNodeGUI(setBodyReference);
            GUILayout.EndScrollView();
            CRGUIUtils.Splitter();

            if (!CRManagerEditor.IsOpen)
            {
                EditorGUILayout.Space();
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.Space();

                if (GUILayout.Button("Open CaronteFx Editor", GUILayout.Height(30f)))
                {
                    window_ = (CRManagerEditor)CRManagerEditor.Init();
                }

                EditorGUILayout.Space();
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.Space();
            }

            serializedObject.ApplyModifiedProperties();
        }
コード例 #10
0
        //-----------------------------------------------------------------------------------
        public void OnClickItem(int itemIdx, bool ctrlPressed, bool shiftPressed, bool altPressed, bool isUpClick)
        {
            int prevIdx = lastSelectedIdx_;

            lastSelectedIdx_ = itemIdx;

            if (!isUpClick)
            {
                if (shiftPressed)
                {
                    if (prevIdx != -1)
                    {
                        int range     = itemIdx - prevIdx;
                        int increment = (range > 0) ? 1 : -1;

                        while (prevIdx != itemIdx)
                        {
                            int currentIdx = prevIdx + increment;

                            if (listSelectedIdx_.Contains(currentIdx))
                            {
                                listSelectedIdx_.Remove(currentIdx);
                            }
                            else
                            {
                                listSelectedIdx_.Add(currentIdx);
                            }
                            prevIdx += increment;
                        }
                        SceneSelection();
                    }
                }
                else if (ctrlPressed)
                {
                    if (listSelectedIdx_.Contains(itemIdx))
                    {
                        listSelectedIdx_.Remove(itemIdx);
                    }
                    else
                    {
                        listSelectedIdx_.Add(itemIdx);
                    }
                }
                else if (!listSelectedIdx_.Contains(itemIdx))
                {
                    listSelectedIdx_.Clear();
                    listSelectedIdx_.Add(itemIdx);
                    SceneSelection();
                }
                else
                {
                    return;
                }
            }
            else
            {
                if (!ctrlPressed && !shiftPressed)
                {
                    listSelectedIdx_.Clear();
                    listSelectedIdx_.Add(itemIdx);
                    lastSelectedIdx_ = itemIdx;
                    SceneSelection();
                }
            }
            CRManagerEditor instance = CRManagerEditor.Instance;

            instance.RepaintSubscribers();
        }