public override void OnInspectorGUI() { serializedObject.UpdateIfRequiredOrScript(); EditorGUILayout.BeginVertical(EditorStyles.inspectorDefaultMargins); Editor.DrawPropertiesExcluding(serializedObject, "m_Script"); if (GUILayout.Button("Generate", GUI.skin.FindStyle("LargeButton"), GUILayout.Height(32))) { Generate(); } EditorGUILayout.HelpBox("Particle mass (kg):\n" + "2D:" + material.GetParticleMass(Oni.SolverParameters.Mode.Mode2D) + "\n" + "3D;" + material.GetParticleMass(Oni.SolverParameters.Mode.Mode3D) + "\n\n" + "Particle size:\n" + "2D:" + material.GetParticleSize(Oni.SolverParameters.Mode.Mode2D) + "\n" + "3D;" + material.GetParticleSize(Oni.SolverParameters.Mode.Mode3D), MessageType.Info); EditorGUILayout.EndVertical(); // Apply changes to the serializedProperty if (GUI.changed) { serializedObject.ApplyModifiedProperties(); } }
private void UpdateParticleResolution(int index) { if (m_Solver == null) { return; } ObiFluidEmitterBlueprint fluidMaterial = emitterBlueprint as ObiFluidEmitterBlueprint; int solverIndex = solverIndices[index]; float restDistance = (emitterBlueprint != null) ? emitterBlueprint.GetParticleSize(m_Solver.parameters.mode) : 0.1f; float pmass = (emitterBlueprint != null) ? emitterBlueprint.GetParticleMass(m_Solver.parameters.mode) : 0.1f; if (emitterBlueprint != null && fluidMaterial == null) { float randomRadius = UnityEngine.Random.Range(0, restDistance / 100.0f * (emitterBlueprint as ObiGranularEmitterBlueprint).randomness); m_Solver.principalRadii[solverIndex] = Vector3.one * Mathf.Max(0.001f + restDistance * 0.5f - randomRadius); } else { m_Solver.principalRadii[solverIndex] = Vector3.one * restDistance * 0.5f; } m_Solver.invRotationalMasses[solverIndex] = m_Solver.invMasses[solverIndex] = 1 / pmass; m_Solver.smoothingRadii[solverIndex] = fluidMaterial != null?fluidMaterial.GetSmoothingRadius(m_Solver.parameters.mode) : 1f / (10 * Mathf.Pow(1, 1 / (m_Solver.parameters.mode == Oni.SolverParameters.Mode.Mode3D ? 3.0f : 2.0f))); }