MegaRopeDeformEditor.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. 
  2. using UnityEditor;
  3. using UnityEngine;
  4. [InitializeOnLoad]
  5. [CanEditMultipleObjects, CustomEditor(typeof(MegaRopeDeform))]
  6. public class MegaRopeDeformEditor : MegaModifierEditor
  7. {
  8. public override string GetHelpString() { return "Rope Deform Modifier by Chris West"; }
  9. public override Texture LoadImage() { return (Texture)EditorGUIUtility.LoadRequired("MegaFiers\\bend_help.png"); }
  10. bool showsoft = false;
  11. public override bool Inspector()
  12. {
  13. MegaRopeDeform mod = (MegaRopeDeform)target;
  14. //DrawDefaultInspector();
  15. //EditorGUIUtility.LookLikeControls();
  16. //mod.angle = EditorGUILayout.FloatField("Angle", mod.angle);
  17. //mod.dir = EditorGUILayout.FloatField("Dir", mod.dir);
  18. //mod.axis = (MegaAxis)EditorGUILayout.EnumPopup("Axis", mod.axis);
  19. //mod.doRegion = EditorGUILayout.Toggle("Do Region", mod.doRegion);
  20. //mod.from = EditorGUILayout.FloatField("From", mod.from);
  21. //mod.to = EditorGUILayout.FloatField("To", mod.to);
  22. if ( GUILayout.Button("Rebuild") )
  23. mod.init = true;
  24. //mod.timeStep = EditorGUILayout.Slider("Time Step", mod.timeStep, 0.001f, 0.2f);
  25. mod.floorOff = EditorGUILayout.FloatField("Floor Off", mod.floorOff);
  26. mod.NumMasses = EditorGUILayout.IntField("Num Masses", mod.NumMasses);
  27. if ( mod.NumMasses < 2 )
  28. mod.NumMasses = 2;
  29. mod.Mass = EditorGUILayout.FloatField("Mass", mod.Mass);
  30. if ( mod.Mass < 0.01f )
  31. mod.Mass = 0.01f;
  32. mod.axis = (MegaAxis)EditorGUILayout.EnumPopup("Axis", mod.axis);
  33. mod.stiffnessCrv = EditorGUILayout.CurveField("Stiffness Crv", mod.stiffnessCrv);
  34. mod.stiffspring = EditorGUILayout.FloatField("Stiff Spring", mod.stiffspring);
  35. mod.stiffdamp = EditorGUILayout.FloatField("Stiff Damp", mod.stiffdamp);
  36. mod.spring = EditorGUILayout.FloatField("Spring", mod.spring);
  37. mod.damp = EditorGUILayout.FloatField("Damp", mod.damp);
  38. mod.off = EditorGUILayout.FloatField("Off", mod.off);
  39. mod.SpringCompress = EditorGUILayout.FloatField("Spring Compress", mod.SpringCompress);
  40. mod.BendSprings = EditorGUILayout.Toggle("Bend Springs", mod.BendSprings);
  41. mod.Constraints = EditorGUILayout.Toggle("Constraints", mod.Constraints);
  42. mod.DampingRatio = EditorGUILayout.FloatField("Damping Ratio", mod.DampingRatio);
  43. mod.left = (Transform)EditorGUILayout.ObjectField("Left", mod.left, typeof(Transform), true);
  44. mod.right = (Transform)EditorGUILayout.ObjectField("Right", mod.right, typeof(Transform), true);
  45. mod.weight = EditorGUILayout.FloatField("Weight", mod.weight);
  46. mod.weightPos = EditorGUILayout.FloatField("Weight Pos", mod.weightPos);
  47. showsoft = EditorGUILayout.Foldout(showsoft, "Physics");
  48. if ( showsoft )
  49. {
  50. mod.soft.timeStep = EditorGUILayout.Slider("Time Step", mod.soft.timeStep, 0.001f, 0.2f);
  51. mod.soft.gravity = EditorGUILayout.Vector3Field("Gravity", mod.soft.gravity);
  52. mod.soft.airdrag = EditorGUILayout.FloatField("Air Drag", mod.soft.airdrag);
  53. mod.soft.friction = EditorGUILayout.FloatField("Friction", mod.soft.friction);
  54. mod.soft.iters = EditorGUILayout.IntField("Iterations", mod.soft.iters);
  55. mod.soft.method = (MegaIntegrator)EditorGUILayout.EnumPopup("Method", mod.soft.method);
  56. mod.soft.applyConstraints = EditorGUILayout.Toggle("Apply Constraints", mod.soft.applyConstraints);
  57. }
  58. mod.DisplayDebug = EditorGUILayout.BeginToggleGroup("Display Debug", mod.DisplayDebug);
  59. mod.drawsteps = EditorGUILayout.IntField("Draw Steps", mod.drawsteps);
  60. mod.boxsize = EditorGUILayout.FloatField("Box Size", mod.boxsize);
  61. EditorGUILayout.EndToggleGroup();
  62. return false;
  63. }
  64. static MegaRopeDeformEditor()
  65. {
  66. //EditorApplication.update += Update;
  67. }
  68. // Have a per object flag for editor update
  69. static void Update1()
  70. {
  71. GameObject obj = Selection.activeGameObject;
  72. if ( obj )
  73. {
  74. //MegaRopeDeform mr = (MegaRopeDeform)obj.GetComponent<MegaRopeDeform>();
  75. //if ( mr )
  76. {
  77. MegaModifyObject mod = (MegaModifyObject)obj.GetComponent<MegaModifyObject>();
  78. if ( mod )
  79. {
  80. mod.ModifyObject();
  81. }
  82. }
  83. }
  84. }
  85. static void Update()
  86. {
  87. #if UNITY_3_5
  88. MegaModifyObject[] mods = (MegaModifyObject[])FindSceneObjectsOfType(typeof(MegaModifyObject));
  89. #else
  90. MegaModifyObject[] mods = (MegaModifyObject[])FindObjectsOfType(typeof(MegaModifyObject));
  91. #endif
  92. for ( int i = 0; i < mods.Length; i++ )
  93. mods[i].ModifyObject();
  94. }
  95. }