Example #1
0
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable, true, false);

            EditorGUI.BeginDisabledGroup(!isEditable);
            RenderFieldObjects("Bodies", FieldController, true, true, CNFieldWindow.Type.extended);

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            CarGUIUtils.DrawSeparator();
            CarGUIUtils.Splitter();

            EditorGUILayout.Space();
            EditorGUILayout.Space();
            bool currentMode = EditorGUIUtility.wideMode;

            EditorGUIUtility.wideMode = true;
            DrawTimer();
            EditorGUILayout.Space();
            DrawGravity();
            EditorGUIUtility.wideMode = currentMode;

            EditorGUILayout.Space();
            EditorGUI.EndDisabledGroup();
            GUILayout.EndArea();
        }
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable);

            EditorGUILayout.Space();
            float originalLabelwidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 100f;

            EditorGUI.BeginDisabledGroup(!isEditable);
            EditorGUI.BeginChangeCheck();
            selectedScopeIdx_ = EditorGUILayout.Popup(efScopeCt_, selectedScopeIdx_, arrScopeTypeCt_);
            if (EditorGUI.EndChangeCheck())
            {
                ChangeScope((CNGroup.CARONTEFX_SCOPE)selectedScopeIdx_);
            }

            EditorGUI.EndDisabledGroup();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            if (GUILayout.Button(efSelectScopeCt_, GUILayout.Height(30f)))
            {
                SceneSelection();
            }
            EditorGUIUtility.labelWidth = originalLabelwidth;

            CarGUIUtils.DrawSeparator();
            CarGUIUtils.Splitter();

            DrawEffectGUIWindow(isEditable);

            GUILayout.EndArea();
        }
        //----------------------------------------------------------------------------------
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable, true, false);
            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

            EditorGUI.BeginDisabledGroup(!isEditable);

            RenderFieldObjects("Explosions", FieldControllerExplosions, true, false, CNFieldWindow.Type.extended);
            RenderFieldObjects("Bodies", FieldControllerBodies, true, false, CNFieldWindow.Type.extended);

            EditorGUILayout.Space();
            CarGUIUtils.Splitter();

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            RenderFieldObjects("Attentive Nodes", FieldController, true, false, CNFieldWindow.Type.extended);
            EditorGUILayout.Space();
            CarGUIUtils.Splitter();

            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            EditorGUILayout.EndScrollView();

            GUILayout.EndArea();
        }
Example #4
0
        //-----------------------------------------------------------------------------------
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable);

            EditorGUI.BeginDisabledGroup(!isEditable);
            RenderFieldObjects("Objects", FieldController, true, true, CNFieldWindow.Type.normal);
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            CarGUIUtils.DrawSeparator();
            CarGUIUtils.Splitter();

            float originalLabelWidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = label_width;

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);
            EditorGUI.BeginDisabledGroup(!isEditable);

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            DrawCorpusclesRadius();

            EditorGUI.EndDisabledGroup();
            EditorGUILayout.EndScrollView();

            EditorGUIUtility.labelWidth = originalLabelWidth;

            GUILayout.EndArea();
        }
Example #5
0
        //----------------------------------------------------------------------------------
        public void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            EditorGUILayout.Space();
            DrawTimeLine();
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            EditorGUILayout.BeginHorizontal();
            GUILayout.Space(40f);
            DrawPlayerButtons();
            GUILayout.Space(30f);
            EditorGUILayout.BeginVertical();
            DrawTimeStatistics();
            EditorGUILayout.EndVertical();
            EditorGUILayout.EndHorizontal();

            GUILayout.Space(10f);
            EditorGUILayout.BeginHorizontal();
            GUILayout.Space(40f);
            DrawPlaybackRange();
            GUILayout.Space(20f);
            EditorGUILayout.EndHorizontal();

            CarGUIUtils.Splitter();
            GUILayout.Space(5f);

            EditorGUILayout.BeginHorizontal();
            GUILayout.Space(10f);
            DrawBakeBar();
            EditorGUILayout.EndHorizontal();

            GUILayout.EndArea();
        }
Example #6
0
        //----------------------------------------------------------------------------------
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable, true, false);
            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

            EditorGUI.BeginDisabledGroup(!isEditable);

            RenderFieldObjects("Originals", FieldControllerA, true, false, CNFieldWindow.Type.extended);
            EditorGUILayout.Space();
            RenderFieldObjects("Substitutes", FieldControllerB, true, false, CNFieldWindow.Type.extended);

            CarGUIUtils.Splitter();
            EditorGUILayout.Space();
            DrawTimer();
            EditorGUILayout.Space();
            DrawProbabilitySeed();
            DrawProbability();

            EditorGUILayout.Space();

            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            EditorGUILayout.EndScrollView();

            GUILayout.EndArea();
        }
Example #7
0
 public override void OnInspectorGUI()
 {
     EditorGUILayout.LabelField("CaronteFX - Balltree Asset");
     CarGUIUtils.Splitter();
     EditorGUILayout.Space();
     EditorGUILayout.LabelField("Number of spheres: ", btAsset_.LeafSpheres.Length.ToString());
 }
