//----------------------------------------------------------------------------------
        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();
            CRGUIUtils.Splitter();

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

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

            EditorGUI.EndDisabledGroup();

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

            EditorGUILayout.EndScrollView();

            GUILayout.EndArea();
        }
Beispiel #2
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();

            CRGUIUtils.DrawSeparator();
            CRGUIUtils.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();
        }
Beispiel #3
0
    public void RenderStatistics()
    {
      GUIStyle styleStats = 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);
      CRGUIUtils.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();

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

      EditorGUILayout.LabelField("Joints: ", statistics_.jointGroupsInf_.nJoints_.ToString(), styleStats );
      EditorGUILayout.LabelField("Servos: ", statistics_.nServos_.ToString(), styleStats );
    }
        //----------------------------------------------------------------------------------
        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);

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

            EditorGUILayout.Space();

            EditorGUI.EndDisabledGroup();

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

            EditorGUILayout.EndScrollView();

            GUILayout.EndArea();
        }
Beispiel #5
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();
            CRGUIUtils.DrawSeparator();

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

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

            float originalLabelwidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 200f;

            CRGUIUtils.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();

            if (GUILayout.Button("Select welded object"))
            {
                Selection.activeGameObject = Data.WeldGameObject;
            }
            EditorGUILayout.Space();

            EditorGUI.EndDisabledGroup();

            EditorGUIUtility.labelWidth = originalLabelwidth;

            EditorGUILayout.EndScrollView();

            GUILayout.EndArea();
        } // RenderGUI
Beispiel #6
0
        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("Effect Scope", selectedScopeIdx_, scopeStrings);
            if (EditorGUI.EndChangeCheck())
            {
                ChangeScope((CNGroup.CARONTEFX_SCOPE)selectedScopeIdx_);
            }

            EditorGUI.EndDisabledGroup();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            if (GUILayout.Button(new GUIContent("Select scope GameObjects"), GUILayout.Height(30f)))
            {
                SceneSelection();
            }
            EditorGUIUtility.labelWidth = originalLabelwidth;

            CRGUIUtils.DrawSeparator();
            CRGUIUtils.Splitter();
            DrawEffectGUIWindow(isEditable);

            GUILayout.EndArea();
        }
Beispiel #7
0
        private void DrawEffectGUIWindow(bool isEditable)
        {
            tabIndex = GUILayout.SelectionGrid(tabIndex, tabNames, 2);
            CRGUIUtils.Splitter();

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

            EditorGUI.BeginDisabledGroup(!isEditable);

            EditorGUILayout.Space();

            #region General
            if (tabIndex == (int)tabType.General)
            {
                //TIME
                EditorGUILayout.BeginHorizontal();
                DrawTotalTime();
                DrawTotalTimeReset();
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.Space();

                //QUALITY
                DrawQuality();

                GUILayout.Space(20f);
                //ANTI-JITTERING
                DrawAntiJittering();

                GUILayout.Space(20f);
                //FRAMERATE
                DrawFrameRate();
            }
            #endregion

            #region Advanced
            else if (tabIndex == (int)tabType.Advanced)
            {
                EditorGUILayout.Space();
                DrawByUserDetalTime();
                GUILayout.Space(10f);
                DrawDeltaTime();
                GUILayout.Space(20f);
                DrawByUserCharacteristicObjectProperties();
                GUILayout.Space(10f);
                DrawThickness();
                DrawLength();
            }

            EditorGUILayout.Space();
            #endregion

            EditorGUILayout.Space();

            EditorGUI.EndDisabledGroup();

            EditorGUILayout.EndScrollView();
        }
