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"); }
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; } } }