public override void OnInspectorGUI() { serializedObject.UpdateIfRequiredOrScript(); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(clothBlueprint, new GUIContent("Blueprint")); if (EditorGUI.EndChangeCheck()) { foreach (var t in targets) { (t as ObiTearableCloth).RemoveFromSolver(); (t as ObiTearableCloth).ClearState(); } serializedObject.ApplyModifiedProperties(); foreach (var t in targets) { (t as ObiTearableCloth).AddToSolver(); } } EditorGUILayout.Space(); EditorGUILayout.LabelField("Collisions", EditorStyles.boldLabel); EditorGUILayout.PropertyField(collisionMaterial, new GUIContent("Collision material")); EditorGUILayout.PropertyField(selfCollisions, new GUIContent("Self collisions")); EditorGUILayout.Space(); ObiEditorUtils.DoToggleablePropertyGroup(tearingEnabled, new GUIContent("Tearing"), () => { EditorGUILayout.PropertyField(tearResistanceMultiplier, new GUIContent("Tear compliance")); EditorGUILayout.PropertyField(tearRate, new GUIContent("Tear rate")); EditorGUILayout.PropertyField(tearDebilitation, new GUIContent("Tear debilitation")); }); ObiEditorUtils.DoToggleablePropertyGroup(distanceConstraintsEnabled, new GUIContent("Distance Constraints", Resources.Load <Texture2D>("Icons/ObiDistanceConstraints Icon")), () => { EditorGUILayout.PropertyField(stretchCompliance, new GUIContent("Stretch compliance")); EditorGUILayout.PropertyField(maxCompression, new GUIContent("Max compression")); }); ObiEditorUtils.DoToggleablePropertyGroup(bendConstraintsEnabled, new GUIContent("Bend Constraints", Resources.Load <Texture2D>("Icons/ObiBendConstraints Icon")), () => { EditorGUILayout.PropertyField(bendCompliance, new GUIContent("Bend compliance")); EditorGUILayout.PropertyField(maxBending, new GUIContent("Max bending")); }); ObiEditorUtils.DoToggleablePropertyGroup(aerodynamicsEnabled, new GUIContent("Aerodynamics", Resources.Load <Texture2D>("Icons/ObiAerodynamicConstraints Icon")), () => { EditorGUILayout.PropertyField(drag, new GUIContent("Drag")); EditorGUILayout.PropertyField(lift, new GUIContent("Lift")); }); if (GUI.changed) { serializedObject.ApplyModifiedProperties(); } }
public override void OnInspectorGUI() { serializedObject.UpdateIfRequiredOrScript(); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(softbodyBlueprint, new GUIContent("Blueprint")); if (EditorGUI.EndChangeCheck()) { foreach (var t in targets) { (t as ObiSoftbody).RemoveFromSolver(); (t as ObiSoftbody).ClearState(); } serializedObject.ApplyModifiedProperties(); foreach (var t in targets) { (t as ObiSoftbody).AddToSolver(); } } EditorGUILayout.Space(); EditorGUILayout.LabelField("Collisions", EditorStyles.boldLabel); EditorGUILayout.PropertyField(collisionMaterial, new GUIContent("Collision material")); EditorGUILayout.PropertyField(selfCollisions, new GUIContent("Self collisions")); EditorGUILayout.Space(); ObiEditorUtils.DoToggleablePropertyGroup(shapeMatchingConstraintsEnabled, new GUIContent("Shape Matching Constraints", Resources.Load <Texture2D>("Icons/ObiShapeMatchingConstraints Icon")), () => { EditorGUILayout.PropertyField(deformationResistance, new GUIContent("Deformation resistance")); EditorGUILayout.PropertyField(maxDeformation, new GUIContent("Max deformation")); EditorGUILayout.PropertyField(plasticYield, new GUIContent("Plastic yield")); EditorGUILayout.PropertyField(plasticCreep, new GUIContent("Plastic creep")); EditorGUILayout.PropertyField(plasticRecovery, new GUIContent("Plastic recovery")); }); if (GUI.changed) { serializedObject.ApplyModifiedProperties(); } }
public override void OnInspectorGUI() { if (actor.rodBlueprint != null && pathEditor == null) { pathEditor = new ObiPathEditor(actor.rodBlueprint, actor.rodBlueprint.path, true); } if (editLabelStyle == null) { editLabelStyle = new GUIStyle(GUI.skin.label); editLabelStyle.alignment = TextAnchor.MiddleLeft; } serializedObject.UpdateIfRequiredOrScript(); if (pathEditor != null) { pathEditor.ResizeCPArrays(); } using (new EditorGUI.DisabledScope(editMode)) { EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(rodBlueprint, new GUIContent("Blueprint")); if (EditorGUI.EndChangeCheck()) { foreach (var t in targets) { (t as ObiRod).RemoveFromSolver(); (t as ObiRod).ClearState(); } serializedObject.ApplyModifiedProperties(); foreach (var t in targets) { (t as ObiRod).AddToSolver(); } } } DoEditButton(); if (actor.rodBlueprint != null && actor.rodBlueprint.path.ControlPointCount < 2) { actor.rodBlueprint.GenerateImmediate(); } EditorGUILayout.Space(); EditorGUILayout.LabelField("Collisions", EditorStyles.boldLabel); EditorGUILayout.PropertyField(collisionMaterial, new GUIContent("Collision material")); EditorGUILayout.PropertyField(selfCollisions, new GUIContent("Self collisions")); EditorGUILayout.PropertyField(surfaceCollisions, new GUIContent("Surface-based collisions")); EditorGUILayout.Space(); ObiEditorUtils.DoToggleablePropertyGroup(stretchShearConstraintsEnabled, new GUIContent("StretchShear Constraints", Resources.Load <Texture2D>("Icons/ObiStretchShearConstraints Icon")), () => { EditorGUILayout.PropertyField(stretchCompliance, new GUIContent("Stretch compliance")); EditorGUILayout.PropertyField(shear1Compliance, new GUIContent("Shear compliance 1")); EditorGUILayout.PropertyField(shear2Compliance, new GUIContent("Shear compliance 2")); }); ObiEditorUtils.DoToggleablePropertyGroup(bendTwistConstraintsEnabled, new GUIContent("Bend Twist Constraints", Resources.Load <Texture2D>("Icons/ObiBendTwistConstraints Icon")), () => { EditorGUILayout.PropertyField(torsionCompliance, new GUIContent("Torsion compliance")); EditorGUILayout.PropertyField(bend1Compliance, new GUIContent("Bend compliance 1")); EditorGUILayout.PropertyField(bend2Compliance, new GUIContent("Bend compliance 2")); EditorGUILayout.PropertyField(plasticYield, new GUIContent("Plastic yield")); EditorGUILayout.PropertyField(plasticCreep, new GUIContent("Plastic creep")); }); ObiEditorUtils.DoToggleablePropertyGroup(chainConstraintsEnabled, new GUIContent("Chain Constraints", Resources.Load <Texture2D>("Icons/ObiChainConstraints Icon")), () => { EditorGUILayout.PropertyField(tightness, new GUIContent("Tightness")); }); if (GUI.changed) { serializedObject.ApplyModifiedProperties(); } }
public override void OnInspectorGUI() { serializedObject.UpdateIfRequiredOrScript(); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(clothBlueprint, new GUIContent("Blueprint")); if (EditorGUI.EndChangeCheck()) { foreach (var t in targets) { (t as ObiCloth).RemoveFromSolver(); (t as ObiCloth).ClearState(); } serializedObject.ApplyModifiedProperties(); foreach (var t in targets) { (t as ObiCloth).AddToSolver(); } } EditorGUILayout.Space(); EditorGUILayout.LabelField("Collisions", EditorStyles.boldLabel); EditorGUILayout.PropertyField(collisionMaterial, new GUIContent("Collision material")); EditorGUILayout.PropertyField(oneSided, new GUIContent("One sided collisions")); EditorGUILayout.PropertyField(selfCollisions, new GUIContent("Self collisions")); EditorGUILayout.PropertyField(surfaceCollisions, new GUIContent("Surface collisions")); EditorGUILayout.Space(); ObiEditorUtils.DoToggleablePropertyGroup(distanceConstraintsEnabled, new GUIContent("Distance Constraints", Resources.Load <Texture2D>("Icons/ObiDistanceConstraints Icon")), () => { EditorGUILayout.PropertyField(stretchingScale, new GUIContent("Stretching scale")); EditorGUILayout.PropertyField(stretchCompliance, new GUIContent("Stretch compliance")); EditorGUILayout.PropertyField(maxCompression, new GUIContent("Max compression")); }); ObiEditorUtils.DoToggleablePropertyGroup(bendConstraintsEnabled, new GUIContent("Bend Constraints", Resources.Load <Texture2D>("Icons/ObiBendConstraints Icon")), () => { EditorGUILayout.PropertyField(bendCompliance, new GUIContent("Bend compliance")); EditorGUILayout.PropertyField(maxBending, new GUIContent("Max bending")); EditorGUILayout.PropertyField(plasticYield, new GUIContent("Plastic yield")); EditorGUILayout.PropertyField(plasticCreep, new GUIContent("Plastic creep")); }); ObiEditorUtils.DoToggleablePropertyGroup(volumeConstraintsEnabled, new GUIContent("Volume Constraints", Resources.Load <Texture2D>("Icons/ObiVolumeConstraints Icon")), () => { EditorGUILayout.PropertyField(compressionCompliance, new GUIContent("Compression compliance")); EditorGUILayout.PropertyField(pressure, new GUIContent("Pressure")); }); ObiEditorUtils.DoToggleablePropertyGroup(aerodynamicsEnabled, new GUIContent("Aerodynamics", Resources.Load <Texture2D>("Icons/ObiAerodynamicConstraints Icon")), () => { EditorGUILayout.PropertyField(drag, new GUIContent("Drag")); EditorGUILayout.PropertyField(lift, new GUIContent("Lift")); }); ObiEditorUtils.DoToggleablePropertyGroup(tetherConstraintsEnabled, new GUIContent("Tether Constraints", Resources.Load <Texture2D>("Icons/ObiTetherConstraints Icon")), () => { EditorGUILayout.PropertyField(tetherCompliance, new GUIContent("Tether compliance")); EditorGUILayout.PropertyField(tetherScale, new GUIContent("Tether scale")); }); if (GUI.changed) { serializedObject.ApplyModifiedProperties(); } }
public override void OnInspectorGUI() { if (actor.ropeBlueprint != null && pathEditor == null) { pathEditor = new ObiPathEditor(actor.ropeBlueprint, actor.ropeBlueprint.path, false); } if (editLabelStyle == null) { editLabelStyle = new GUIStyle(GUI.skin.label); editLabelStyle.alignment = TextAnchor.MiddleLeft; } serializedObject.UpdateIfRequiredOrScript(); if (pathEditor != null) { pathEditor.ResizeCPArrays(); } using (new EditorGUI.DisabledScope(editMode)) { EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(ropeBlueprint, new GUIContent("Blueprint")); if (EditorGUI.EndChangeCheck()) { foreach (var t in targets) { (t as ObiRope).RemoveFromSolver(); (t as ObiRope).ClearState(); } serializedObject.ApplyModifiedProperties(); foreach (var t in targets) { (t as ObiRope).AddToSolver(); } } } DoEditButton(); if (actor.sourceBlueprint != null && actor.ropeBlueprint.path.ControlPointCount < 2) { actor.ropeBlueprint.GenerateImmediate(); } EditorGUILayout.Space(); EditorGUILayout.LabelField("Collisions", EditorStyles.boldLabel); EditorGUILayout.PropertyField(collisionMaterial, new GUIContent("Collision material")); EditorGUILayout.PropertyField(selfCollisions, new GUIContent("Self collisions")); EditorGUILayout.Space(); ObiEditorUtils.DoToggleablePropertyGroup(tearingEnabled, new GUIContent("Tearing"), () => { EditorGUILayout.PropertyField(tearResistanceMultiplier, new GUIContent("Tear resistance")); EditorGUILayout.PropertyField(tearRate, new GUIContent("Tear rate")); }); ObiEditorUtils.DoToggleablePropertyGroup(distanceConstraintsEnabled, new GUIContent("Distance Constraints", Resources.Load <Texture2D>("Icons/ObiDistanceConstraints Icon")), () => { EditorGUILayout.PropertyField(stretchingScale, new GUIContent("Stretching scale")); EditorGUILayout.PropertyField(stretchCompliance, new GUIContent("Stretch compliance")); EditorGUILayout.PropertyField(maxCompression, new GUIContent("Max compression")); }); ObiEditorUtils.DoToggleablePropertyGroup(bendConstraintsEnabled, new GUIContent("Bend Constraints", Resources.Load <Texture2D>("Icons/ObiBendConstraints Icon")), () => { EditorGUILayout.PropertyField(bendCompliance, new GUIContent("Bend compliance")); EditorGUILayout.PropertyField(maxBending, new GUIContent("Max bending")); }); if (GUI.changed) { serializedObject.ApplyModifiedProperties(); } }
public override void OnInspectorGUI() { if (actor.rodBlueprint != null && pathEditor == null) { pathEditor = new ObiPathEditor(actor.rodBlueprint, actor.rodBlueprint.path, true); } if (editLabelStyle == null) { editLabelStyle = new GUIStyle(GUI.skin.label); editLabelStyle.alignment = TextAnchor.MiddleLeft; } serializedObject.UpdateIfRequiredOrScript(); if (pathEditor != null) { pathEditor.ResizeCPArrays(); } EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(rodBlueprint, new GUIContent("Blueprint")); if (EditorGUI.EndChangeCheck()) { foreach (var t in targets) { (t as ObiRod).RemoveFromSolver(); (t as ObiRod).ClearState(); } serializedObject.ApplyModifiedProperties(); foreach (var t in targets) { (t as ObiRod).AddToSolver(); } } EditorGUILayout.BeginHorizontal(); GUILayout.Space(EditorGUIUtility.labelWidth); EditorGUI.BeginChangeCheck(); Tools.hidden = editMode = GUILayout.Toggle(editMode, new GUIContent(Resources.Load <Texture2D>("EditCurves")), "Button", GUILayout.MaxWidth(36), GUILayout.MaxHeight(24)); EditorGUILayout.LabelField("Edit path", editLabelStyle, GUILayout.ExpandHeight(true), GUILayout.MaxHeight(24)); if (EditorGUI.EndChangeCheck()) { SceneView.RepaintAll(); } EditorGUILayout.EndHorizontal(); if (actor.rodBlueprint != null && actor.rodBlueprint.path.ControlPointCount < 2) { actor.rodBlueprint.GenerateImmediate(); } EditorGUILayout.Space(); EditorGUILayout.LabelField("Collisions", EditorStyles.boldLabel); EditorGUILayout.PropertyField(collisionMaterial, new GUIContent("Collision material")); EditorGUILayout.PropertyField(selfCollisions, new GUIContent("Self collisions")); EditorGUILayout.Space(); ObiEditorUtils.DoToggleablePropertyGroup(stretchShearConstraintsEnabled, new GUIContent("StretchShear Constraints", Resources.Load <Texture2D>("Icons/ObiStretchShearConstraints Icon")), () => { EditorGUILayout.PropertyField(stretchCompliance, new GUIContent("Stretch compliance")); EditorGUILayout.PropertyField(shear1Compliance, new GUIContent("Shear compliance 1")); EditorGUILayout.PropertyField(shear2Compliance, new GUIContent("Shear compliance 2")); }); ObiEditorUtils.DoToggleablePropertyGroup(bendTwistConstraintsEnabled, new GUIContent("Bend Twist Constraints", Resources.Load <Texture2D>("Icons/ObiBendTwistConstraints Icon")), () => { EditorGUILayout.PropertyField(torsionCompliance, new GUIContent("Torsion compliance")); EditorGUILayout.PropertyField(bend1Compliance, new GUIContent("Bend compliance 1")); EditorGUILayout.PropertyField(bend2Compliance, new GUIContent("Bend compliance 2")); }); ObiEditorUtils.DoToggleablePropertyGroup(chainConstraintsEnabled, new GUIContent("Chain Constraints", Resources.Load <Texture2D>("Icons/ObiChainConstraints Icon")), () => { EditorGUILayout.PropertyField(tightness, new GUIContent("Tightness")); }); if (GUI.changed) { serializedObject.ApplyModifiedProperties(); } }