Example #8
0
        //-----------------------------------------------------------------------------------
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable);

            EditorGUI.BeginDisabledGroup(!isEditable);
            {
                RenderFieldObjects("ObjectsA", FieldControllerA, true, true, CNFieldWindow.Type.extended);
                RenderFieldObjects("ObjectsB", FieldControllerB, true, true, CNFieldWindow.Type.extended);

                EditorGUILayout.Space();
                EditorGUILayout.Space();

                if (GUILayout.Button(Data.NeedsUpdate ? "Create/Recreate(*)" : "Create/Recreate", GUILayout.Height(30f)))
                {
                    RecreateEntities();
                }
            }
            EditorGUI.EndDisabledGroup();

            CarGUIUtils.DrawSeparator();
            CarGUIUtils.Splitter();

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

            float originalLabelwidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 200f;
            bool currentMode = EditorGUIUtility.wideMode;

            EditorGUIUtility.wideMode = true;

            EditorGUI.BeginDisabledGroup(!isEditable);

            EditorGUILayout.Space();
            EditorGUILayout.Space();
            DrawTargetExternalLocal();
            EditorGUILayout.Space();

            EditorGUI.BeginChangeCheck();
            RenderCreationParams();
            if (EditorGUI.EndChangeCheck() && eManager.IsServosCreated(Data))
            {
                DestroyEntities();
            }

            CarGUIUtils.Splitter();
            EditorGUILayout.Space();

            RenderEditParams();

            EditorGUIUtility.labelWidth = originalLabelwidth;
            EditorGUIUtility.wideMode   = currentMode;

            EditorGUI.EndDisabledGroup();
            EditorGUILayout.EndScrollView();
            GUILayout.EndArea();
        } // RenderGUI
Example #9
0
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable, false, false);

            EditorGUI.BeginDisabledGroup(!isEditable);
            RenderFieldObjects("Objects", FieldController, true, true, CNFieldWindow.Type.normal);

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Weld", GUILayout.Height(30f)))
            {
                Weld();
            }
            if (GUILayout.Button("Save asset...", GUILayout.Height(30f), GUILayout.Width(100f)))
            {
                SaveWeldResult();
            }
            EditorGUILayout.EndHorizontal();

            EditorGUI.EndDisabledGroup();
            CarGUIUtils.DrawSeparator();

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            float originalLabelwidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 200f;

            CarGUIUtils.Splitter();
            GUIStyle centerLabel = new GUIStyle(EditorStyles.largeLabel);

            centerLabel.alignment = TextAnchor.MiddleCenter;
            centerLabel.fontStyle = FontStyle.Bold;
            EditorGUILayout.LabelField("Output", centerLabel);

            EditorGUI.BeginDisabledGroup(Data.WeldGameObject == null);

            EditorGUILayout.Space();

            DrawOutputButton();

            EditorGUILayout.Space();

            EditorGUI.EndDisabledGroup();

            EditorGUIUtility.labelWidth = originalLabelwidth;

            EditorGUILayout.EndScrollView();

            GUILayout.EndArea();
        } // RenderGUI
Example #10
0
        //-----------------------------------------------------------------------------------
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable);

            EditorGUI.BeginDisabledGroup(!isEditable);
            RenderFieldObjects("Objects", FieldController, true, true, CNFieldWindow.Type.extended);
            EditorGUI.EndDisabledGroup();
            EditorGUILayout.Space();

            CarGUIUtils.DrawSeparator();

            EditorGUILayout.Space();
            Data.SimulationScript = (CarSimulationScript)EditorGUILayout.ObjectField("Script asset instance", Data.SimulationScript, typeof(CarSimulationScript), true);

            if (Data.SimulationScript == null)
            {
                EditorGUILayout.Space();
                selectedTypeIdx_ = EditorGUILayout.Popup("Script asset type", selectedTypeIdx_, simulationScriptNames_);
                if (GUILayout.Button("Create new script asset"))
                {
                    var asset = ScriptableObject.CreateInstance(simulationScriptTypes_[selectedTypeIdx_]);

                    string path = EditorUtility.SaveFilePanelInProject("CaronteFX - Script Instance", simulationScriptNames_[selectedTypeIdx_], "asset", "");
                    if (path != string.Empty)
                    {
                        AssetDatabase.CreateAsset(asset, path);

                        AssetDatabase.SaveAssets();
                        AssetDatabase.Refresh();

                        Data.SimulationScript = asset;
                        EditorUtility.SetDirty(Data);
                    }
                }
            }


            CarGUIUtils.Splitter();
            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            RefreshSimulationScript();

            if (simulationScriptEditor_ != null && simulationScript_ != null)
            {
                simulationScriptEditor_.OnInspectorGUI();
            }

            EditorGUILayout.EndScrollView();
            GUILayout.EndArea();
        }
Example #11
0
        //----------------------------------------------------------------------------------
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable);

            EditorGUI.BeginDisabledGroup(!isEditable);
            RenderFieldObjects("Scope", FieldController, true, true, CNFieldWindow.Type.normal);
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            CarGUIUtils.DrawSeparator();
            CarGUIUtils.Splitter();

            EditorGUILayout.Space();
            GUILayout.EndArea();
        }
        //----------------------------------------------------------------------------------
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable, true, false);

            EditorGUI.BeginDisabledGroup(!isEditable);

            RenderFieldObjects("Bodies", FieldController, true, true, CNFieldWindow.Type.extended);

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            CarGUIUtils.DrawSeparator();
            CarGUIUtils.Splitter();

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            Data.Timer        = EditorGUILayout.FloatField("Timer (s)", Data.Timer);
            Data.TimeDuration = EditorGUILayout.FloatField("Duration (s)", Data.TimeDuration);

            EditorGUILayout.Space();

            Data.Multiplier_r = EditorGUILayout.FloatField("Position multiplier", Data.Multiplier_r);
            Data.Multiplier_q = EditorGUILayout.FloatField("Rotation multiplier", Data.Multiplier_q);

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            RenderFieldObjects("Target objects", FieldControllerAimGameObjects, true, false, CNFieldWindow.Type.normal);

            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            EditorGUILayout.EndScrollView();

            GUILayout.EndArea();
        }