Beispiel #8
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("Child/Brother includible FXs:", styleTitle);
            }
            EditorGUILayout.EndHorizontal();

            CRGUIUtils.Splitter();
            EditorGUILayout.Space();


            scrollPos_ = GUILayout.BeginScrollView(scrollPos_);
            {
                for (int i = 0; i < listCaronteFx_.Count; i++)
                {
                    Caronte_Fx fx = listCaronteFx_[i].First;
                    if (fx != Controller.FxData)
                    {
                        GUILayout.BeginHorizontal();
                        {
                            string name = fx.name;
                            arrEffectsToInclude[i] = EditorGUILayout.ToggleLeft(name, arrEffectsToInclude[i]);
                        }
                        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();
                {
                    if (GUILayout.Button("Ok"))
                    {
                        Close();
                        ModifyInclusions();
                    }
                    if (GUILayout.Button("Cancel"))
                    {
                        Close();
                    }
                }
                GUILayout.EndHorizontal();
            }
            GUILayout.EndArea();
        }
Beispiel #9
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();

            CRGUIUtils.DrawSeparator();
            CRGUIUtils.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();
            EditorGUI.BeginChangeCheck();
            RenderCreationParams();
            if (EditorGUI.EndChangeCheck() && eManager.IsServosCreated(Data))
            {
                DestroyEntities();
            }

            CRGUIUtils.Splitter();
            EditorGUILayout.Space();

            RenderEditParams();

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

            EditorGUI.EndDisabledGroup();
            EditorGUILayout.EndScrollView();
            GUILayout.EndArea();
        } // RenderGUI
Beispiel #10
0
        //----------------------------------------------------------------------------------
        protected override void RenderFieldsBody(bool isEditable)
        {
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            CRGUIUtils.DrawSeparator();
            CRGUIUtils.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();
            DrawAnimationClip();
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            DrawTimeStart();

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

            CRGUIUtils.Splitter();
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            DrawRestitution();
            DrawFrictionKinetic();

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

            EditorGUIUtility.labelWidth = originalLabelWidth;

            EditorGUI.EndDisabledGroup();
            EditorGUILayout.EndScrollView();
        }
 void DrawGUIGeometry()
 {
     DrawGUIUniform();
     EditorGUILayout.Space();
     CRGUIUtils.Splitter();
     EditorGUILayout.Space();
     EditorGUILayout.Space();
     DrawChopGeometry();
     DrawGridResolution();
     DrawFocusMode();
     DrawDensityRate();
     DrawTransitionLength();
 }
        void DrawGUIRadial()
        {
            DrawGlobalPattern();
            DrawSeed();
            DrawInteriorMaterial();
            EditorGUILayout.Space();
            DrawDoExtrussionEffect();
            DrawDoCoordinate();
            EditorGUILayout.Space();
            DrawHideParentObjectAuto();

            EditorGUILayout.Space();
            CRGUIUtils.Splitter();
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            DrawReferenceSystem();
            DrawReferenceSystemAxis();

            EditorGUILayout.Space();
            DrawRaysNumber();
            DrawRaysRateRand();

            EditorGUILayout.Space();
            CRGUIUtils.Splitter();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            DrawIntRadius();
            DrawRingsIntTransitionLength();
            DrawRingsIntTransitionDecay();

            EditorGUILayout.Space();
            DrawRingsExtRadius();
            DrawRingsExtTransitionLength();
            DrawRingsExtTransitionDecay();

            EditorGUILayout.Space();
            CRGUIUtils.Splitter();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            DrawRingsNumberInsideAnnulus();
            DrawRingsRateRand();
            DrawDoCentralPiece();
            EditorGUILayout.Space();
            DrawNoiseRate();
            DrawTwistRate();
        }
        //----------------------------------------------------------------------------------
        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();

            CRGUIUtils.DrawSeparator();
            CRGUIUtils.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();

            CRGUIUtils.DrawSeparator();
            CRGUIUtils.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();
        }
Beispiel #15
0
        //----------------------------------------------------------------------------------
        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();
            CRGUIUtils.Splitter();

            float originalLabelWidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 200f;

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

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

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

            EditorGUIUtility.labelWidth = originalLabelWidth;

            EditorGUILayout.EndScrollView();

            GUILayout.EndArea();
        }
        //----------------------------------------------------------------------------------
        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();
            CRGUIUtils.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();
        }
