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_ = (CarManagerEditor)CarManagerEditor.Init();
                    hierarchy_.FocusAndSelect(node);
                    window_.Repaint();
                }

                GUILayout.EndHorizontal();
            }
        }
예제 #2
0
 //-----------------------------------------------------------------------------------
 void OnEnable()
 {
     if (CarManagerEditor.IsOpen)
     {
         CarManagerEditor window = CarManagerEditor.Instance;
         window.WantRepaint += Repaint;
     }
 }
예제 #3
0
        //-----------------------------------------------------------------------------------
        public void UnselectSelected()
        {
            listSelectedIdx_.Clear();

            CarManagerEditor window = CarManagerEditor.Instance;

            window.RepaintSubscribers();
        }
예제 #4
0
        //-----------------------------------------------------------------------------------
        void OnDisable()
        {
            if (CarManagerEditor.IsOpen)
            {
                CarManagerEditor window = CarManagerEditor.Instance;
                window.WantRepaint -= Repaint;
            }

            if (View != null)
            {
                View.Deinit();
            }
        }
예제 #5
0
        //-----------------------------------------------------------------------------------
        public void RenderFieldObjects(GUIContent labelContent, CNFieldController fieldController, bool enabled, bool showScope, CNFieldWindow.Type windowType)
        {
            if (objects_rect_width == 1)
            {
                CarManagerEditor.RepaintIfOpen();
            }

            EditorGUI.BeginDisabledGroup(!enabled);
            EditorGUILayout.BeginHorizontal();

            EditorGUILayout.LabelField(labelContent, GUILayout.MaxWidth(showScope ? short_label_width : EditorGUIUtility.labelWidth - 4f));
            DrawObjectsFields(labelContent.text, fieldController, enabled, showScope, windowType);
            EditorGUILayout.EndHorizontal();
            EditorGUI.EndDisabledGroup();
        }
예제 #6
0
        //-----------------------------------------------------------------------------------
        public void FilterAlreadySelectedNodes()
        {
            listCommandNodeCurrent_.Clear();
            listCommandNodeCurrent_.AddRange(listCommandNodeAllowed_);

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

            CarManagerEditor instance = CarManagerEditor.Instance;

            instance.RepaintSubscribers();
        }
예제 #7
0
        public override void OnInspectorGUI()
        {
            Rect rect = GUILayoutUtility.GetRect(80f, 80f);

            GUI.DrawTexture(rect, ic_logoCaronte_, ScaleMode.ScaleToFit);
            CarGUIUtils.Splitter();

            EditorGUILayout.Space();
            EditorGUILayout.Space();
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();

            if (GUILayout.Button("Open in CaronteFX Editor", GUILayout.Height(30f)))
            {
                CarManagerEditor editor = (CarManagerEditor)CarManagerEditor.Init();
                editor.Controller.SetFxDataActive(fxData_);
            }
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
        }
예제 #8
0
        //-----------------------------------------------------------------------------------
        private void ChangeToReplayingModeDone()
        {
            Int64 checksum = SimulationManager.CalculateChecksum();

            CarDebug.Log(string.Format("Finished in {0:F3} secs. Checksum: " + Convert.ToString(checksum, 16), SimulationManager.GetSimulatingRealTime()));

            stopRequested_ = false;
            SimulationManager.ChangeToReplayingDone();

            manager_.BuildBakerData();
            manager_.BuildDisplayerVisibilityIntervals();

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

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

            playbackRangeMin_ = 0;
            playbackRangeMax_ = frame_;

            SceneView.RepaintAll();
            CarManagerEditor.RepaintIfOpen();
        }
        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            bool isEditing = false;

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

            if (CarManager.IsInitedStatic)
            {
                manager_   = CarManager.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 if (IsNotBodyMesh(bodyType))
            {
                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();
            CarGUIUtils.Splitter();

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

                if (GUILayout.Button("Open CaronteFx Editor", GUILayout.Height(30f)))
                {
                    window_ = (CarManagerEditor)CarManagerEditor.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();
                }
            }
            CarManagerEditor instance = CarManagerEditor.Instance;

            instance.RepaintSubscribers();
        }