public bool IsConstructionSiteValid(Structure constructionSite) { Bounds buildSiteBounds = constructionSite.SelectionBounds; List<Vector3> allCorners = GameManager.GetBoundsCorners(buildSiteBounds); foreach (Vector3 corner in allCorners) { GameObject hitGameObject = UserInput.GetHitGameObject(corner); if (hitGameObject == null) { continue; } bool hitGameObjectIsGround = hitGameObject.CompareTag(Tags.GROUND); if (hitGameObjectIsGround == true) { continue; } Selectable hitEntity = hitGameObject.GetComponentInParent<Selectable>(); if (hitEntity == null) { continue; } Bounds hitEntityBounds = hitEntity.SelectionBounds; bool boundsIntersect = buildSiteBounds.Intersects(hitEntityBounds); if (boundsIntersect == false) { continue; } return false; } return true; }
public virtual void SetSpawner(Structure spawner) { }
public void SpawnUnit(string unitName, Vector3 spawnPoint, Vector3 rallyPoint, Quaternion startingOrientation, Structure spawner) { GameObject allUnits = transform.Find(PlayerProperties.UNITS).gameObject; if (allUnits == null) { return; } GameObject unitToSpawn = (GameObject)Instantiate(GameManager.Singleton.GetUnitPrefab(unitName), spawnPoint, startingOrientation); unitToSpawn.transform.parent = allUnits.transform; Debug.Log(string.Format("Spawned {0} for player {1}", unitName, PlayerId.ToString())); if (rallyPoint == GlobalAssets.InvalidPoint) { return; } Selectable controller = unitToSpawn.GetComponent<Selectable>(); if (controller == null) { return; } controller.SetSpawner(spawner); if (spawnPoint == rallyPoint) { return; } controller.SetWaypoint(rallyPoint); }