private IEnumerator OnPlaced() { if (!this._wasPlaced && !this._wasBuilt && !BoltNetwork.isClient) { base.transform.position = this._multiPointsPositions.First <Vector3>(); base.transform.LookAt(this._multiPointsPositions.Last <Vector3>()); this._multiPointsPositions = (from p in this._multiPointsPositions select this.$this.transform.InverseTransformPoint(p)).ToList <Vector3>(); } this.WasPlaced = true; base.enabled = false; this._craftStructure.GetComponent <Collider>().enabled = false; Scene.HudGui.RoofConstructionIcons.Shutdown(); Scene.HudGui.RotateIcon.SetActive(false); yield return(null); if (this._craftStructure) { UnityEngine.Object.Destroy(base.GetComponent <Rigidbody>()); UnityEngine.Object.Destroy(base.GetComponent <Collider>()); Transform newStairs = this.SpawnStructure(); if (this._stairsRoot) { UnityEngine.Object.Destroy(this._stairsRoot.gameObject); } this._stairsRoot = newStairs; Transform ghostRoot = this._stairsRoot; Transform transform = ghostRoot; transform.name += "Ghost"; this._logPool = null; this._newPool = null; Craft_Structure.BuildIngredients ri = this._craftStructure._requiredIngredients.FirstOrDefault((Craft_Structure.BuildIngredients i) => i._itemID == this.$this._logItemId); int amount = 0; List <GameObject> stairsLogs = new List <GameObject>(); List <GameObject> stiltsLogs = new List <GameObject>(); Material stiltMat = Prefabs.Instance.LogStiltStairsGhostBuiltPrefab.GetComponentInChildren <Renderer>().sharedMaterial; IEnumerator enumerator = this._stairsRoot.GetEnumerator(); try { while (enumerator.MoveNext()) { object obj = enumerator.Current; Transform transform2 = (Transform)obj; IEnumerator enumerator2 = transform2.GetEnumerator(); try { while (enumerator2.MoveNext()) { object obj2 = enumerator2.Current; Transform transform3 = (Transform)obj2; amount++; IEnumerator enumerator3 = transform3.GetEnumerator(); try { while (enumerator3.MoveNext()) { object obj3 = enumerator3.Current; Transform transform4 = (Transform)obj3; Renderer componentInChildren = transform4.GetComponentInChildren <Renderer>(); if (componentInChildren.sharedMaterial == stiltMat) { stiltsLogs.Add(componentInChildren.gameObject); } else { stairsLogs.Add(componentInChildren.gameObject); } } } finally { IDisposable disposable; if ((disposable = (enumerator3 as IDisposable)) != null) { disposable.Dispose(); } } } } finally { IDisposable disposable2; if ((disposable2 = (enumerator2 as IDisposable)) != null) { disposable2.Dispose(); } } } } finally { IDisposable disposable3; if ((disposable3 = (enumerator as IDisposable)) != null) { disposable3.Dispose(); } } ri.AddRuntimeObjects(stiltsLogs.AsEnumerable <GameObject>().Reverse <GameObject>(), Prefabs.Instance.LogStiltStairsGhostBuiltPrefab.GetComponentInChildren <Renderer>().sharedMaterial); ri.AddRuntimeObjects(stairsLogs.AsEnumerable <GameObject>().Reverse <GameObject>(), Prefabs.Instance.LogStairsBuiltPrefab.GetComponentInChildren <Renderer>().sharedMaterial); ri._amount += amount; ghostRoot.transform.parent = null; this._stairsRoot.transform.parent = base.transform; ghostRoot.transform.parent = base.transform; BoxCollider bc; if (this._craftStructure.GetComponent <Collider>() is BoxCollider) { bc = (BoxCollider)this._craftStructure.GetComponent <Collider>(); } else { bc = this._craftStructure.gameObject.AddComponent <BoxCollider>(); bc.isTrigger = true; } Bounds b = default(Bounds); foreach (Vector3 position in this._multiPointsPositions) { b.Encapsulate(this._craftStructure.transform.InverseTransformPoint(base.transform.TransformPoint(position))); } b.Encapsulate(this._craftStructure.transform.InverseTransformPoint(this.GetPointFloorPosition(this._craftStructure.transform.position))); Vector3 localSize = b.size; localSize.x = Mathf.Max(localSize.x, 6f); localSize.y = Mathf.Max(localSize.y, 3f); localSize.z = Mathf.Max(localSize.z, 3f); bc.size = localSize; bc.center = b.center; bc.enabled = true; yield return(null); this._craftStructure.manualLoading = true; while (LevelSerializer.IsDeserializing && !this._craftStructure.WasLoaded) { yield return(null); } this._craftStructure.Initialize(); this._craftStructure.gameObject.SetActive(true); yield return(null); bc.enabled = false; bc.enabled = true; if (!this._craftStructure.gameObject.GetComponent <getStructureStrength>()) { getStructureStrength getStructureStrength = this._craftStructure.gameObject.AddComponent <getStructureStrength>(); getStructureStrength._strength = getStructureStrength.strength.normal; getStructureStrength._type = getStructureStrength.structureType.floor; } } yield break; }
private IEnumerator OnPlaced() { this._wasPlaced = true; base.enabled = false; this._craftStructure.GetComponent <Collider>().enabled = false; Scene.HudGui.RoofConstructionIcons.Shutdown(); yield return(null); if (this._craftStructure) { UnityEngine.Object.Destroy(base.GetComponent <Rigidbody>()); UnityEngine.Object.Destroy(base.GetComponent <Collider>()); Transform newDock = this.SpawnStructure(); if (this._dockRoot) { UnityEngine.Object.Destroy(this._dockRoot.gameObject); } this._dockRoot = newDock; Transform ghostRoot = this._dockRoot; Transform transform = ghostRoot; transform.name += "Ghost"; this._logPool = null; this._newPool = null; Craft_Structure.BuildIngredients ri = this._craftStructure._requiredIngredients.FirstOrDefault((Craft_Structure.BuildIngredients i) => i._itemID == this.$this._logItemId); List <GameObject> stairsLogs = new List <GameObject>(); List <GameObject> stiltsLogs = new List <GameObject>(); Material stiltMat = Prefabs.Instance.LogStiltStairsGhostBuiltPrefab.GetComponentInChildren <Renderer>().sharedMaterial; IEnumerator enumerator = this._dockRoot.GetEnumerator(); try { while (enumerator.MoveNext()) { object obj = enumerator.Current; Transform transform2 = (Transform)obj; IEnumerator enumerator2 = transform2.GetEnumerator(); try { while (enumerator2.MoveNext()) { object obj2 = enumerator2.Current; Transform transform3 = (Transform)obj2; IEnumerator enumerator3 = transform3.GetEnumerator(); try { while (enumerator3.MoveNext()) { object obj3 = enumerator3.Current; Transform transform4 = (Transform)obj3; Renderer componentInChildren = transform4.GetComponentInChildren <Renderer>(); if (componentInChildren.sharedMaterial == stiltMat) { stiltsLogs.Add(componentInChildren.gameObject); } else { stairsLogs.Add(componentInChildren.gameObject); } } } finally { IDisposable disposable; if ((disposable = (enumerator3 as IDisposable)) != null) { disposable.Dispose(); } } } } finally { IDisposable disposable2; if ((disposable2 = (enumerator2 as IDisposable)) != null) { disposable2.Dispose(); } } } } finally { IDisposable disposable3; if ((disposable3 = (enumerator as IDisposable)) != null) { disposable3.Dispose(); } } ri._amount = stiltsLogs.Count <GameObject>() + stairsLogs.Count <GameObject>() / 2; ri.AddRuntimeObjects(stairsLogs.AsEnumerable <GameObject>().Reverse <GameObject>(), Prefabs.Instance.LogStairsBuiltPrefab.GetComponentInChildren <Renderer>().sharedMaterial); ri.AddRuntimeObjects(stiltsLogs.AsEnumerable <GameObject>().Reverse <GameObject>(), Prefabs.Instance.LogStiltStairsGhostBuiltPrefab.GetComponentInChildren <Renderer>().sharedMaterial); ghostRoot.transform.parent = null; base.transform.position = this._multiPointsPositions.First <Vector3>(); base.transform.LookAt(this._multiPointsPositions.Last <Vector3>()); this._dockRoot.transform.parent = base.transform; ghostRoot.transform.parent = base.transform; BoxCollider bc; if (this._craftStructure.GetComponent <Collider>() is BoxCollider) { bc = (BoxCollider)this._craftStructure.GetComponent <Collider>(); } else { bc = this._craftStructure.gameObject.AddComponent <BoxCollider>(); bc.isTrigger = true; } Bounds b = default(Bounds); for (int j = 1; j < this._multiPointsPositions.Count; j++) { Vector3 a = this._multiPointsPositions[j]; Vector3 normalized = (a - this._multiPointsPositions[j - 1]).normalized; Vector3 b2 = Vector3.Cross(Vector3.up, normalized) * 3.5f; b.Encapsulate(base.transform.InverseTransformPoint(a + b2)); b.Encapsulate(base.transform.InverseTransformPoint(a - b2)); } bc.size = new Vector3(b.size.x, 6f, b.size.z); bc.center = b.center; bc.enabled = true; yield return(null); this._craftStructure.manualLoading = true; while (LevelSerializer.IsDeserializing && !this._craftStructure.WasLoaded) { yield return(null); } this._craftStructure.Initialize(); this._craftStructure.gameObject.SetActive(true); yield return(null); bc.enabled = false; bc.enabled = true; } yield break; }