示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
                }
            }
        }