Пример #1
0
        void DeleteLastSegment()
        {
            if (m_instance.PointCount() > 4)
            {
                TubeGraphic.OrientedPoint[] newPoints = new TubeGraphic.OrientedPoint[m_instance.PointCount() - ((m_instance.SegmentCount() > 1) ? 3 : 4)];

                for(int i=0; i < newPoints.Length; i++)
                {
                    newPoints[i] = m_instance.GetPointAtIndex(i);
                }

                m_instance.SetAllPoints(newPoints);
            }
        }
Пример #2
0
        void AddNewSegment()
        {
            // get the position of the last point in the spline (assume origin if no points exist)
            Vector3 endPoint = m_instance.EndPoint();
            Vector3 direction = m_instance.EndDirection();
            Vector3 upDirection = m_instance.EndUpDirection();

            TubeGraphic.OrientedPoint[] newPoints = new TubeGraphic.OrientedPoint[(m_instance.PointCount() == 0) ? 4 : 3];
            Vector3 placementPoint = endPoint;
            for(int i=0; i < newPoints.Length; i++) // new point generation
            {
                placementPoint += direction * 0.2f;

                TubeGraphic.OrientedPoint newPoint = new TubeGraphic.OrientedPoint();

                newPoint.Position = placementPoint;
                newPoint.Rotation = Quaternion.LookRotation(direction, upDirection);
                newPoints[i] = newPoint;
            }

            m_instance.AddNewPoints(newPoints);
        }
Пример #3
0
        public void OnSceneGUI()
        {
            for(int pointIndx=0; pointIndx < m_instance.PointCount(); pointIndx++)
            {
                Handles.color = (pointIndx == selectedPoint) ? Color.red : Color.blue;

                TubeGraphic.OrientedPoint point = m_instance.GetPointAtIndex(pointIndx);

                if(Handles.Button(point.Position, Quaternion.identity, HandleScale, HandleScale, Handles.SphereHandleCap))
                {
                    SelectIndex(pointIndx);
                    Repaint();
                }

                if(selectedPoint == pointIndx)
                {
                    // show our handle and allow editing
                    switch (Tools.current)
                    {
                        case Tool.View:
                        case Tool.None:
                        case Tool.Rect:
                            break;

                        case Tool.Move:
                            Vector3 newPosition = Handles.PositionHandle(point.Position, point.Rotation);
                            m_instance.SetPointAtIndex(new TubeGraphic.OrientedPoint()
                            { Position = newPosition, Rotation = point.Rotation }, pointIndx);
                            break;

                        case Tool.Rotate:
                            Quaternion newRotation = Handles.RotationHandle(point.Rotation, point.Position);
                            m_instance.SetPointAtIndex(new TubeGraphic.OrientedPoint()
                            { Position = point.Position, Rotation = newRotation }, pointIndx);
                            break;

                        case Tool.Scale:
                            break;

                        case Tool.Transform:
                            break;
                        default:
                            break;
                    }
                }
            }

            if(drawMeshProperty.boolValue)
            {
                TubeGraphic.DrawIDType drawType = (TubeGraphic.DrawIDType)drawIDTypeProperty.enumValueIndex;

                switch (drawType)
                {
                    case TubeGraphic.DrawIDType.vertex:
                        DrawVertIDs();
                        break;

                    case TubeGraphic.DrawIDType.face:
                        DrawFaceIDs();
                        break;

                    case TubeGraphic.DrawIDType.both:
                        DrawVertIDs();
                        DrawFaceIDs();
                        break;
                    default:
                        break;
                }
            }
        }