Пример #1
0
 public void FinishSelection(Material material, System.Action OnFinished)
 {
     m_state           = State.AnimatedExtrude;
     m_meshExtruder    = new MeshExtruder(m_selection);
     m_extrudeMaterial = material;
     m_extrudeTime     = 2;
     m_extrudeStart    = Time.time;
     Debug.Log("Finish selection");
 }
Пример #2
0
    private void Update()
    {
        if (!PlayspaceManager.Instance.IsScanningComplete())
        {
            return;
        }

        // Get current joypad axis values
#if UNITY_EDITOR
        float hor     = Input.GetAxis("Horizontal");
        float ver     = Input.GetAxis("Vertical");
        bool  buttonA = Input.GetKeyDown(KeyCode.Joystick1Button0);
        bool  buttonB = Input.GetKeyDown(KeyCode.Joystick1Button1);
#else
        m_xboxController.Update();
        float hor     = m_xboxController.GetAxisLeftThumbstickX();
        float ver     = m_xboxController.GetAxisLeftThumbstickY();
        bool  buttonA = m_xboxController.GetButtonDown(ControllerButton.A);
        bool  buttonB = m_xboxController.GetButtonDown(ControllerButton.B);
#endif

        float delta = (Mathf.Abs(ver) > 0.25f ? ver : 0) * Time.deltaTime;

        if (m_state == State.Select)
        {
            m_selection.Raycast(Camera.main.transform.position, Camera.main.transform.forward);
            Vector3[] vertices;
            int[]     triangles;
            Vector2[] uv;
            m_selection.GenerateMeshData(out vertices, out triangles, out uv);
            if (vertices.Length > 0)
            {
                m_mesh.Clear();
                m_mesh.vertices  = vertices;
                m_mesh.uv        = uv;
                m_mesh.triangles = triangles;
                m_mesh.RecalculateBounds();
                //TODO: make a GetTransform function
                m_gameObject.transform.rotation   = m_selection.rotation;
                m_gameObject.transform.position   = m_selection.position;
                m_gameObject.transform.localScale = m_selection.scale;
                if (buttonA)
                {
                    m_state        = State.ExtrudeSimple;
                    m_meshExtruder = new MeshExtruder(m_selection);
                }
                else if (buttonB)
                {
                    m_state        = State.ExtrudeCapped;
                    m_meshExtruder = new MeshExtruder(m_selection);
                }
            }
        }
        else if (m_state == State.ExtrudeSimple)
        {
            m_extrudeLength += delta;
            Vector3[] vertices;
            int[]     triangles;
            Vector2[] uv;
            m_meshExtruder.ExtrudeSimple(out vertices, out triangles, out uv, m_extrudeLength, m_topUV, m_sideUV, m_extrudeLength * 100);// SelectionTile.SIDE_CM);
            m_mesh.Clear();
            m_mesh.vertices  = vertices;
            m_mesh.uv        = uv;
            m_mesh.triangles = triangles;
            m_mesh.RecalculateBounds();
            m_mesh.RecalculateNormals();
            m_meshRenderer.material   = extrudeMaterial;
            m_meshCollider.sharedMesh = null;
            m_meshCollider.sharedMesh = m_mesh;
            if (buttonA)
            {
                m_state = State.Finished;
            }
        }
        else if (m_state == State.ExtrudeCapped)
        {
            m_extrudeLength += delta;
            Vector3[] vertices;
            int[]     triangles;
            Vector2[] uv;
            m_meshExtruder.ExtrudeCapped(out vertices, out triangles, out uv, m_extrudeLength, m_topUV, m_sideUV, m_sideUV);
            m_mesh.Clear();
            m_mesh.vertices  = vertices;
            m_mesh.uv        = uv;
            m_mesh.triangles = triangles;
            m_mesh.RecalculateBounds();
            m_mesh.RecalculateNormals();
            m_meshRenderer.material   = extrudeMaterial;
            m_meshCollider.sharedMesh = null;
            m_meshCollider.sharedMesh = m_mesh;
            if (buttonA)
            {
                m_state = State.Finished;
            }
        }
    }