Beispiel #17
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();

            CRGUIUtils.DrawSeparator();
            CRGUIUtils.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();
        }
        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("Chop", GUILayout.Height(30f)))
            {
                Chop();
            }

            if (GUILayout.Button("Save assets..", GUILayout.Height(30f), GUILayout.Width(100f)))
            {
                SaveChopResult();
            }

            EditorGUILayout.EndHorizontal();

            EditorGUI.EndDisabledGroup();
            CRGUIUtils.DrawSeparator();
            CRGUIUtils.Splitter();

            tabIndex_ = GUILayout.SelectionGrid(tabIndex_, tabNames_, 2);
            CRGUIUtils.Splitter();

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

            if (tabIndex_ == 1)
            {
                EditorGUILayout.LabelField("Last chop input objects " + Data.InputObjects);
                EditorGUILayout.LabelField("Last chop input vertices: " + Data.InputVertices);
                EditorGUILayout.LabelField("Last chop input triangles: " + Data.InputTriangles);

                EditorGUILayout.Space();

                EditorGUILayout.LabelField("Last chop output pieces: " + Data.OutputPieces);
                EditorGUILayout.LabelField("Last chop output vertices: " + Data.OutputVertices);
                EditorGUILayout.LabelField("Last chop output triangles: " + Data.OutputTriangles);
            }
            else
            {
                EditorGUI.BeginDisabledGroup(!isEditable);

                float originalLabelwidth = EditorGUIUtility.labelWidth;
                EditorGUIUtility.labelWidth = 200f;

                EditorGUILayout.Space();

                switch (Data.ChopMode)
                {
                case CNFracture.CHOP_MODE.VORONOI_UNIFORM:
                    DrawGUIUniform();
                    break;

                case CNFracture.CHOP_MODE.VORONOI_BY_GEOMETRY:
                    DrawGUIGeometry();
                    break;

                case CNFracture.CHOP_MODE.VORONOI_RADIAL:
                    DrawGUIRadial();
                    break;
                }

                EditorGUILayout.Space();
                CRGUIUtils.Splitter();
                EditorGUILayout.Space();

                DrawCropGeometry();
                DrawCropMode();
                DrawWeldInOne();

                CRGUIUtils.Splitter();

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

                EditorGUI.BeginDisabledGroup(Data.GameObjectChoppedRoot == null);
                EditorGUI.BeginChangeCheck();

                EditorGUILayout.Space();

                if (GUILayout.Button("Select pieces"))
                {
                    Selection.activeGameObject = Data.GameObjectChoppedRoot;
                }

                DrawPushRate();
                DrawPushMultiplier();
                ValidateState();

                EditorGUI.EndDisabledGroup();

                EditorGUIUtility.labelWidth = originalLabelwidth;

                EditorGUI.EndDisabledGroup();
            }

            EditorGUILayout.EndScrollView();
            GUILayout.EndArea();
        }
        //-----------------------------------------------------------------------------------
        protected override void RenderFieldsBody(bool isEditable)
        {
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            CRGUIUtils.DrawSeparator();
            CRGUIUtils.Splitter();

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

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

            EditorGUIUtility.labelWidth = 180f;

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

                DrawGUIMassOptions();

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

                CRGUIUtils.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();

                CRGUIUtils.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();
            CRGUIUtils.Splitter();
            EditorGUILayout.Space();

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

            EditorGUIUtility.labelWidth = originalLabelWidth;

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

            RenderTitle(isEditable, true, false);

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

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

            EditorGUI.EndDisabledGroup();

            CRGUIUtils.DrawSeparator();
            CRGUIUtils.Splitter();

            EditorGUILayout.Space();

            EditorGUI.BeginDisabledGroup(!isEditable);
            List <ParameterModifierCommand> listPmCommand = Data.ListPmCommand;

            EditorGUILayout.Space();

            DrawTimer();

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

            EditorGUILayout.LabelField("Object parameters to modify: ");

            CRGUIUtils.Splitter();
            scroller_ = EditorGUILayout.BeginScrollView(scroller_);
            GUILayout.Space(10f);

            ParameterModifierCommand pmCommandToRemove = null;
            ParameterModifierCommand pmCommandToAdd    = null;
            int addPosition = 0;


            int nPmCommand = listPmCommand.Count;

            for (int i = 0; i < nPmCommand; i++)
            {
                ParameterModifierCommand pmCommand = listPmCommand[i];
                DrawPmCommand(i, pmCommand, ref pmCommandToRemove, ref pmCommandToAdd, ref addPosition);
            }

            if (pmCommandToRemove != null && listPmCommand.Count > 1)
            {
                Undo.RecordObject(Data, "Remove parameter - " + Data.Name);
                listPmCommand.Remove(pmCommandToRemove);
                pmCommandToRemove = null;
                EditorUtility.SetDirty(Data);
            }
            if (pmCommandToAdd != null)
            {
                Undo.RecordObject(Data, "Add parameter - " + Data.Name);
                listPmCommand.Insert(addPosition, pmCommandToAdd);
                pmCommandToAdd = null;
                EditorUtility.SetDirty(Data);
            }


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

            GUILayout.EndArea();
        }
