private void HideScaffold(Entity building) { if (this.viewObjects.ContainsKey(building)) { GameObjectViewComponent gameObjectViewComponent = building.Get <GameObjectViewComponent>(); List <ScaffoldingData> list = this.viewObjects[building]; int i = 0; int count = list.Count; while (i < count) { ScaffoldingData scaffoldingData = list[i]; GameObject gameObj = scaffoldingData.GameObj; if (gameObj != null && gameObjectViewComponent != null) { gameObjectViewComponent.DetachGameObject(gameObj.name); } this.UnloadScaffold(scaffoldingData); i++; } list.Clear(); this.viewObjects.Remove(building); if (this.waitingForView.Contains(building)) { this.waitingForView.Remove(building); } } }
private void ShowScaffold(Entity building) { if (!this.viewObjects.ContainsKey(building)) { SmartEntity smartEntity = (SmartEntity)building; BuildingComponent buildingComp = smartEntity.BuildingComp; if (buildingComp == null) { return; } BuildingTypeVO buildingType = buildingComp.BuildingType; FactionType faction = buildingType.Faction; string text; if (faction != FactionType.Empire) { text = "rbl"; } else { text = "emp"; } if (text != null) { List <string> list = new List <string>(); List <object> list2 = new List <object>(); List <AssetHandle> list3 = new List <AssetHandle>(); int num = Math.Min(buildingType.SizeY, 6); for (int i = 2; i <= num; i++) { string item = string.Format("scaffold_{0}-mod_{1}", text, i); list.Add(item); list2.Add(new ScaffoldingData(building, num - i, false)); list3.Add(AssetHandle.Invalid); } int num2 = Math.Min(buildingType.SizeX, 6); for (int j = 2; j <= num2; j++) { string item2 = string.Format("scaffold_{0}-mod_{1}", text, j); list.Add(item2); list2.Add(new ScaffoldingData(building, num2 - j, true)); list3.Add(AssetHandle.Invalid); } if (list.Count > 0) { Service.AssetManager.MultiLoad(list3, list, new AssetSuccessDelegate(this.OnAssetSuccess), new AssetFailureDelegate(this.OnAssetFailure), list2, null, null); int k = 0; int count = list2.Count; while (k < count) { ScaffoldingData scaffoldingData = (ScaffoldingData)list2[k]; scaffoldingData.Handle = list3[k]; k++; } List <ScaffoldingData> value = new List <ScaffoldingData>(); this.viewObjects.Add(building, value); } } } }
private void OnAssetSuccess(object asset, object cookie) { GameObject gameObject = (GameObject)asset; ScaffoldingData scaffoldingData = (ScaffoldingData)cookie; scaffoldingData.GameObj = gameObject; Entity building = scaffoldingData.Building; if (this.viewObjects.ContainsKey(building)) { int offset = scaffoldingData.Offset; bool flip = scaffoldingData.Flip; gameObject.name = string.Format("Scaffold_{0}_{1}{2}", new object[] { building.ID, flip ? "L" : "R", offset }); BuildingComponent buildingComponent = building.Get <BuildingComponent>(); BuildingTypeVO buildingType = buildingComponent.BuildingType; Transform transform = gameObject.transform; float num; float num2; if (flip) { num = (float)(-(float)offset); num2 = 0f; transform.localScale = new Vector3(-1f, 1f, 1f); transform.rotation = Quaternion.AngleAxis(-180f, Vector3.up); } else { num = 0f; num2 = (float)(-(float)offset); transform.rotation = Quaternion.AngleAxis(-90f, Vector3.up); } transform.localPosition = new Vector3((num + (float)buildingType.SizeX * 0.5f) * 3f, 0f, (num2 + (float)buildingType.SizeY * 0.5f) * 3f); List <ScaffoldingData> list = this.viewObjects[building]; list.Add(scaffoldingData); GameObjectViewComponent gameObjectViewComponent = building.Get <GameObjectViewComponent>(); if (gameObjectViewComponent != null) { this.AttachToView(gameObject, gameObjectViewComponent); return; } gameObject.SetActive(false); if (!this.waitingForView.Contains(building)) { this.waitingForView.Add(building); return; } } else { this.UnloadScaffold(scaffoldingData); } }
private void UnloadScaffold(ScaffoldingData data) { if (data.GameObj != null) { UnityEngine.Object.Destroy(data.GameObj); data.GameObj = null; } if (data.Handle != AssetHandle.Invalid) { Service.AssetManager.Unload(data.Handle); data.Handle = AssetHandle.Invalid; } }