public void AddBuildPartToBuilding(TempBuildComponent buildPart, Vector3 pos) { GameObject goToAddMeshTo = GetActiveBuilding(pos); buildPart.go.transform.SetParent(goToAddMeshTo.transform); goToAddMeshTo.AddComponent <CombineMeshes>(); }
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); }
// 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); } } } }
public void DetachGOFromMouse() { currentBuildPart = null; }
public void SetGOFollowMouse(TempBuildComponent comp) { currentBuildPart = comp; }