Example #13
0
        //----------------------------------------------------------------------------------
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable, true, false);

            EditorGUI.BeginDisabledGroup(!isEditable);

            RenderFieldObjects("Bodies", FieldController, true, true, CNFieldWindow.Type.extended);

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            CarGUIUtils.DrawSeparator();
            CarGUIUtils.Splitter();

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            DrawTimer();

            EditorGUILayout.Space();

            DrawSpeedRate();
            DrawReleaseThreshold();

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            RenderFieldObjects("Target objects", FieldControllerAimGameObjects, true, false, CNFieldWindow.Type.normal);

            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            EditorGUILayout.EndScrollView();

            GUILayout.EndArea();
        }
        //----------------------------------------------------------------------------------
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable, true, false);
            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

            EditorGUI.BeginDisabledGroup(!isEditable);

            RenderFieldObjects("Bodies A", FieldControllerA, true, false, CNFieldWindow.Type.extended);
            RenderFieldObjects("Bodies B", FieldControllerB, true, false, CNFieldWindow.Type.extended);

            EditorGUILayout.Space();
            CarGUIUtils.Splitter();

            float originalLabelWidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 200f;

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            RenderFieldObjects("Attentive Nodes", FieldController, true, false, CNFieldWindow.Type.extended);
            EditorGUILayout.Space();
            CarGUIUtils.Splitter();
            EditorGUILayout.Space();
            DrawTriggeringMode();
            EditorGUILayout.Space();
            DrawSpeedMinN();
            DrawSpeedMinT();
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            EditorGUIUtility.labelWidth = originalLabelWidth;

            EditorGUILayout.EndScrollView();

            GUILayout.EndArea();
        }
    public void RenderStatistics()
    {
      GUIStyle styleStats = new GUIStyle(EditorStyles.miniBoldLabel);
      styleStats.normal.textColor = Color.blue;
      
      EditorGUILayout.LabelField("Statistics: ");

      Rect rect = GUILayoutUtility.GetRect(new GUIContent("Stats: "), EditorStyles.label );
      Rect testRect = new Rect(rect.xMin, rect.yMin, 110, 1);
      CarGUIUtils.Splitter( Color.black, testRect);

      uint built_nRigids_   = statistics_.built_nRigids_;
      uint built_nBodyMesh_ = statistics_.built_nBodyMesh_;
      uint built_nSoftbody_ = statistics_.built_nSoftbodies_;
      uint build_nCloth_    = statistics_.built_nCloth_;

      string nrigid        = built_nRigids_.ToString();
      string nirresponsive = built_nBodyMesh_.ToString();
      string nsoftbody     = built_nSoftbody_.ToString();
      string ncloth        = build_nCloth_.ToString();
      string nCorpuscles   = nCorpuscles_.ToString();

      EditorGUILayout.LabelField("RigidBodies: ",  nrigid,        styleStats );
      EditorGUILayout.LabelField("Irresponsive: ", nirresponsive, styleStats );
      EditorGUILayout.LabelField("SoftBodies: ",   nsoftbody,     styleStats );
      EditorGUILayout.LabelField("ClothBodies: ",  ncloth,        styleStats );
      EditorGUILayout.LabelField("Corpuscles: ",   nCorpuscles,   styleStats  );
      
      EditorGUILayout.Space();

      EditorGUILayout.LabelField("Joints: ", statistics_.jointGroupsInf_.nJoints_.ToString(), styleStats );
      EditorGUILayout.LabelField("Servos: ", statistics_.nServos_.ToString(), styleStats );

      GUILayout.FlexibleSpace();

      DrawTimers( styleStats );
      EditorGUILayout.Space();
      EditorGUILayout.Space();
      EditorGUILayout.Space();
    }
        //----------------------------------------------------------------------------------
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable, true, false);

            EditorGUI.BeginDisabledGroup(!isEditable);

            RenderFieldObjects("Bodies A", FieldControllerA, true, false, CNFieldWindow.Type.extended);
            RenderFieldObjects("Bodies B", FieldControllerB, true, false, CNFieldWindow.Type.extended);

            EditorGUILayout.Space();
            CarGUIUtils.Splitter();

            float originalLabelWidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 200f;
            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

            //EditorGUILayout.Space();
            //DrawEmitMode();
            EditorGUILayout.Space();
            DrawMaxNumberOfEventsPerSecond();
            EditorGUILayout.Space();
            DrawRelativeSpeedMin_N();
            DrawRelativeSpeedMin_T();
            //EditorGUILayout.Space();
            //DrawRelativeMomentumMin_N();
            //DrawRelativeMomentumMin_T();
            //EditorGUILayout.Space();
            //DrawLifeTimeMin();
            //DrawCollapseRadius();

            EditorGUILayout.EndScrollView();

            EditorGUIUtility.labelWidth = originalLabelWidth;

            GUILayout.EndArea();
        }
Example #17
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();
        }
