void Start() { wm = GameObject.FindObjectOfType <WorldMover>(); bg = GetComponent <BaseBuildingGroup>(); if (wm != null) { transform.position -= wm.currentMove; } }
GameObject LoadSpecificData(BuildingSaveData building) { GameObject buildingPrefab = PrefabDB.instance.GetGO(building.prefabID); if (buildingPrefab != null) { GameObject go = GameObject.Instantiate(buildingPrefab); BaseBuilding buildingScript = go.GetComponent <BaseBuilding>(); if (instanceGroup == null) { instanceGroup = BaseBuildingGroup.CreateGroup((Vector3)building.pos, buildingScript.buildingGroupType); } buildingScript.buildingGroup = instanceGroup; go.transform.position = (Vector3)building.pos; go.transform.rotation = (Quaternion)building.rot; buildingScript.health = building.health; buildingScript.uid = building.uniqueID; BaseBuilding currentBuilding; BaseSocket snappedTo; for (int i = 0; i < instanceGroup.buildings.Count; i++) { currentBuilding = instanceGroup.buildings[i]; if (currentBuilding.uid == building.placedOnUID) { snappedTo = currentBuilding.ReturnSocket((Vector3)building.pos, buildingScript.buildingType); buildingScript.SnappedTo = snappedTo; buildingScript.placedOn = currentBuilding; break; } } buildingScript.PlaceBuilding(); for (int i = 0; i < instanceGroup.buildings.Count; i++) // handle occoupied sockets to make sure there's no sockets on each other. { currentBuilding = instanceGroup.buildings[i]; instanceGroup.HandleOccupiedSockets(currentBuilding); } CallOnLoad(buildingScript); return(go); } return(null); }
/// <summary> /// Add the target to our list /// </summary> protected override void OnEnable() { buildingGroup = GetComponent <BaseBuildingGroup>(); if (buildingGroup != null) { buildingGroup.OnBuildingAddedEvent += GroupBuildingAdded; buildingGroup.OnBuildingRemovedEvent += GroupBuildingRemoved; } base.OnEnable(); }
/// <summary> /// Handle the AOI results /// </summary> /// <param name="finder">the finder that our results got changed of</param> /// <param name="_inRange">are we in range of the finder?</param> public override void HandleAOI(BaseAOIFinder finder, bool _inRange) { base.HandleAOI(finder, _inRange); if (buildingGroup == null) { buildingGroup = GetComponent <BaseBuildingGroup>(); } if (buildingGroup != null) { buildingGroup.AOIGroup(_inRange, finder.aoiPosition, finder.radius); } }