public static void SetThickness(SplineBase spline, int index, Vector3 thicknessValue) { Thickness thickness = spline.GetThickness(index); RecordHierarchy(spline.Root, "Battlehub.MeshDeformer2 Thickness"); EditorUtility.SetDirty(spline); thickness.Data = thicknessValue; spline.SetThickness(index, thickness); }
public static void SetThicknessOffset(SplineBase spline, int index, float t1, float t2) { Thickness thickness = spline.GetThickness(index); RecordHierarchy(spline.Root, "Battlehub.MeshDeformer2 Thickness Offset"); EditorUtility.SetDirty(spline); thickness.T1 = t1; thickness.T2 = t2; spline.SetThickness(index, thickness); }
private void Start() { SplineRuntimeEditor.Created += OnRuntimeEditorCreated; SplineBase.ConvergingSplineChanged += OnIsConvergingChanged; CreateRuntimeComponents(); if (m_spline == null) { m_spline = GetComponentInParent <SplineBase>(); if (m_spline == null) { Debug.LogError("Is not a child of gameobject with Spline or MeshDeformer component"); return; } m_spline.ControlPointTwistChanged -= OnControlPointTwistChanged; m_spline.ControlPointTwistChanged += OnControlPointTwistChanged; m_spline.ControlPointThicknessChanged -= OnControlPointThicknessChanged; m_spline.ControlPointThicknessChanged += OnControlPointThicknessChanged; m_spline.ControlPointModeChanged -= OnControlPointModeChanged; m_spline.ControlPointModeChanged += OnControlPointModeChanged; m_spline.ControlPointPositionChanged -= OnControlPointPositionChanged; m_spline.ControlPointPositionChanged += OnControlPointPositionChanged; m_spline.ControlPointConnectionChanged -= OnControlPointConnectionChanged; m_spline.ControlPointConnectionChanged += OnControlPointConnectionChanged; } m_localPosition = m_spline.GetControlPointLocal(m_index); transform.localPosition = m_localPosition; UpdateRenderersState(); UpdateAngle(true); m_rotation = transform.rotation; Thickness thickness = m_spline.GetThickness(m_index); transform.localScale = thickness.Data; if (!m_spline.IsSelected) { gameObject.SetActive(false); } }
private void DrawSelectedPointInspector() { if (DrawSelectedPointInspectorOverride()) { EditorGUI.BeginChangeCheck(); ControlPointMode mode = (ControlPointMode) EditorGUILayout.EnumPopup("Mode", m_splineBase.GetControlPointMode(m_selectedIndex)); if (EditorGUI.EndChangeCheck()) { SetMode(m_splineBase, mode, m_selectedIndex); } EditorGUI.BeginChangeCheck(); int index = m_selectedIndex; bool isLast = (m_selectedIndex + 1) / 3 == m_splineBase.CurveCount; Twist twist = m_splineBase.GetTwist(index); EditorGUI.BeginChangeCheck(); float twistAngle = EditorGUILayout.FloatField("Twist Angle", twist.Data); if (EditorGUI.EndChangeCheck()) { SetTwistAngle(m_splineBase, index, twistAngle); } if (m_splineBase.Loop || !isLast || m_splineBase.HasBranches(m_selectedIndex)) { float t1 = twist.T1; float t2 = twist.T2; EditorGUI.BeginChangeCheck(); EditorGUILayout.MinMaxSlider(new GUIContent("Twist Offset"), ref t1, ref t2, 0.0f, 1.0f); if (EditorGUI.EndChangeCheck()) { SetTwistOffset(m_splineBase, index, t1, t2); } } Thickness thickness = m_splineBase.GetThickness(index); EditorGUI.BeginChangeCheck(); Vector3 thicknessValue = EditorGUILayout.Vector3Field("Thickness", thickness.Data); if (EditorGUI.EndChangeCheck()) { SetThickness(m_splineBase, index, thicknessValue); } if (m_splineBase.Loop || !isLast || m_splineBase.HasBranches(m_selectedIndex)) { float t1 = thickness.T1; float t2 = thickness.T2; EditorGUI.BeginChangeCheck(); EditorGUILayout.MinMaxSlider(new GUIContent("Thickness Offset"), ref t1, ref t2, 0.0f, 1.0f); if (EditorGUI.EndChangeCheck()) { SetThicknessOffset(m_splineBase, index, t1, t2); } } } else { EditorGUI.BeginChangeCheck(); int index = m_selectedIndex; Twist twist = m_splineBase.GetTwist(index); EditorGUI.BeginChangeCheck(); float twistAngle = EditorGUILayout.FloatField("Twist Angle", twist.Data); if (EditorGUI.EndChangeCheck()) { SetTwistAngle(m_splineBase, index, twistAngle); } Thickness thickness = m_splineBase.GetThickness(index); EditorGUI.BeginChangeCheck(); Vector3 thicknessValue = EditorGUILayout.Vector3Field("Thickness", thickness.Data); if (EditorGUI.EndChangeCheck()) { SetThickness(m_splineBase, index, thicknessValue); } } }
protected void DrawSelectedPointInspector() { if (DrawSelectedPointInspectorOverride()) { EditorGUI.BeginChangeCheck(); ControlPointMode mode = (ControlPointMode) EditorGUILayout.EnumPopup("Mode", m_splineBase.GetControlPointMode(m_selectedIndex)); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(m_splineBase, UNDO_CHANGEMODE); EditorUtility.SetDirty(m_splineBase); SetControlPointMode(m_selectedIndex, mode); } EditorGUI.BeginChangeCheck(); int index = (m_selectedIndex / 3) * 3; Twist twist = m_splineBase.GetTwist(index); EditorGUI.BeginChangeCheck(); float twistAngle = EditorGUILayout.FloatField("Twist Angle", twist.Data); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(m_splineBase, "Battlehub.MeshDeformer2 Twist Angle"); EditorUtility.SetDirty(m_splineBase); twist.Data = twistAngle; SetTwist(index, twist); } if (m_splineBase.Loop || m_selectedIndex / 3 < m_splineBase.CurveCount) { float t1 = twist.T1; float t2 = twist.T2; EditorGUI.BeginChangeCheck(); EditorGUILayout.MinMaxSlider(new GUIContent("Twist Offset"), ref t1, ref t2, 0.0f, 1.0f); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(m_splineBase, "Battlehub.MeshDeformer2 Twist Offset"); EditorUtility.SetDirty(m_splineBase); twist.T1 = t1; twist.T2 = t2; SetTwist(index, twist); } } Thickness thickness = m_splineBase.GetThickness(index); EditorGUI.BeginChangeCheck(); Vector3 thicknessValue = EditorGUILayout.Vector3Field("Thickness", thickness.Data); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(m_splineBase, "Battlehub.MeshDeformer2 Thickness"); EditorUtility.SetDirty(m_splineBase); thickness.Data = thicknessValue; SetThickness(index, thickness); } if (m_splineBase.Loop || m_selectedIndex / 3 < m_splineBase.CurveCount) { float t1 = thickness.T1; float t2 = thickness.T2; EditorGUI.BeginChangeCheck(); EditorGUILayout.MinMaxSlider(new GUIContent("Thickness Offset"), ref t1, ref t2, 0.0f, 1.0f); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(m_splineBase, "Battlehub.MeshDeformer2 Thickness Offset"); EditorUtility.SetDirty(m_splineBase); thickness.T1 = t1; thickness.T2 = t2; SetThickness(index, thickness); } } Wrap wrap = m_splineBase.GetWrap(index); EditorGUI.BeginChangeCheck(); float wrapValue = EditorGUILayout.FloatField("Wrap Curvature", wrap.Data); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(m_splineBase, "Battlehub.MeshDeformer2 Wrap"); EditorUtility.SetDirty(m_splineBase); wrap.Data = wrapValue; SetWrap(index, wrap); } if (m_splineBase.Loop || m_selectedIndex / 3 < m_splineBase.CurveCount) { float t1 = wrap.T1; float t2 = wrap.T2; EditorGUI.BeginChangeCheck(); EditorGUILayout.MinMaxSlider(new GUIContent("Wrap Offset"), ref t1, ref t2, 0.0f, 1.0f); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(m_splineBase, "Battlehub.MeshDeformer2 Wrap Offset"); EditorUtility.SetDirty(m_splineBase); wrap.T1 = t1; wrap.T2 = t2; SetWrap(index, wrap); } } } else { EditorGUI.BeginChangeCheck(); int index = (m_selectedIndex / 3) * 3; Twist twist = m_splineBase.GetTwist(index); EditorGUI.BeginChangeCheck(); float twistAngle = EditorGUILayout.FloatField("Twist Angle", twist.Data); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(m_splineBase, "Battlehub.MeshDeformer2 Twist Angle"); EditorUtility.SetDirty(m_splineBase); twist.Data = twistAngle; SetTwist(index, twist); } Thickness thickness = m_splineBase.GetThickness(index); EditorGUI.BeginChangeCheck(); Vector3 thicknessValue = EditorGUILayout.Vector3Field("Thickness", thickness.Data); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(m_splineBase, "Battlehub.MeshDeformer2 Thickness"); EditorUtility.SetDirty(m_splineBase); thickness.Data = thicknessValue; SetThickness(index, thickness); } Wrap wrap = m_splineBase.GetWrap(index); EditorGUI.BeginChangeCheck(); float wrapValue = EditorGUILayout.FloatField("Wrap Curvature", wrap.Data); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(m_splineBase, "Battlehub.MeshDeformer2 Wrap"); EditorUtility.SetDirty(m_splineBase); wrap.Data = wrapValue; SetWrap(index, wrap); } } }