public override void OnInspectorGUI() { serializedObject.UpdateIfRequiredOrScript(); EditorGUILayout.HelpBox("Used particles:" + solver.AllocParticleCount, MessageType.None); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(backend); #if !(OBI_BURST && OBI_MATHEMATICS && OBI_COLLECTIONS) if (backend.enumValueIndex == (int)ObiSolver.BackendType.Burst) { EditorGUILayout.HelpBox("The Burst backend depends on the following packages: Mathematics, Collections and Burst. The default backend (Oni) will be used instead, if possible.", MessageType.Warning); } #endif #if !(OBI_ONI_SUPPORTED) if (backend.enumValueIndex == (int)ObiSolver.BackendType.Oni) { EditorGUILayout.HelpBox("The Oni backend is not compatible with the target platform. Please switch to a compatible platform, or use the Burst backend instead.", MessageType.Warning); } #endif if (EditorGUI.EndChangeCheck()) { serializedObject.ApplyModifiedProperties(); foreach (var t in targets) { (t as ObiSolver).UpdateBackend(); } } EditorGUILayout.PropertyField(parameters); EditorGUILayout.PropertyField(worldLinearInertiaScale); EditorGUILayout.PropertyField(worldAngularInertiaScale); EditorGUILayout.PropertyField(simulateWhenInvisible); constraintsFoldout = EditorGUILayout.Foldout(constraintsFoldout, "Constraints"); if (constraintsFoldout) { EditorGUILayout.PropertyField(distanceConstraintParameters); EditorGUILayout.PropertyField(bendingConstraintParameters); EditorGUILayout.PropertyField(particleCollisionConstraintParameters); EditorGUILayout.PropertyField(particleFrictionConstraintParameters); EditorGUILayout.PropertyField(collisionConstraintParameters); EditorGUILayout.PropertyField(frictionConstraintParameters); EditorGUILayout.PropertyField(skinConstraintParameters); EditorGUILayout.PropertyField(volumeConstraintParameters); EditorGUILayout.PropertyField(shapeMatchingConstraintParameters); EditorGUILayout.PropertyField(tetherConstraintParameters); EditorGUILayout.PropertyField(pinConstraintParameters); EditorGUILayout.PropertyField(stitchConstraintParameters); EditorGUILayout.PropertyField(densityConstraintParameters); EditorGUILayout.PropertyField(stretchShearConstraintParameters); EditorGUILayout.PropertyField(bendTwistConstraintParameters); EditorGUILayout.PropertyField(chainConstraintParameters); } // Apply changes to the serializedProperty if (GUI.changed) { serializedObject.ApplyModifiedProperties(); solver.PushSolverParameters(); } }