// PlayerChangingChunk Event method. void PlayerChangingChunk(object source, MyEventArgs e) { Vector3 testPosition = UnityTools.Ceiling(transform.position, chunkLength / 2); lastChunk = currentChunk; currentChunk = UnityTools.ClosestWithTag(this.gameObject, "Chunk"); currentChunk.layer = 9; lastChunk.layer = 8; }
// FacingChunkChanged Event method. void FacingChunkChanged(object source, MyEventArgs e) { Vector3 fwd = transform.TransformDirection(Vector3.forward); RaycastHit hit; Ray ray = new Ray(transform.position, fwd); if (Physics.Raycast(ray, out hit, chunkLength / 2, 8)) { pointingChunk = hit.transform.parent.gameObject; } Vector3 testPosition = UnityTools.Ceiling(transform.position + (transform.forward * ((chunkLength / 2) - 1)), chunkLength); }
// A coroutine that tries to grow the amount of active chunks. IEnumerator TryToGrowChunks() { while (true) { List <Vector3> chunkCheckPositions = new List <Vector3>(); foreach (Vector3 vec3 in localChunkPositions) { Vector3 key = vec3 + transform.position; key = UnityTools.Ceiling(key, chunkLength); if (!master.GetComponent <MasterController>().chunkData.ContainsKey(key)) { chunkCheckPositions.Add(key); } } chunkCheckPositions.ForEach(x => TryToAddChunk(x)); CheckLoadedChunks(chunkCheckPositions); yield return(new WaitForSeconds(2f)); } }
// PlayerAtEdge Event method. void PlayerAtEdge(object source, MyEventArgs e) { Vector3 testPosition = UnityTools.Ceiling(transform.position + (transform.forward * ((chunkLength / 2) - 1)), chunkLength); }