MegaPivotAdjust.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using UnityEngine;
  2. [AddComponentMenu("Modifiers/Pivot Adjust")]
  3. public class MegaPivotAdjust : MegaModifier
  4. {
  5. Matrix4x4 mat;
  6. public override string ModName() { return "PivotAdjust"; }
  7. public override string GetHelpURL() { return "?page_id=280"; }
  8. public override Vector3 Map(int i, Vector3 p)
  9. {
  10. p -= Offset;
  11. return mat.MultiplyPoint(p);
  12. }
  13. public override bool ModLateUpdate(MegaModContext mc)
  14. {
  15. return Prepare(mc);
  16. }
  17. public override bool Prepare(MegaModContext mc)
  18. {
  19. tm = Matrix4x4.identity;
  20. invtm = tm.inverse;
  21. mat = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(gizmoRot), gizmoScale);
  22. return true;
  23. }
  24. public override void DrawGizmo(MegaModContext context)
  25. {
  26. tm = Matrix4x4.identity;
  27. invtm = tm.inverse;
  28. if ( !Prepare(context) )
  29. return;
  30. Vector3 min = context.bbox.min;
  31. Vector3 max = context.bbox.max;
  32. if ( context.mod.sourceObj != null )
  33. Gizmos.matrix = context.mod.sourceObj.transform.localToWorldMatrix;
  34. else
  35. Gizmos.matrix = transform.localToWorldMatrix;
  36. corners[0] = new Vector3(min.x, min.y, min.z);
  37. corners[1] = new Vector3(min.x, max.y, min.z);
  38. corners[2] = new Vector3(max.x, max.y, min.z);
  39. corners[3] = new Vector3(max.x, min.y, min.z);
  40. corners[4] = new Vector3(min.x, min.y, max.z);
  41. corners[5] = new Vector3(min.x, max.y, max.z);
  42. corners[6] = new Vector3(max.x, max.y, max.z);
  43. corners[7] = new Vector3(max.x, min.y, max.z);
  44. DrawEdge(corners[0], corners[1]);
  45. DrawEdge(corners[1], corners[2]);
  46. DrawEdge(corners[2], corners[3]);
  47. DrawEdge(corners[3], corners[0]);
  48. DrawEdge(corners[4], corners[5]);
  49. DrawEdge(corners[5], corners[6]);
  50. DrawEdge(corners[6], corners[7]);
  51. DrawEdge(corners[7], corners[4]);
  52. DrawEdge(corners[0], corners[4]);
  53. DrawEdge(corners[1], corners[5]);
  54. DrawEdge(corners[2], corners[6]);
  55. DrawEdge(corners[3], corners[7]);
  56. ExtraGizmo(context);
  57. }
  58. }