public void CleanupBonus() { if (Object.op_Implicit((Object)this._hotSpot)) { this._hotSpot.Kill(BaseNetworkable.DestroyMode.None); } this._hotSpot = (OreHotSpot)null; }
public void CleanupBonus() { if (this._hotSpot) { this._hotSpot.Kill(BaseNetworkable.DestroyMode.None); } this._hotSpot = null; }
public OreHotSpot SpawnBonusSpot(Vector3 lastDirection) { RaycastHit raycastHit; Vector3 vector3; if (base.isClient) { return(null); } if (!this.bonusPrefab.isValid) { return(null); } Vector2 vector2 = UnityEngine.Random.insideUnitCircle.normalized; Vector3 vector31 = Vector3.zero; MeshCollider stageComponent = base.GetStageComponent <MeshCollider>(); Transform transforms = base.transform; Bounds bound = stageComponent.bounds; Vector3 vector32 = transforms.InverseTransformPoint(bound.center); if (lastDirection != Vector3.zero) { Vector3 vector33 = Vector3.Cross(this.lastNodeDir, Vector3.up); float single = UnityEngine.Random.Range(0.25f, 0.5f); float single1 = (UnityEngine.Random.Range(0, 2) == 0 ? -1f : 1f); vector3 = this.lastNodeDir + ((vector33 * single) * single1); Vector3 vector34 = vector3.normalized; this.lastNodeDir = vector34; vector31 = base.transform.position + (base.transform.TransformDirection(vector34) * 2f); float single2 = UnityEngine.Random.Range(1f, 1.5f); vector31 = vector31 + (base.transform.up * (vector32.y + single2)); } else { Vector3 vector35 = this.RandomCircle(1f, false); this.lastNodeDir = vector35.normalized; Vector3 vector36 = base.transform.TransformDirection(vector35.normalized); vector35 = (base.transform.position + (base.transform.up * (vector32.y + 0.5f))) + (vector36.normalized * 2.5f); vector31 = vector35; } this.bonusesSpawned++; bound = stageComponent.bounds; vector3 = bound.center - vector31; Vector3 vector37 = vector3.normalized; if (!stageComponent.Raycast(new Ray(vector31, vector37), out raycastHit, 10f)) { return(null); } OreHotSpot oreHotSpot = GameManager.server.CreateEntity(this.bonusPrefab.resourcePath, raycastHit.point - (vector37 * 0.025f), Quaternion.LookRotation(raycastHit.normal, Vector3.up), true) as OreHotSpot; oreHotSpot.Spawn(); oreHotSpot.SendMessage("OreOwner", this); return(oreHotSpot); }
public OreHotSpot SpawnBonusSpot(Vector3 lastDirection) { if (this.isClient) { return((OreHotSpot)null); } if (!this.bonusPrefab.isValid) { return((OreHotSpot)null); } Vector2 insideUnitCircle = Random.get_insideUnitCircle(); ((Vector2) ref insideUnitCircle).get_normalized(); Vector3.get_zero(); MeshCollider stageComponent = this.GetStageComponent <MeshCollider>(); Transform transform = ((Component)this).get_transform(); Bounds bounds = ((Collider)stageComponent).get_bounds(); Vector3 center = ((Bounds) ref bounds).get_center(); Vector3 vector3_1 = transform.InverseTransformPoint(center); Vector3 vector3_2; Vector3 vector3_3; if (Vector3.op_Equality(lastDirection, Vector3.get_zero())) { Vector3 vector3_4 = this.RandomCircle(1f, false); this.lastNodeDir = ((Vector3) ref vector3_4).get_normalized(); Vector3 vector3_5 = ((Component)this).get_transform().TransformDirection(((Vector3) ref vector3_4).get_normalized()); vector3_2 = Vector3.op_Addition(Vector3.op_Addition(((Component)this).get_transform().get_position(), Vector3.op_Multiply(((Component)this).get_transform().get_up(), (float)(vector3_1.y + 0.5))), Vector3.op_Multiply(((Vector3) ref vector3_5).get_normalized(), 2.5f)); } else { vector3_3 = Vector3.op_Addition(this.lastNodeDir, Vector3.op_Multiply(Vector3.op_Multiply(Vector3.Cross(this.lastNodeDir, Vector3.get_up()), Random.Range(0.25f, 0.5f)), Random.Range(0, 2) == 0 ? -1f : 1f)); Vector3 normalized = ((Vector3) ref vector3_3).get_normalized(); this.lastNodeDir = normalized; Vector3 vector3_4 = Vector3.op_Addition(((Component)this).get_transform().get_position(), Vector3.op_Multiply(((Component)this).get_transform().TransformDirection(normalized), 2f)); float num = Random.Range(1f, 1.5f); vector3_2 = Vector3.op_Addition(vector3_4, Vector3.op_Multiply(((Component)this).get_transform().get_up(), (float)vector3_1.y + num)); } ++this.bonusesSpawned; bounds = ((Collider)stageComponent).get_bounds(); vector3_3 = Vector3.op_Subtraction(((Bounds) ref bounds).get_center(), vector3_2); Vector3 normalized1 = ((Vector3) ref vector3_3).get_normalized(); RaycastHit raycastHit; if (!((Collider)stageComponent).Raycast(new Ray(vector3_2, normalized1), ref raycastHit, 10f)) { return((OreHotSpot)null); } OreHotSpot entity = GameManager.server.CreateEntity(this.bonusPrefab.resourcePath, Vector3.op_Subtraction(((RaycastHit) ref raycastHit).get_point(), Vector3.op_Multiply(normalized1, 0.025f)), Quaternion.LookRotation(((RaycastHit) ref raycastHit).get_normal(), Vector3.get_up()), true) as OreHotSpot; entity.Spawn(); ((Component)entity).SendMessage("OreOwner", (object)this); return(entity); }
public override void ServerInit() { base.ServerInit(); this._hotSpot = this.SpawnBonusSpot(Vector3.get_zero()); }
public void RespawnBonus() { this.CleanupBonus(); this._hotSpot = this.SpawnBonusSpot(this.lastNodeDir); }