Example #18
0
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable, true, false);

            EditorGUI.BeginDisabledGroup(!isEditable);
            RenderFieldObjects("Bodies", FieldController, true, true, CNFieldWindow.Type.extended);

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            CarGUIUtils.DrawSeparator();
            CarGUIUtils.Splitter();

            EditorGUILayout.Space();
            EditorGUILayout.Space();
            bool currentMode = EditorGUIUtility.wideMode;

            EditorGUIUtility.wideMode = true;
            DrawTimer();
            EditorGUILayout.Space();

            DrawIsRepulsorVsAttractor();
            EditorGUILayout.Space();
            DrawIsForceVsAcceleration();
            DrawMagnitude();
            DrawRadius();
            DrawDecay();
            EditorGUILayout.Space();
            DrawAttractorGameObject();

            EditorGUIUtility.wideMode = currentMode;

            EditorGUILayout.Space();
            EditorGUI.EndDisabledGroup();
            GUILayout.EndArea();
        }
Example #19
0
        //----------------------------------------------------------------------------------
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable, true, false);

            EditorGUI.BeginDisabledGroup(!isEditable);
            RenderFieldObjects("Bodies", FieldController, true, true, CNFieldWindow.Type.extended);
            RenderFieldObjects("Locators", FieldControllerLocators, true, true, CNFieldWindow.Type.normal);

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            CarGUIUtils.DrawSeparator();
            CarGUIUtils.Splitter();

            EditorGUILayout.Space();
            EditorGUILayout.Space();
            bool currentMode = EditorGUIUtility.wideMode;

            EditorGUIUtility.wideMode = true;
            DrawTimer();
            EditorGUILayout.Space();
            DrawForce();
            DrawSpeedLimit();
            EditorGUILayout.Space();
            DrawForceDeltaMax();
            DrawAngleDeltaMax();
            EditorGUILayout.Space();
            DrawPeriodTime();
            DrawPeriodSpace();
            EditorGUIUtility.wideMode = currentMode;

            EditorGUILayout.Space();
            EditorGUI.EndDisabledGroup();
            GUILayout.EndArea();
        }
Example #20
0
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);
            RenderTitle(isEditable, true, true, true);

            EditorGUI.BeginDisabledGroup(!isEditable);
            RenderFieldObjects("Bodies", FieldController, true, true, CNFieldWindow.Type.extended);
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            CarGUIUtils.DrawSeparator();
            CarGUIUtils.Splitter();

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

            bool currentMode = EditorGUIUtility.wideMode;

            EditorGUIUtility.wideMode = true;

            EditorGUI.BeginDisabledGroup(!isEditable);
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            DrawTimer();

            EditorGUILayout.Space();
            EditorGUI.BeginChangeCheck();
            DrawExplosionTransform();
            EditorGUILayout.Space();

            DrawResolution();
            DrawWavefronteSpeed();
            DrawRange();
            DrawDecay();
            DrawMomentum();

            EditorGUILayout.Space();
            DrawObjectsLimitSpeed();

            EditorGUILayout.Space();
            DrawAsymmetry();
            CarGUIUtils.Splitter();
            EditorGUILayout.Space();
            EditorGUI.BeginDisabledGroup(!Data.Asymmetry);
            DrawAsymmetryRandomSeed();
            DrawAsymmetryBumpNumber();
            DrawAsymmetryAdditionalSpeedRatio();
            EditorGUI.EndDisabledGroup();

            if (EditorGUI.EndChangeCheck())
            {
                ApplyEntity();
                EditorUtility.SetDirty(Data);
            }

            EditorGUI.EndDisabledGroup();

            EditorGUIUtility.wideMode = currentMode;

            EditorGUILayout.Space();
            EditorGUILayout.EndScrollView();
            GUILayout.EndArea();
        }
Example #21
0
        //-----------------------------------------------------------------------------------
        private void RenderEditParams()
        {
            EditorGUILayout.Space();

            EditorGUI.BeginDisabledGroup(unlimitedAction_);

            if (!Data.IsLinearOrAngular)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUI.BeginDisabledGroup(Data.MaximumAngle);
                DrawMaxAngle();
                EditorGUI.EndDisabledGroup();
                DrawMaximumAngle();
                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.BeginHorizontal();
            EditorGUI.BeginDisabledGroup(Data.MaximumSpeed);
            DrawSpeedMax();
            EditorGUI.EndDisabledGroup();
            DrawMaximumSpeed();
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            EditorGUI.BeginDisabledGroup(Data.MaximumPower);
            DrawPowerMax();
            EditorGUI.EndDisabledGroup();
            DrawMaximumPower();
            EditorGUILayout.EndHorizontal();

            string fieldNameForce;
            string fieldNameBrakeForce;

            GetForceFieldNames(out fieldNameForce, out fieldNameBrakeForce);

            EditorGUILayout.BeginHorizontal();
            EditorGUI.BeginDisabledGroup(Data.MaximumForce);
            DrawForceMax(fieldNameForce);
            EditorGUI.EndDisabledGroup();
            DrawMaximumForce();
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            EditorGUI.BeginDisabledGroup(Data.MaximumBrakePowerMax);
            BrakePowerMax();
            EditorGUI.EndDisabledGroup();
            DrawMaximumBrakePowerMax();
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            EditorGUI.BeginDisabledGroup(Data.MaximumBrakeForceMax);
            DrawBrakeForceMax(fieldNameBrakeForce);
            EditorGUI.EndDisabledGroup();
            DrawMaximumBrakeForce();
            EditorGUILayout.EndHorizontal();


            EditorGUILayout.Space();
            DrawDampingForce();
            CarGUIUtils.Splitter();
            EditorGUILayout.Space();

            Data.MultiplierFoldOut = EditorGUILayout.Foldout(Data.MultiplierFoldOut, "Power/force multiplier depending on distance");

            if (Data.MultiplierFoldOut)
            {
                GUILayout.Space(10f);
                DrawDistanceFunction();
                DrawDistanceRange();
                DrawMultiplierRange();
            }

            CarGUIUtils.Splitter();
            EditorGUILayout.Space();

            EditorGUI.EndDisabledGroup();

            Data.BreakFoldout = EditorGUILayout.Foldout(Data.BreakFoldout, "Break");

            if (Data.BreakFoldout)
            {
                GUILayout.Space(10f);

                DrawBreakIfDistExceeded();
                EditorGUI.BeginDisabledGroup(!Data.IsBreakIfDist);
                DrawBreakDistance();
                EditorGUI.EndDisabledGroup();

                DrawBreakIfAngle();
                EditorGUI.BeginDisabledGroup(!Data.IsBreakIfAng);
                DrawBreakAngle();
                EditorGUI.EndDisabledGroup();
            }

            CarGUIUtils.Splitter();
            EditorGUILayout.Space();
        }
