66 lines
3.3 KiB
C#
66 lines
3.3 KiB
C#
using ImstkUnity;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace ImstkEditor
|
|
{
|
|
[CustomEditor(typeof(ConnectiveTissue))]
|
|
public class ConnectiveTissueEditor : Editor
|
|
{
|
|
// Local variables for caching editor results
|
|
Deformable sideA;
|
|
Deformable sideB;
|
|
|
|
double maxDistance;
|
|
double strandsPerFace;
|
|
int segmentsPerStrand;
|
|
double distanceStiffness;
|
|
double uniformMassValue;
|
|
double viscousDampingCoeff;
|
|
|
|
GUIContent sideAContent = new GUIContent("Side A", "One side of the objects that should be connected.");
|
|
GUIContent sideBContent = new GUIContent("Side B", "One side of the objects that should be connected.");
|
|
GUIContent maxDistContent = new GUIContent("Maximum Distance", "If side a and b are closer than this value" +
|
|
" connective tissue strands will be generated. If 0 the distance between the centers will be used");
|
|
GUIContent strandsPerFaceContent = new GUIContent("Strands per Face", "Indicates the density of strands " +
|
|
"that are being generated, fractions can be used e.g. 0.5 will generate a strand for half the faces");
|
|
GUIContent segmentsPerStrandContent = new GUIContent("Segments per Strand", "Determines the number of " +
|
|
"segments for each strand");
|
|
GUIContent distanceStiffnessContent = new GUIContent("Distance Stiffness", "Determines how much the " +
|
|
"connective tissue will resist extension.");
|
|
GUIContent massValueContent = new GUIContent("Uniform Mass Value", "Mass per vertex of the object");
|
|
GUIContent viscousDampingContent = new GUIContent("Viscous Damping", "Dampens the system");
|
|
public override void OnInspectorGUI()
|
|
{
|
|
var script = target as ConnectiveTissue;
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
|
|
sideA = EditorGUILayout.ObjectField(sideAContent, script.objectA, typeof(ImstkUnity.Deformable), true) as ImstkUnity.Deformable;
|
|
sideB = EditorGUILayout.ObjectField(sideBContent,script.objectB, typeof(ImstkUnity.Deformable), true) as ImstkUnity.Deformable;
|
|
|
|
maxDistance = EditorGUILayout.DoubleField(maxDistContent, script.maxDistance);
|
|
strandsPerFace = EditorGUILayout.DoubleField(strandsPerFaceContent, script.strandsPerFace);
|
|
segmentsPerStrand = EditorGUILayout.IntField(segmentsPerStrandContent, script.segmentsPerStrand);
|
|
distanceStiffness = EditorGUILayout.DoubleField(distanceStiffnessContent, script.distanceStiffness);
|
|
uniformMassValue = EditorGUILayout.DoubleField(massValueContent, script.uniformMassValue);
|
|
viscousDampingCoeff = EditorGUILayout.DoubleField(viscousDampingContent, script.viscousDampingCoeff);
|
|
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
if ((sideA == null && sideB == null) || sideA != sideB)
|
|
{
|
|
script.objectA = sideA;
|
|
script.objectB = sideB;
|
|
}
|
|
|
|
script.maxDistance = maxDistance;
|
|
script.strandsPerFace = strandsPerFace;
|
|
script.segmentsPerStrand = segmentsPerStrand;
|
|
script.distanceStiffness = distanceStiffness;
|
|
script.uniformMassValue = uniformMassValue;
|
|
script.viscousDampingCoeff = viscousDampingCoeff;
|
|
}
|
|
}
|
|
}
|
|
} |