Example #1
0
    public override void OnTriggerDown()
    {
        if (m_PointerController.collidingObject != null)
        {
            m_PointerController.IncreaseSizeOfPointer();

            if (m_PointerController.collidingObject.GetComponent <ShapeType>().m_ShapeType == ShapeTypeEnum.Area)
            {
                GameObject area = m_PointerController.collidingObject.transform.parent.gameObject;
                // TODO: change back
                m_DrawableShape.m_AreaLocalRotation = area.transform.localRotation;
                m_DrawableShape.m_AreaLocalScale    = area.transform.localScale;
                m_DrawableShape.m_AreaForwardDir    = area.transform.forward;
                m_DrawableShape.StartDrawing(area.transform.position);
            }
            else if (m_PointerController.collidingObject.GetComponent <ShapeType>().m_ShapeType == ShapeTypeEnum.Polygon)
            {
                // start extruding mesh
                GameObject polygon = m_PointerController.collidingObject;
                // drawing = Tool.Volume;
                initialPosition = polygon.transform.position;

                m_MeshCreatorController = polygon.GetComponent <MeshCreatorController>();
            }

            OnTriggerHold();
        }
    }
Example #2
0
    void Start()
    {
        m_Parent          = transform.parent.gameObject;
        m_RectTransform   = gameObject.GetComponent <RectTransform>();
        m_BaseScale       = m_RectTransform.localScale;
        m_BaseWidthHeight = m_RectTransform.sizeDelta;

        UpdateSpecific = NOP;

        if (m_Parent.name.Contains("Clone"))
        {
            if (m_Parent.name.Contains("Line"))
            {
                m_ScaleDim      = "y";
                m_FollowCamera  = true;
                scaleMultiplier = .5f;
                m_OriginalImage = transform.Find("Image").gameObject;

                UpdateSpecific = SpecificUpdate;
            }
            else if (m_Parent.name.Contains("Volume"))
            {
                m_VolumeForwardController = m_Parent.GetComponent <VolumeForwardController>();
                m_ScaleDim               = "x";
                m_OriginalImage          = transform.Find("Image (Horz)").gameObject; // TODO: rename
                m_CrossAxisOriginalImage = transform.Find("Image (Vert)").gameObject;
                m_Volume = true;
                AdjustCrossAxisTicks();
                SetInitial();

                UpdateSpecific = SpecificUpdate;
            }
            else if (m_Parent.name.Contains("Mesh"))
            {
                m_MeshCreator            = m_Parent.GetComponent <MeshCreatorController>();
                m_PointerController      = m_Pointer.GetComponent <PointerController>();
                transform.localScale     = Vector3.zero;
                m_ScaleDim               = "";
                m_OriginalImage          = transform.Find("Image (Horz)").gameObject;
                m_CrossAxisOriginalImage = transform.Find("Image (Vert)").gameObject;
                CreateGridForMesh();

                UpdateSpecific = MeshUpdate;
            }
        }
        else if (m_Parent.transform.parent.gameObject.name.Contains("Clone") && m_Parent.transform.parent.gameObject.name.Contains("Area"))
        {
            m_ScaleDim = "x";

            m_Parent                 = m_Parent.transform.parent.gameObject;
            m_OriginalImage          = transform.Find("Image (Horz)").gameObject; // TODO: rename
            m_CrossAxisOriginalImage = transform.Find("Image (Vert)").gameObject;
            UpdateSpecific           = SpecificUpdate;
            AdjustCrossAxisTicks();
        }

        UpdateGridScale();
        GlobalGridScale.AddScaleListener(UpdateGridScale);
    }