Example #22
0
        void OnGUI()
        {
            Rect effectsArea = new Rect(5, 5, width_ - 10, (height_ - 10) * 0.9f);

            GUILayout.BeginArea(effectsArea, GUI.skin.box);
            EditorGUILayout.BeginHorizontal();
            {
                GUIStyle styleTitle = new GUIStyle(GUI.skin.label);
                styleTitle.fontStyle = FontStyle.Bold;
                GUILayout.Label("Scene FXs:", styleTitle);
            }
            EditorGUILayout.EndHorizontal();

            CarGUIUtils.Splitter();
            EditorGUILayout.Space();


            scrollPos_ = GUILayout.BeginScrollView(scrollPos_);
            {
                for (int i = 0; i < listCaronteFx_.Count; i++)
                {
                    Caronte_Fx fx            = listCaronteFx_[i].First;
                    bool       cannotBeAdded = listCaronteFx_[i].Fourth;
                    if (fx != cnManager_.FxData)
                    {
                        GUILayout.BeginHorizontal();
                        {
                            string name = fx.name;
                            if (cannotBeAdded)
                            {
                                name += " - (Recursive inclusion detected)";
                            }
                            EditorGUI.BeginDisabledGroup(cannotBeAdded);
                            arrEffectsToInclude[i] = EditorGUILayout.ToggleLeft(name, arrEffectsToInclude[i]);
                            EditorGUI.EndDisabledGroup();
                        }
                        GUILayout.EndHorizontal();
                    }
                }
            }
            GUILayout.EndScrollView();

            GUILayout.EndArea();
            Rect buttonsArea = new Rect(effectsArea.xMin, effectsArea.yMax, width_ - 10, (height_ - 10) * 0.1f);

            GUILayout.BeginArea(buttonsArea);
            {
                EditorGUILayout.Space();
                GUILayout.BeginHorizontal();
                {
                    GUILayout.FlexibleSpace();
                    if (GUILayout.Button("Ok", GUILayout.Width(165f)))
                    {
                        Close();
                        ModifyInclusions();
                    }
                    GUILayout.FlexibleSpace();
                    if (GUILayout.Button("Cancel", GUILayout.Width(165f)))
                    {
                        Close();
                    }
                    GUILayout.FlexibleSpace();
                }
                GUILayout.EndHorizontal();
            }
            GUILayout.EndArea();
        }
Example #23
0
        //-----------------------------------------------------------------------------------
        protected override void RenderFieldsBody(bool isEditable)
        {
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            CarGUIUtils.DrawSeparator();
            CarGUIUtils.Splitter();

            float originalLabelWidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = label_width;

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);
            EditorGUI.BeginDisabledGroup(!isEditable);
            EditorGUILayout.Space();
            DrawDoCollide();
            EditorGUILayout.Space();


            if (Data.IsFiniteMass)
            {
                DrawGUIMassOptions();
                DrawIsShell();
            }

            GUILayout.Space(simple_space);

            DrawRestitution();
            DrawFrictionKinetic();

            GUILayout.BeginHorizontal();
            EditorGUI.BeginDisabledGroup(Data.FromKinetic);
            DrawFrictionStatic();
            EditorGUI.EndDisabledGroup();
            DrawFrictionStaticFromKinetic();
            GUILayout.EndHorizontal();

            GUILayout.Space(simple_space);

            if (Data.IsFiniteMass)
            {
                DrawDampingPerSecondWorld();
            }

            GUILayout.Space(simple_space);
            bool currentMode = EditorGUIUtility.wideMode;

            EditorGUIUtility.wideMode = true;

            DrawLinearVelocity();
            DrawAngularVelocity();

            EditorGUILayout.Space();
            CarGUIUtils.Splitter();
            EditorGUILayout.Space();

            DrawExplosionOpacity();

            if (Data.IsFiniteMass)
            {
                DrawExplosionResponsiveness();
            }

            CarGUIUtils.Splitter();
            EditorGUILayout.Space();

            EditorGUIUtility.labelWidth = originalLabelWidth;
            EditorGUIUtility.wideMode   = currentMode;

            EditorGUI.EndDisabledGroup();

            EditorGUILayout.EndScrollView();
        }
