Item SelfGenerate(CityData.ItemGenerateInstruction _instruction) { Item prefab = SceneController.CONTEXT.ItemGeneratorCtrl.GetItemPrefabById(_instruction.id); Item item = prefab.Generate(this.LevelPlane(_instruction.position.y / 2), _instruction.position, _instruction.rotation); return(item); }
// Start is called before the first frame update void Start() { for (int i = 0; i < m_cityData.itemGenerateInstructions.Count; i++) { CityData.ItemGenerateInstruction instruction = m_cityData.itemGenerateInstructions[i]; Item item = SelfGenerate(instruction); instruction.item = item; m_cityData.AddItemInMap(instruction); } }
// 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); Vector3Int offsetPosition = SceneController.CONTEXT.city.Data.GetOffsetPosition(itemPosition); CityData.ItemGenerateInstruction instruction = SceneController.CONTEXT.city.Data.GetInstructionByPosition(offsetPosition); if (instruction != m_instruction) { if (m_instruction != null) { m_instruction.item.UnSelected(); } m_instruction = instruction; if (instruction != null) { instruction.item.Selected(); } } if (m_instruction != null) { if (Input.GetMouseButtonDown(0)) { SceneController.CONTEXT.city.ItemDestroy(m_instruction); m_instruction = null; } } } } } }
public virtual bool CheckMapAvaliable(Vector3Int _position, int _rotation) { Vector3Int pos1 = new Vector3Int(); Vector3Int pos2 = new Vector3Int(); SceneController.CONTEXT.city.Data.GetStartAndEnd(_position, _rotation, size, ref pos1, ref pos2); for (int i = pos1.x; i <= pos2.x; i++) { for (int j = pos1.z; j <= pos2.z; j++) { CityData.ItemGenerateInstruction instruction = SceneController.CONTEXT.city.Data.GetInstructionByPosition(new Vector3Int(i, pos1.y, j)); if (instruction != null) { return(false); } } } return(true); }
public void ItemDestroy(CityData.ItemGenerateInstruction _instruction) { m_cityData.RemoveInstruction(_instruction); Destroy(_instruction.item.gameObject); }