Beispiel #21
0
        //-----------------------------------------------------------------------------------
        protected override void RenderFieldsBody(bool isEditable)
        {
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            CRGUIUtils.DrawSeparator();
            CRGUIUtils.Splitter();

            float originalLabelWidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = label_width;

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

            EditorGUI.BeginDisabledGroup(!Data.IsFiniteMass);
            DrawGUIMassOptions();
            EditorGUI.EndDisabledGroup();

            GUILayout.Space(simple_space);

            DrawRestitution();
            DrawFrictionKinetic();

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

            EditorGUI.BeginDisabledGroup(!Data.IsFiniteMass);

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

            bool currentMode = EditorGUIUtility.wideMode;

            EditorGUIUtility.wideMode = true;

            EditorGUI.EndDisabledGroup();

            DrawLinearVelocity();
            DrawAngularVelocity();

            EditorGUILayout.Space();
            CRGUIUtils.Splitter();
            EditorGUILayout.Space();

            DrawExplosionOpacity();

            EditorGUI.BeginDisabledGroup(!Data.IsFiniteMass);
            DrawExplosionResponsiveness();
            EditorGUI.EndDisabledGroup();

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

            EditorGUILayout.Space();
            EditorGUI.EndDisabledGroup();

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

            RenderTitle(isEditable, true, true, true);

            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();

            CRGUIUtils.DrawSeparator();
            CRGUIUtils.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();

                CRGUIUtils.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();

            CRGUIUtils.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();

            CRGUIUtils.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();

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

            EditorGUILayout.EndScrollView();
            GUILayout.EndArea();
        } // RenderGUI
Beispiel #24
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();

            CRGUIUtils.DrawSeparator();
            CRGUIUtils.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();
            CRGUIUtils.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();
        }
        public override void RenderGUI(Rect area, bool isEditable)
        {
            GUILayout.BeginArea(area);

            RenderTitle(isEditable, false, false);

            EditorGUI.BeginDisabledGroup(!isEditable);

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Create helper mesh", GUILayout.Height(30f)))
            {
                CreateHelperMesh();
            }

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

            EditorGUI.EndDisabledGroup();
            CRGUIUtils.DrawSeparator();

            scroller_ = EditorGUILayout.BeginScrollView(scroller_);

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

            float originalLabelwidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 200f;

            DrawRandomSeed();
            DrawResolution();
            DrawNBumps();
            DrawRadiusMin();
            DrawRadiusMax();

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

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

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

            EditorGUILayout.Space();

            if (GUILayout.Button("Select helper object"))
            {
                Selection.activeGameObject = Data.HelperGO;
            }
            EditorGUILayout.Space();

            EditorGUI.EndDisabledGroup();

            EditorGUIUtility.labelWidth = originalLabelwidth;

            EditorGUILayout.EndScrollView();

            GUILayout.EndArea();
        } // RenderGUI
        //-----------------------------------------------------------------------------------
        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(!Data.IsNodeEnabledInHierarchy);
            GUILayout.Label(new GUIContent(title), styleTitle);
            EditorGUI.EndDisabledGroup();

            GUILayout.FlexibleSpace();

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

            EditorGUI.BeginChangeCheck();

            EditorGUI.BeginDisabledGroup(!(isEditable));
            float width = ((Data.IsNodeEnabled == Data.IsNodeEnabledInHierarchy) && (Data.IsNodeVisible == Data.IsNodeVisibleInHierarchy)) ? 100f : 170f;

            if (drawEnabledToggle)
            {
                string nameEnabled = (Data.IsNodeEnabled == Data.IsNodeEnabledInHierarchy) ? "Enabled" : "Enabled (Overidden to off)";
                Enabled = EditorGUILayout.ToggleLeft(nameEnabled, Data.IsNodeEnabled, GUILayout.Width(width));
            }
            EditorGUI.EndDisabledGroup();

            EditorGUI.BeginDisabledGroup(!(isEditable || isDebugRender));
            if (drawVisibleToggle)
            {
                string nameVisible = (Data.IsNodeVisible == Data.IsNodeVisibleInHierarchy) ? "Visible" : "Visible (Overidden to off)";
                Visible = EditorGUILayout.ToggleLeft(nameVisible, Data.IsNodeVisible, GUILayout.Width(width));
            }
            EditorGUI.EndDisabledGroup();

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

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

            CRGUIUtils.Splitter();

            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
        }