Example #24
0
        //-----------------------------------------------------------------------------------
        protected override void RenderFieldsBody(bool isEditable)
        {
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            CarGUIUtils.DrawSeparator();
            CarGUIUtils.Splitter();

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

            EditorGUILayout.Space();
            float originalLabelWidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 180f;

            EditorGUI.BeginDisabledGroup(!isEditable);
            {
                DrawDoCollide();
                DrawDoAutocollide();
                EditorGUILayout.Space();

                DrawGUIMassOptions();
                DrawIsShell();

                GUILayout.Space(simple_space);
                DrawResolution();
                GUILayout.Space(simple_space);
                DrawLengthStiffness();
                DrawVolumeStiffness();
                GUILayout.Space(simple_space);
                DrawDampingPerSecondCM();
                GUILayout.Space(simple_space);

                CarGUIUtils.Splitter();
                EditorGUILayout.Space();

                EditorGUILayout.BeginHorizontal();
                DrawPlasticityFoldout();
                EditorGUI.BeginDisabledGroup(!isEditable);
                {
                    DrawPlasticity();
                    EditorGUILayout.EndHorizontal();

                    if (Data.PlasticityFoldout)
                    {
                        EditorGUILayout.Space();
                        EditorGUI.BeginDisabledGroup(!Data.Plasticity);
                        DrawThreshold();
                        DrawAcquired();
                        DrawCompressionLimit();
                        DrawExpansionLimit();
                        EditorGUI.EndDisabledGroup();
                    }
                }
                EditorGUI.EndDisabledGroup();

                CarGUIUtils.Splitter();
                GUILayout.Space(simple_space);

                DrawRestitution();
                DrawFrictionKinetic();

                GUILayout.BeginHorizontal();
                EditorGUI.BeginDisabledGroup(Data.FromKinetic);
                DrawFrictionStatic();
                EditorGUI.EndDisabledGroup();
                DrawFrictionStaticFromKinetic();
                GUILayout.EndHorizontal();

                GUILayout.Space(simple_space);
                DrawDampingPerSecondWorld();
                GUILayout.Space(simple_space);

                bool currentMode = EditorGUIUtility.wideMode;
                EditorGUIUtility.wideMode = true;
                DrawLinearVelocity();
                DrawAngularVelocity();
                EditorGUIUtility.wideMode = currentMode;
            }
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Space();
            CarGUIUtils.Splitter();
            EditorGUILayout.Space();

            EditorGUI.BeginDisabledGroup(!isEditable);
            {
                DrawExplosionOpacity();
                DrawExplosionResponsiveness();
            }
            EditorGUI.EndDisabledGroup();

            EditorGUIUtility.labelWidth = originalLabelWidth;

            EditorGUILayout.Space();
            EditorGUILayout.EndScrollView();
        }
Example #25
0
        //-----------------------------------------------------------------------------------
        protected override void RenderFieldsBody(bool isEditable)
        {
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            CarGUIUtils.DrawSeparator();
            CarGUIUtils.Splitter();

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

            EditorGUILayout.Space();
            float originalLabelWidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 180f;

            EditorGUI.BeginDisabledGroup(!isEditable);
            {
                DrawDoCollide();
                DrawDoAutocollide();
                DrawDisableCollisionsAtJoints();
                EditorGUILayout.Space();

                DrawGUIMassOptions();

                GUILayout.Space(simple_space);
                DrawCollisionRadius();
                DrawSafeModeIntegration();
                if (CarVersionChecker.IsPremiumVersion())
                {
                    DrawClothGrouping();
                }

                GUILayout.Space(simple_space);
                DrawBendStiffness();
                DrawStretchStiffness();
                GUILayout.Space(simple_space);
                DrawDampingBend();
                DrawDampingStretch();
                GUILayout.Space(simple_space);

                CarGUIUtils.Splitter();
                GUILayout.Space(simple_space);

                DrawRestitution();
                DrawFrictionKinetic();

                GUILayout.BeginHorizontal();
                EditorGUI.BeginDisabledGroup(Data.FromKinetic);
                DrawFrictionStatic();
                EditorGUI.EndDisabledGroup();
                DrawFrictionStaticFromKinetic();
                GUILayout.EndHorizontal();

                GUILayout.Space(simple_space);
                DrawDampingPerSecondWorld();
                GUILayout.Space(simple_space);

                bool currentMode = EditorGUIUtility.wideMode;
                EditorGUIUtility.wideMode = true;
                DrawLinearVelocity();
                DrawAngularVelocity();

                CarGUIUtils.Splitter();
                GUILayout.Space(simple_space);
                DrawExplosionOpacity();
                DrawExplosionResponsiveness();
                EditorGUIUtility.wideMode = currentMode;
            }
            EditorGUI.EndDisabledGroup();

            CarGUIUtils.Splitter();
            EditorGUILayout.Space();

            EditorGUIUtility.labelWidth = originalLabelWidth;

            EditorGUILayout.Space();
            EditorGUILayout.EndScrollView();
        }
