示例#1
0
    public void AddBuildPartToBuilding(TempBuildComponent buildPart, Vector3 pos)
    {
        GameObject goToAddMeshTo = GetActiveBuilding(pos);

        buildPart.go.transform.SetParent(goToAddMeshTo.transform);
        goToAddMeshTo.AddComponent <CombineMeshes>();
    }
示例#2
0
    public void MakeBuildPart(Item buildPart, Cube.Type face)
    {
        Mesh mesh = MakeMesh(buildPart, face, 0, 0, 0);

        //Create a temporary GO for the buildpart
        GameObject buildPartGO = new GameObject();

        buildPartGO.AddComponent <MeshFilter>();
        buildPartGO.AddComponent <MeshRenderer>();

        //Add the mesh
        buildPartGO.GetComponent <MeshFilter>().mesh             = mesh;
        buildPartGO.GetComponent <MeshRenderer>().sharedMaterial = ChunksManager.blockMat;

        buildPartGO.transform.eulerAngles = BuildMouseBehaviour.active.lastRot;

        //Communicate with mouse
        BuildMouseBehaviour.active.clickTimer = 0;
        TempBuildComponent comp = new TempBuildComponent();

        comp.go   = buildPartGO;
        comp.item = buildPart;
        comp.face = face;
        BuildMouseBehaviour.active.SetGOFollowMouse(comp);
    }
示例#3
0
    // Update is called once per frame
    void Update()
    {
        clickTimer += Time.deltaTime;



        if (currentBuildPart != null)
        {
            RaycastHit hit;
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            if (Physics.Raycast(ray, out hit))
            {
                Vector3 roundedPos;
                if (!Mathf.Approximately(0, currentBuildPart.go.transform.rotation.eulerAngles.y % 180))
                {
                    roundedPos = new Vector3(Mathf.Round(hit.point.x * 2) / 2 + currentBuildPart.item.xOffSet, Mathf.Ceil(hit.point.y) + currentBuildPart.item.yOffSet, Mathf.Round(hit.point.z * 2) / 2);
                }
                else
                {
                    roundedPos = new Vector3(Mathf.Round(hit.point.x * 2) / 2, Mathf.Ceil(hit.point.y) + currentBuildPart.item.yOffSet, Mathf.Round(hit.point.z * 2) / 2 - currentBuildPart.item.zOffSet);
                }

                if (Input.GetKeyUp(KeyCode.R))
                {
                    currentBuildPart.go.transform.Rotate(new Vector3(0, 90, 0));
                    lastRot = currentBuildPart.go.transform.eulerAngles;
                }
                currentBuildPart.go.transform.position = roundedPos;
            }



            if (Input.GetMouseButtonUp(0) && clickTimer > 0.1f)
            {
                Debug.Log("Clicker");
                BuildActions.active.AddBuildPartToBuilding(currentBuildPart, hit.point);
                previous         = currentBuildPart;
                currentBuildPart = null;
                if (Input.GetKey(KeyCode.LeftAlt))
                {
                    BuildActions.active.MakeBuildPart(previous.item, previous.face);
                }
            }
        }
    }
示例#4
0
 public void DetachGOFromMouse()
 {
     currentBuildPart = null;
 }
示例#5
0
 public void SetGOFollowMouse(TempBuildComponent comp)
 {
     currentBuildPart = comp;
 }