Beispiel #27
0
        //-----------------------------------------------------------------------------------
        private void RenderEditParams()
        {
            DrawTargetExternalLocal();
            EditorGUILayout.Space();

            //Data.ReactionTime         = EditorGUILayout.FloatField( "Reaction time", Data.ReactionTime );
            //Data.OverreactionDelta    = EditorGUILayout.FloatField( "Overreaction delta", Data.OverreactionDelta );

            EditorGUILayout.Space();

            EditorGUI.BeginDisabledGroup(unlimitedAction_);

            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();
            CRGUIUtils.Splitter();
            EditorGUILayout.Space();

            Data.MultiplierFoldOut = EditorGUILayout.Foldout(Data.MultiplierFoldOut, "Multiplier depending on distance");

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

            CRGUIUtils.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();
            }

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

            EditorGUILayout.Space();

            DrawTimeLine();

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

            EditorGUILayout.BeginHorizontal();

            bool isSimulating            = player_.IsSimulating;
            bool isReplaying             = player_.IsReplaying;
            bool isSimulatingOrReplaying = isSimulating || isReplaying;

            GUILayout.Space(40f);

            #region Player
            EditorGUI.BeginDisabledGroup(!isSimulatingOrReplaying);

            EditorGUI.BeginDisabledGroup(player_.IsSimulating);
            if (GUILayout.Button(new GUIContent("", first_), EditorStyles.miniButton, buttonLayoutWidth, buttonLayoutHeight))
            {
                player_.frw();
            }
            if (GUILayout.Button(new GUIContent("", prev_), EditorStyles.miniButtonLeft, buttonLayoutWidth, buttonLayoutHeight))
            {
                player_.rw();
            }
            EditorGUI.EndDisabledGroup();

            EditorGUI.EndDisabledGroup();


            if (player_.IsSimulating)
            {
                EditorGUI.BeginDisabledGroup(player_.StopRequested);
                if (GUILayout.Button(new GUIContent("", stop_), EditorStyles.miniButtonMid, buttonLayoutWidth, buttonLayoutHeight))
                {
                    player_.stop();
                }
                EditorGUI.EndDisabledGroup();
            }
            else if (player_.IsReplaying)
            {
                if (player_.IsPause && !player_.UserPlaying)
                {
                    if (GUILayout.Button(new GUIContent("", play_), EditorStyles.miniButtonMid, buttonLayoutWidth, buttonLayoutHeight))
                    {
                        player_.play();
                    }
                }
                else
                {
                    if (GUILayout.Button(new GUIContent("", pause_), EditorStyles.miniButtonMid, buttonLayoutWidth, buttonLayoutHeight))
                    {
                        player_.pause();
                    }
                }
            }

            EditorGUI.BeginDisabledGroup(!isSimulatingOrReplaying);
            EditorGUI.BeginDisabledGroup(player_.IsSimulating);
            if (GUILayout.Button(new GUIContent("", next_), EditorStyles.miniButtonRight, buttonLayoutWidth, buttonLayoutHeight))
            {
                player_.fw();
            }

            if (GUILayout.Button(new GUIContent("", last_), EditorStyles.miniButton, buttonLayoutWidth, buttonLayoutHeight))
            {
                player_.ffw();
            }

            GUILayout.Space(10f);

            EditorGUI.BeginChangeCheck();
            player_.Loop = GUILayout.Toggle(player_.Loop, new GUIContent("", loop_), buttonStyle_, buttonLayoutWidth, buttonLayoutHeight);
            if (EditorGUI.EndChangeCheck())
            {
                player_.ResetUserPlaying();
            }

            EditorGUI.EndDisabledGroup();

            #endregion

            GUILayout.Space(47f);

            #region Statistics
            GUILayout.Label("Time: ", EditorStyles.miniLabel, GUILayout.Width(50f));
            GUILayout.Label(player_.Time.ToString("F2"), EditorStyles.miniLabel, GUILayout.Width(50f));
            GUILayout.Label("of ", EditorStyles.miniLabel);
            GUILayout.FlexibleSpace();
            GUILayout.Label(player_.MaxTimeString, EditorStyles.miniLabel);
            #endregion

            EditorGUILayout.EndHorizontal();

            EditorGUILayout.Space();
            EditorGUILayout.Space();
            CRGUIUtils.Splitter();
            EditorGUILayout.Space();

            EditorGUILayout.BeginHorizontal();

            GUILayout.Space(10f);

            GUIStyle style = new GUIStyle(EditorStyles.miniButton);
            style.alignment = TextAnchor.MiddleLeft;

            EditorGUI.BeginDisabledGroup(isSimulating);
            if (GUILayout.Button(new GUIContent(" Bake simulation", rec_), style, GUILayout.Width(135f), GUILayout.Height(25f)))
            {
                if (!CRBakeSimulationMenu.IsOpen)
                {
                    CRBakeSimulationMenu bakeSimMenu = ScriptableObject.CreateInstance <CRBakeSimulationMenu>();
                    bakeSimMenu.titleContent = new GUIContent("CaronteFX - Bake Simulation Menu");
                }
                CRBakeSimulationMenu.Instance.ShowUtility();
                CRBakeFrameMenu.CloseIfOpen();
            }

            if (GUILayout.Button(new GUIContent("Bake current frame", rec_), style, GUILayout.Width(135f), GUILayout.Height(25f)))
            {
                if (!CRBakeFrameMenu.IsOpen)
                {
                    CRBakeFrameMenu bakeFrameMenu = ScriptableObject.CreateInstance <CRBakeFrameMenu>();
                    bakeFrameMenu.titleContent = new GUIContent("CaronteFX - Bake Current Frame Menu");
                }
                CRBakeFrameMenu.Instance.ShowUtility();
                CRBakeSimulationMenu.CloseIfOpen();
            }
            EditorGUI.EndDisabledGroup();

            GUILayout.Space(10f);
            if (GUILayout.Button("Change to edit mode", EditorStyles.miniButton, GUILayout.Width(125f), GUILayout.Height(25f)))
            {
                CRPlayerWindow.CloseIfOpen();
            }
            GUILayout.Space(10f);

            DrawProgressBox();

            GUILayout.Space(6f);

            EditorGUILayout.EndHorizontal();

            GUILayout.EndArea();
        }
