Example #1
0
    // Update is called once per frame
    void Update()
    {
        if (m_isWorking == true)
        {
            if (Input.GetMouseButtonDown(1))
            {
                ExitBuilding();
            }
            else
            {
                Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;
                if (!EventSystem.current.IsPointerOverGameObject() && Physics.Raycast(ray, out hit, 1000.0f, 1 << 11))
                {
                    Vector3    localVector  = GLobalToLocal(hit.point);
                    Vector3Int itemPosition = HitToMap(localVector);
                    bool       avaliable    = CheckPlaneUpdate(itemPosition);

                    if (avaliable)
                    {
                        if (Input.GetMouseButtonDown(0))
                        {
                            Generate(itemPosition);
                        }
                    }
                }
            }

            if (Input.GetKeyDown(KeyCode.E))
            {
                m_rotation_offset = (m_rotation_offset + 1) % 4;
                m_itemPre.SetRotation(m_rotation_offset);
            }
            else if (Input.GetKeyDown(KeyCode.Q))
            {
                m_rotation_offset = (m_rotation_offset - 1 + 4) % 4;
                m_itemPre.SetRotation(m_rotation_offset);
            }
        }
    }