public void tunnelFrom(CaveBody body, Vector3 dir) { CaveManager.tunnels.Add(this); GameObject digObj = CaveManager.getNewDigger(); digObj.transform.localScale = new Vector3(1, 1, 1); digger = digObj.GetComponent <Digger>(); digger.init(this); digger.colID = body.centerColumnID; digger.tier = body.tier + 1; digger.layer = body.centerDepth + 2; destDepth = body.centerDepth + tunnelDepth; digger.neighbourCount = 0; digger.transform.position = Vector3.zero; digger.setScale(tunnelSize); digger.gradient = 2; direction = dir; digger.right = Vector3.Cross(direction, -MapManager.manager.getPositionOf(0, body.centerColumnID)).normalized; digger.travelDir = direction.normalized; //Debug.Log("creating new digger with dir = " + digger.travelDir + " right = " + digger.right); digger.nextDest = 3 * MapManager.manager.getPositionOf(0, body.centerColumnID) - 2 * MapManager.manager.getPositionOf(1, body.centerColumnID); digger.gameObject.SetActive(true); digger.travelToNext(); }
internal void createEntranceAt(int colID, Vector3 dir) { columnID = colID; CaveManager.entrances.Add(this); GameObject digObj = CaveManager.getNewDigger(); digObj.transform.localScale = new Vector3(1, 1, 1); digger = digObj.GetComponent <Digger>(); digger.init(this); digger.colID = colID; digger.tier = 0; digger.layer = 0; digger.neighbourCount = 0; digger.transform.position = Vector3.zero; digger.setScale(entrancesize); digger.gradient = 2; direction = dir.normalized; if (direction.magnitude != 1) { Debug.LogError("digging entrance with no direction, dir = " + direction); } digger.right = Vector3.Cross(direction, -MapManager.manager.getPositionOf(0, columnID)).normalized; digger.travelDir = direction.normalized; //Debug.Log("creating new digger with dir = " + digger.travelDir + " right = " + digger.right); digger.nextDest = 3 * MapManager.manager.getPositionOf(0, colID) - 2 * MapManager.manager.getPositionOf(1, colID); digger.gameObject.SetActive(true); digger.travelToNext(); }