Example #3
0
    void Start()
    {
        m_Parent          = transform.parent.gameObject;
        m_RectTransform   = gameObject.GetComponent <RectTransform>();
        m_BaseScale       = m_RectTransform.localScale;
        m_BaseWidthHeight = m_RectTransform.sizeDelta;

        m_MeshCreator            = m_Parent.GetComponent <MeshCreatorController>();
        m_PointerController      = m_Pointer.GetComponent <PointerController>();
        transform.localScale     = Vector3.zero;
        m_OriginalImage          = transform.Find("Image (Horz)").gameObject;
        m_CrossAxisOriginalImage = transform.Find("Image (Vert)").gameObject;

        UpdateGridScale();
        GlobalGridScale.AddScaleListener(UpdateGridScale);
    }
    public void MouseUp()
    {
        // finish drawing
        if (drawing == Tool.None && m_CurrentTool != Tool.Mesh)
        {
            return;
        }

        if (m_CurrentTool != Tool.Mesh && (m_CurrentTool != Tool.Volume || m_MeshForVolume == null))
        {
            drawing = Tool.None;

            initialPosition = Vector3.zero;
            currentPosition = Vector3.zero;

            m_PointerController.DecreaseSizeOfPointer();
        }

        // drag out
        switch (m_CurrentTool)
        {
        case Tool.Line:
            // TODO: change back
            m_DrawableLine.StopDrawing(m_SnapToGrid);
            break;

        case Tool.Area:
            // TODO: change back
            m_DrawableArea.StopDrawing(m_SnapToGrid);

            Destroy(m_LineForArea);
            break;

        case Tool.Volume:
            // if (m_VolumeCopy != null)
            // {
            if (m_MeshForVolume == null)
            {
                // TODO: change back
                m_DrawableVolume.StopDrawing(m_SnapToGrid);

                Destroy(m_AreaForVolume);
            }
            else
            {
                m_PointerController.DecreaseSizeOfPointer();

                m_MeshForVolume.GetComponent <LightUpOnCollision>().SetEnabled(false);

                if (m_MeshCreatorController.m_SnapToGrid)
                {
                    DrawVolume(true);
                }

                m_MeshForVolume = null;
                m_MeshCreatorController.FinishMesh();
                m_PointerController.collidingObject = null;
                currentPosition = Vector3.zero;
                initialPosition = Vector3.zero;
                drawing         = Tool.None;
            }
            break;

        case Tool.Sphere:
            m_DrawableSphere.StopDrawing(m_SnapToGrid);
            break;

        case Tool.Mesh:
            if (drawing != Tool.Mesh)     // start drawing mesh
            {
                m_PointerController.IncreaseSizeOfPointer();

                drawing                 = Tool.Mesh;
                initialPosition         = m_Pointer.transform.position;
                m_MeshCopy              = UnityEngine.Object.Instantiate(m_Mesh, initialPosition, Quaternion.identity, m_Parent.transform);
                m_MeshCreatorController = m_MeshCopy.GetComponent <MeshCreatorController>();

                m_LineCopy = m_MeshCreatorController.AddLine(initialPosition);
                DrawMesh();
            }
            else
            {
                // want to end current line and start new line unless we are back at the starting position
                // if m_MeshCreatorController.m_SnapToGrid is true, then the line should snap to a whole number plus the initial pos
                if (m_MeshCreatorController.m_SnapToGrid)
                {
                    // last currentPosition should snap to the first initial position plus or minus a whole number
                    DrawMesh(true);
                    initialPosition = currentPosition;
                }
                else
                {
                    initialPosition = m_Pointer.transform.position;
                }

                GameObject originalLine = m_MeshCreatorController.GetLine(0);
                if (originalLine.transform.Find("Sphere").gameObject.GetComponent <LightUpOnCollision>().collision)
                {
                    m_PointerController.DecreaseSizeOfPointer();

                    // end mesh
                    m_LineCopy = null;
                    drawing    = Tool.None;

                    m_MeshCreatorController.CreateMesh();
                    m_MeshCreatorController.DeleteLines();

                    m_PointerController.UnrestrictPointerToInsideRays();
                    m_PointerController.isCentered = true;
                }
                else
                {
                    // new line
                    m_LineCopy = m_MeshCreatorController.AddLine(initialPosition);
                    DrawMesh();
                }
            }
            break;

        case Tool.None:
        default:
            break;
        }
    }
    public void Clicked()
    {
        // initialize a move
        switch (m_CurrentTool)
        {
        case Tool.Line:
            m_PointerController.IncreaseSizeOfPointer();

            // draw point ?
            drawing = Tool.Line;


            // TODO:
            m_DrawableLine.StartDrawing(m_Pointer.transform.position);

            break;

        case Tool.Area:
            if (m_PointerController.collidingObject != null && m_PointerController.collidingObject.name.Contains("Line"))
            {
                m_PointerController.IncreaseSizeOfPointer();

                m_LineForArea = m_PointerController.collidingObject;
                drawing       = Tool.Area;

                // TODO: change back
                m_DrawableArea.m_UpVec  = m_LineForArea.transform.up;
                m_DrawableArea.m_YScale = m_LineForArea.transform.localScale.y;
                m_DrawableArea.StartDrawing(m_LineForArea.transform.position);

                Dragged();     // TODO: do we need? if so add to post start
            }
            break;

        case Tool.Volume:
            if (m_PointerController.collidingObject != null)
            {
                m_PointerController.IncreaseSizeOfPointer();

                if (m_PointerController.collidingObject.transform.parent.gameObject.name.Contains("Area"))
                {
                    m_AreaForVolume = m_PointerController.collidingObject.transform.parent.gameObject;
                    drawing         = Tool.Volume;
                    // TODO: change back
                    m_DrawableVolume.m_AreaLocalRotation = m_AreaForVolume.transform.localRotation;
                    m_DrawableVolume.m_AreaLocalScale    = m_AreaForVolume.transform.localScale;
                    m_DrawableVolume.m_AreaForwardDir    = m_AreaForVolume.transform.forward;
                    m_DrawableVolume.StartDrawing(m_AreaForVolume.transform.position);
                }
                else if (m_PointerController.collidingObject.transform.name.Contains("Mesh"))
                {
                    // start extruding mesh
                    m_MeshForVolume = m_PointerController.collidingObject;
                    drawing         = Tool.Volume;
                    initialPosition = m_MeshForVolume.transform.position;

                    m_MeshCreatorController = m_MeshForVolume.GetComponent <MeshCreatorController>();
                }

                Dragged();
            }
            break;

        case Tool.Sphere:
            drawing = Tool.Sphere;
            m_DrawableSphere.StartDrawing(m_Pointer.transform.position);
            break;

        case Tool.Mesh:


            // TODO
            // maybe create a plane that we draw on with a grid (could make the grid lines variable in spacing)
            break;

        case Tool.None:
        default:
            drawing = Tool.None;
            break;
        }
    }