Beispiel #29
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            if (ac_.activeAnimation != ac_.animationLastLoaded_)
            {
                previewInEditor_ = false;
                ac_.CloseAnimation();
            }

            DrawDefaultInspector();
            CRGUIUtils.Splitter();

            /*
             * EditorGUI.BeginDisabledGroup(EditorApplication.isPlayingOrWillChangePlaymode);
             * EditorGUI.BeginChangeCheck();
             * previewInEditor_ = EditorGUILayout.Toggle("Preview", previewInEditor_);
             * if ( EditorGUI.EndChangeCheck() )
             * {
             * AnimationPreview( previewInEditor_ );
             * }
             * EditorGUI.EndDisabledGroup();
             */


            bool isPlayingOrPreviewInEditor = EditorApplication.isPlayingOrWillChangePlaymode || previewInEditor_;

            EditorGUI.BeginDisabledGroup(!isPlayingOrPreviewInEditor);
            EditorGUI.BeginChangeCheck();

            editorFrame_ = Mathf.Clamp(ac_.lastReadFrame_, 0, ac_.lastFrame_);
            editorFrame_ = EditorGUILayout.Slider(new GUIContent("Frame"), editorFrame_, ac_.firstFrame_, ac_.lastFrame_);
            if (EditorGUI.EndChangeCheck() && isPlayingOrPreviewInEditor)
            {
                ac_.SetFrame(editorFrame_);
                SceneView.RepaintAll();
            }

            EditorGUI.EndDisabledGroup();
            EditorGUILayout.LabelField(new GUIContent("Time"), new GUIContent(ac_.time_.ToString("F3")));
            EditorGUILayout.LabelField(new GUIContent("Frame Count"), new GUIContent(ac_.frameCount_.ToString()));
            EditorGUILayout.LabelField(new GUIContent("FPS"), new GUIContent(ac_.fps_.ToString()));
            EditorGUILayout.LabelField(new GUIContent("Animation Length"), new GUIContent(ac_.animationLength_.ToString()));
            CRGUIUtils.Splitter();

            EditorGUI.BeginDisabledGroup(EditorApplication.isPlayingOrWillChangePlaymode);

            CRGUIUtils.Splitter();
            if (GUILayout.Button(new GUIContent("Record screenshots in play mode")))
            {
                MakeCameraScreenshots();
            }

            if (GUILayout.Button(new GUIContent("Remove camera recorder component")))
            {
                RemoveCameraRecorder();
            }

            EditorGUI.EndDisabledGroup();

            Repaint();
        }
        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            bool isPlayingOrWillChangePlaymode = EditorApplication.isPlayingOrWillChangePlaymode;

            Rect rect = GUILayoutUtility.GetRect(80f, 80f);

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

            if (Selection.gameObjects.Length > 1)
            {
                DrawDefaultInspector();
                EditorGUILayout.Space();
                EditorGUI.BeginDisabledGroup(isPlayingOrWillChangePlaymode || ac_.PreviewInEditor || !SystemInfo.supportsComputeShaders);
                DrawDecodeInGPU();
                DrawBufferAllFrames();
                EditorGUI.BeginDisabledGroup(bufferAllFramesProp_.boolValue);
                DrawGPUBufferSize();
                EditorGUI.EndDisabledGroup();
                DrawOverrideShaderForVA();
                DrawUseDoubleSidedShader();
                EditorGUI.EndDisabledGroup();
                EditorGUILayout.Space();
                DrawRecomputeNormals(isPlayingOrWillChangePlaymode);
                serializedObject.ApplyModifiedProperties();
                return;
            }
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            DrawAnimationFileType();
            DrawAnimationFiles();
            CRGUIUtils.Splitter();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            DrawDefaultInspector();
            EditorGUILayout.Space();
            if (CRCompressedPose.CanBeDecompressedByGPU() && !CRCompressedPose.CanBeDecompressedByCPU())
            {
                EditorGUILayout.HelpBox("Only GPU decoding of FiberCompression animations is allowed in this version of the plugin.", MessageType.Info);
            }
            else if (CRCompressedPose.CanBeDecompressedByCPU() && !CRCompressedPose.CanBeDecompressedByGPU())
            {
                EditorGUILayout.HelpBox("Only CPU decoding of FiberCompression animations is allowed in this version of the plugin.", MessageType.Info);
            }
            EditorGUI.BeginDisabledGroup(isPlayingOrWillChangePlaymode || ac_.PreviewInEditor || !SystemInfo.supportsComputeShaders);
            DrawDecodeInGPU();
            DrawBufferAllFrames();
            EditorGUI.EndDisabledGroup();
            EditorGUI.BeginDisabledGroup(!ac_.DecodeInGPU || isPlayingOrWillChangePlaymode || ac_.PreviewInEditor);
            EditorGUI.BeginDisabledGroup(bufferAllFramesProp_.boolValue);
            DrawGPUBufferSize();
            EditorGUI.EndDisabledGroup();
            DrawOverrideShaderForVA();
            DrawUseDoubleSidedShader();
            EditorGUI.EndDisabledGroup();
            EditorGUILayout.Space();
            DrawRecomputeNormals(isPlayingOrWillChangePlaymode);
            serializedObject.ApplyModifiedProperties();
            EditorGUILayout.Space();

            GameObject go               = ac_.gameObject;
            PrefabType pType            = PrefabUtility.GetPrefabType(go);
            bool       isPrefab         = pType == PrefabType.Prefab || pType == PrefabType.PrefabInstance;
            bool       gpuModeRequested = ac_.DecodeInGPU;

            EditorGUI.BeginDisabledGroup(isPlayingOrWillChangePlaymode || isPrefab);
            DrawIsPreviewInEditor();
            if (gpuModeRequested)
            {
                EditorGUILayout.HelpBox("GPU Vertex Animation decoding is not available in editor preview mode. Standard CPU decoding will be used.", MessageType.Info);
            }
            else if (isPrefab)
            {
                EditorGUILayout.HelpBox("Preview in editor is disabled on prefab and prefab instances due to performance reasons. Use play mode or break the prefab connection through the GameObject menu.", MessageType.Info);
            }
            EditorGUI.EndDisabledGroup();

            bool isPlayingOrPreviewInEditor = isPlayingOrWillChangePlaymode || ac_.PreviewInEditor;

            EditorGUI.BeginDisabledGroup(!isPlayingOrPreviewInEditor);
            EditorGUI.BeginChangeCheck();

            editorFrame_ = Mathf.Clamp(ac_.LastReadFrame, 0, ac_.LastFrame);
            if (ac_.interpolate)
            {
                editorFrame_ = EditorGUILayout.Slider(new GUIContent("Frame"), editorFrame_, 0, ac_.LastFrame);
            }
            else
            {
                editorFrame_ = EditorGUILayout.IntSlider(new GUIContent("Frame"), (int)editorFrame_, 0, ac_.LastFrame);
            }
            if (EditorGUI.EndChangeCheck() && isPlayingOrPreviewInEditor)
            {
                ac_.SetFrame(editorFrame_);
                SceneView.RepaintAll();
            }

            EditorGUI.EndDisabledGroup();
            EditorGUILayout.LabelField(new GUIContent("Time"), new GUIContent(ac_.AnimationTime.ToString("F3")));
            EditorGUILayout.LabelField(new GUIContent("Frame Count"), new GUIContent(ac_.FrameCount.ToString()));
            EditorGUILayout.LabelField(new GUIContent("FPS"), new GUIContent(ac_.Fps.ToString()));
            EditorGUILayout.LabelField(new GUIContent("Animation Length"), new GUIContent(ac_.AnimationLength.ToString()));
            EditorGUILayout.LabelField(new GUIContent("Compression type"), new GUIContent(GetCompressionTypeString()));

            EditorGUILayout.Space();
            EditorGUI.BeginDisabledGroup(ac_.AnimatorSync != null);
            DrawStartTimeOffset();
            EditorGUI.EndDisabledGroup();
            DrawSyncWithAnimator();
            CRGUIUtils.Splitter();

            EditorGUI.BeginDisabledGroup(EditorApplication.isPlayingOrWillChangePlaymode);

            CRGUIUtils.Splitter();

            EditorGUILayout.Space();

            EditorGUI.EndDisabledGroup();

            if (isPlayingOrWillChangePlaymode)
            {
                Repaint();
            }
        }