Example #26
0
        //-----------------------------------------------------------------------------------
        protected void RenderTitle(bool isEditable, bool drawEnabledToggle = true, bool drawVisibleToggle = true, bool isDebugRender = false)
        {
            currentFocusedControlName_ = GUI.GetNameOfFocusedControl();

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

            string title;

            if (Data.NeedsUpdate)
            {
                title = Data.Name + "(*)";
            }
            else
            {
                title = Data.Name;
            }

            GUILayout.Space(5f);
            Rect iconRect = GUILayoutUtility.GetRect(30f, 30f);

            GUI.Label(iconRect, new GUIContent(TexIcon));
            EditorGUI.BeginDisabledGroup(!IsEnabledInHierarchy);
            GUILayout.Label(new GUIContent(title), styleTitle);
            EditorGUI.EndDisabledGroup();

            GUILayout.FlexibleSpace();

            EditorGUILayout.BeginVertical();
            EditorGUILayout.Space();

            EditorGUI.BeginChangeCheck();

            EditorGUI.BeginDisabledGroup(!(isEditable));
            float width = ((Enabled == IsEnabledInHierarchy) && (Visible == IsVisibleInHierarchy)) ? 100f : 170f;

            if (drawEnabledToggle)
            {
                GUIContent nameEnabledCt = (Enabled == IsEnabledInHierarchy) ? enabledToggleCt_ : enabledToggleOverridenCt_;
                Enabled = EditorGUILayout.ToggleLeft(nameEnabledCt, Data.IsNodeEnabled, GUILayout.Width(width));
            }
            EditorGUI.EndDisabledGroup();

            EditorGUI.BeginDisabledGroup(!(isEditable || isDebugRender));
            if (drawVisibleToggle)
            {
                GUIContent nameVisibleCt = (Visible == IsVisibleInHierarchy) ? visibleToggleCt_ : visibleToggleOverridenCt_;
                Visible = EditorGUILayout.ToggleLeft(nameVisibleCt, Data.IsNodeVisible, GUILayout.Width(width));
            }
            EditorGUI.EndDisabledGroup();

            if (EditorGUI.EndChangeCheck())
            {
                SceneView.RepaintAll();
            }

            EditorGUILayout.EndVertical();
            GUILayout.EndHorizontal();

            CarGUIUtils.Splitter();

            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
        }
        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();
        }
Example #28
0
        //-----------------------------------------------------------------------------------
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable, true, true, true);

            EditorGUI.BeginDisabledGroup(!isEditable);
            {
                RenderFieldObjects(jgObjectsAFieldCt_, FieldControllerA, true, true, CNFieldWindow.Type.extended);
                RenderFieldObjects(jgObjectsBFieldCt_, FieldControllerB, true, true, CNFieldWindow.Type.extended);

                EditorGUILayout.Space();
                EditorGUILayout.Space();

                if (GUILayout.Button(Data.NeedsUpdate ? CarStringManager.GetString("CreateRecreate*") : CarStringManager.GetString("CreateRecreate"), GUILayout.Height(30f)))
                {
                    RecreateEntities();
                }
            }
            EditorGUI.EndDisabledGroup();

            CarGUIUtils.DrawSeparator();
            CarGUIUtils.Splitter();

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

            float originalLabelwidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 200f;

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            EditorGUI.BeginDisabledGroup(!isEditable);
            {
                EditorGUI.BeginChangeCheck();
                {
                    RenderCreationParams();
                }
                if (EditorGUI.EndChangeCheck() && eManager.IsMultiJointCreated(Data))
                {
                    DestroyEntities();
                }

                EditorGUILayout.Space();

                CarGUIUtils.Splitter();
                EditorGUILayout.Space();

                //FORCES
                EditorGUI.BeginChangeCheck();
                EditorGUILayout.BeginHorizontal();
                EditorGUI.BeginDisabledGroup(MaximumForce);
                DrawForceMax();
                EditorGUI.EndDisabledGroup();
                DrawMaximumForce();
                EditorGUILayout.EndHorizontal();
                EditorGUI.BeginDisabledGroup(MaximumForce);
                DrawForceMaxRand();
                DrawForceRange();
                DrawForceProfile();
                EditorGUI.EndDisabledGroup();
            }
            EditorGUI.EndDisabledGroup();

            CarGUIUtils.Splitter();
            EditorGUILayout.Space();

            //BREAK
            EditorGUILayout.BeginHorizontal();
            Data.BreakFoldout = EditorGUILayout.Foldout(Data.BreakFoldout, "Break if distance exceeded");

            EditorGUI.BeginDisabledGroup(!isEditable);
            {
                GUILayout.Space(145f);
                DrawBreakIfDistanceExceeded();
                GUILayout.FlexibleSpace();
                EditorGUILayout.EndHorizontal();
                {
                    if (Data.BreakFoldout)
                    {
                        EditorGUILayout.Space();
                        EditorGUI.BeginDisabledGroup(!Data.BreakIfDistExcedeed);
                        DrawDistanceForBreak();
                        DrawDistanceForBreakRand();
                        EditorGUI.EndDisabledGroup();
                        DrawEnableCollisionIfBreak();
                    }
                }
            }
            EditorGUI.EndDisabledGroup();

            CarGUIUtils.Splitter();
            EditorGUILayout.Space();

            //PLASTICITY
            EditorGUILayout.BeginHorizontal();
            Data.PlasticityFoldout = EditorGUILayout.Foldout(Data.PlasticityFoldout, "Plasticity");

            EditorGUI.BeginDisabledGroup(!isEditable);
            {
                GUILayout.Space(145f);
                DrawPlasticity();
                GUILayout.FlexibleSpace();
                EditorGUILayout.EndHorizontal();

                if (Data.PlasticityFoldout)
                {
                    EditorGUILayout.Space();

                    EditorGUI.BeginDisabledGroup(!Data.Plasticity);
                    DrawDistanceForPlasticity();
                    DrawDistanceForPlasticityRand();
                    DrawPlasticityRateAcquired();
                    EditorGUI.EndDisabledGroup();
                }
            }
            EditorGUI.EndDisabledGroup();

            CarGUIUtils.Splitter();
            EditorGUIUtility.labelWidth = originalLabelwidth;

            EditorGUILayout.EndScrollView();
            GUILayout.EndArea();
        } // RenderGUI
