Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        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)));
        }