Example #29
0
        //----------------------------------------------------------------------------------
        protected override void RenderFieldsBody(bool isEditable)
        {
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            CarGUIUtils.DrawSeparator();
            CarGUIUtils.Splitter();

            float originalLabelWidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = label_width;

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);
            EditorGUI.BeginDisabledGroup(!isEditable);
            EditorGUILayout.Space();

            DrawDoCollide();
            EditorGUILayout.Space();

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            DrawAnimationTypeEnum();
            EditorGUILayout.Space();

            if (Data.AnimationType == CNAnimatedbody.EAnimationType.Animator)
            {
                DrawAnimationClip();
            }

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            DrawTimeStart();

            GUILayout.BeginHorizontal();
            DrawTimeLength();
            DrawTimeLengthReset();
            GUILayout.EndHorizontal();
            EditorGUILayout.Space();

            CarGUIUtils.Splitter();
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            DrawRestitution();
            DrawFrictionKinetic();

            GUILayout.BeginHorizontal();
            EditorGUI.BeginDisabledGroup(Data.FromKinetic);
            DrawFrictionStatic();
            EditorGUI.EndDisabledGroup();
            DrawFrictionStaticFromKinetic();
            GUILayout.EndHorizontal();

            CarGUIUtils.Splitter();
            EditorGUILayout.Space();

            DrawExplosionOpacity();
            CarGUIUtils.Splitter();
            EditorGUILayout.Space();

            EditorGUIUtility.labelWidth = originalLabelWidth;

            EditorGUI.EndDisabledGroup();
            EditorGUILayout.EndScrollView();
        }
        public void DrawRebake()
        {
            EditorGUI.BeginDisabledGroup(true);
            if (crAnimation_.animationFileType == CRAnimation.AnimationFileType.CRAnimationAsset)
            {
                EditorGUILayout.ObjectField("Active animation", crAnimation_.activeAnimation, typeof(CRAnimationAsset), true);
            }
            else if (crAnimation_.animationFileType == CRAnimation.AnimationFileType.TextAsset)
            {
                EditorGUILayout.ObjectField("Active animation", crAnimation_.activeAnimationText, typeof(TextAsset), true);
            }
            EditorGUI.EndDisabledGroup();

            EditorGUILayout.Space();

            float start = EditorGUILayout.IntField("Frame Start : ", trimFrameStart_);
            float end   = EditorGUILayout.IntField("Frame End   : ", trimFrameEnd_);

            EditorGUILayout.MinMaxSlider(new GUIContent("Frames:"), ref start, ref end, 0, trimFrameLast_);
            SetStartEndFrames((int)start, (int)end);

            EditorGUILayout.Space();

            EditorGUI.BeginDisabledGroup(true);
            int actualFrameStart = createLoopableBake_ ? trimFrameStart_ + transitionFrames_ : trimFrameStart_;

            EditorGUILayout.IntField("Actual frame start", actualFrameStart);
            EditorGUI.EndDisabledGroup();

            EditorGUI.BeginDisabledGroup(true);
            int actualFrameCount = createLoopableBake_ ? trimFrameEnd_ - trimFrameStart_ - transitionFrames_ : trimFrameEnd_ - trimFrameStart_;

            EditorGUILayout.IntField("Actual frame count", actualFrameCount);
            EditorGUI.EndDisabledGroup();

            EditorGUI.BeginDisabledGroup(true);
            EditorGUILayout.FloatField("Actual time", actualFrameCount * crAnimation_.FrameTime);
            EditorGUI.EndDisabledGroup();

            if (CarVersionChecker.IsPremiumVersion())
            {
                EditorGUILayout.Space();

                createLoopableBake_ = EditorGUILayout.Toggle("Create loop", createLoopableBake_);
                EditorGUI.BeginDisabledGroup(!createLoopableBake_);
                int frameCount    = trimFrameEnd_ - trimFrameStart_ + 1;
                int maxLoopFrames = frameCount / 2;
                transitionFrames_ = Mathf.Clamp(Mathf.Min(EditorGUILayout.IntField("Loop frames", transitionFrames_), maxLoopFrames), 0, int.MaxValue);
                EditorGUI.EndDisabledGroup();
            }

            EditorGUILayout.Space();
            vertexCompression_ = EditorGUILayout.Toggle("Vertex compression", vertexCompression_);

            EditorGUI.BeginDisabledGroup(!vertexCompression_);
            vertexCompressionIdx_ = EditorGUILayout.Popup("Compression mode", vertexCompressionIdx_, arrVertexCompressionModes_);
            EditorGUI.EndDisabledGroup();

            bool isFiberCompression = vertexCompression_ && vertexCompressionIdx_ == 1;

            EditorGUI.BeginDisabledGroup(isFiberCompression);
            saveTangents_ = EditorGUILayout.Toggle("Save tangents", saveTangents_);
            EditorGUI.EndDisabledGroup();

            alignData_ = EditorGUILayout.Toggle("Align data", alignData_);

            EditorGUI.BeginDisabledGroup(createLoopableBake_);
            bakeEvents_ = EditorGUILayout.Toggle("Bake events", bakeEvents_);
            EditorGUI.EndDisabledGroup();

            GUILayout.FlexibleSpace();
            CarGUIUtils.Splitter();

            if (GUILayout.Button("Rebake animation"))
            {
                if (trimFrameEnd_ <= trimFrameStart_)
                {
                    EditorUtility.DisplayDialog("CaronteFX - Invalid frames", "Frame End must be above Frame Start", "Ok");
                    return;
                }
                bool isTextAsset = crAnimation_.animationFileType == CRAnimation.AnimationFileType.TextAsset;
                RebakeClip(isTextAsset);
            }
        }