private void Replace() { Rigidbody component = base.GetComponent <Rigidbody>(); GameObject gameObject = ItemUtils.SpawnItem(this._itemId, this._spawnTr.position, this._spawnTr.rotation, false); if (gameObject) { Rigidbody component2 = gameObject.GetComponent <Rigidbody>(); if (component2) { component2.velocity = component.velocity / 2f; component2.AddRelativeTorque(0f, 0f, -component.velocity.sqrMagnitude / 2f, ForceMode.Impulse); } } if (PoolManager.Pools["misc"].IsSpawned(base.transform)) { component.velocity = Vector3.zero; if (BoltNetwork.isRunning) { BoltNetwork.Detach(base.gameObject); } PoolManager.Pools["misc"].Despawn(base.transform); } else { UnityEngine.Object.Destroy(base.gameObject); } }
private void EndFire() { if (this.Parent) { this.Parent.ExtinguishPoint(this); } if (BoltNetwork.isRunning && base.entity && base.entity.isAttached && base.entity.isOwner) { BoltNetwork.Detach(base.gameObject); } SpawnPool spawnPool = PoolManager.Pools["Particles"]; if (spawnPool.IsSpawned(base.transform)) { spawnPool.Despawn(base.transform); } else if (base.transform.parent) { base.gameObject.SetActive(false); } else { UnityEngine.Object.Destroy(base.gameObject); } }
public override void ExecuteCommand(Command command, bool resetState) { PlayerInputCommand cmd = (PlayerInputCommand)command; if (resetState) { transform.position = cmd.Result.position; transform.rotation = Quaternion.Slerp(transform.rotation, cmd.Result.rotation, 0.3f); rb.velocity = cmd.Result.velocity; rb.angularVelocity = cmd.Result.angularVelocity; if (cmd.Input.exit) { BoltNetwork.Detach(gameObject); Application.Quit(); } } else { if (cmd.IsFirstExecution) { ProcessInput(cmd); cmd.Result.position = transform.position; cmd.Result.rotation = transform.rotation; cmd.Result.velocity = rb.velocity; cmd.Result.angularVelocity = rb.angularVelocity; } } }
private void TurnOff() { BoltEntity boltEntity = null; if (BoltNetwork.isRunning) { boltEntity = base.GetComponent <BoltEntity>(); if (boltEntity && boltEntity.isAttached && !boltEntity.isOwner) { return; } } if (PoolManager.Pools["misc"].IsSpawned(base.transform)) { if (BoltNetwork.isServer && boltEntity && boltEntity.isAttached) { BoltNetwork.Detach(base.gameObject); } PoolManager.Pools["misc"].Despawn(base.transform); } else { UnityEngine.Object.Destroy(base.gameObject); } }
public static void DetachLocalPlayer() { if (LocalPlayer.Entity != null && LocalPlayer.Entity.isAttached) { BoltNetwork.Detach(LocalPlayer.Entity); } }
public static void DetachLocalPlayer() { if (LocalPlayer.Entity != null && LocalPlayer.Entity.isAttached) { Menu.Values.Self.Visible = false; BoltNetwork.Detach(LocalPlayer.Entity); } }
private void ExplosionReal() { FMODCommon.PlayOneshotNetworked(this.breakEvent, base.transform, FMODCommon.NetworkRole.Server); GameObject gameObject = UnityEngine.Object.Instantiate(this.Broken, base.transform.position, base.transform.rotation) as GameObject; if (this.entity.IsOwner()) { BoltNetwork.Detach(this.entity, new CoopCreateBreakToken()); } UnityEngine.Object.Destroy(base.gameObject); }
public void despawn() { this.animator.enabled = false; base.CancelInvoke("updateSpawn"); if (this.turtle && BoltNetwork.isRunning) { BoltEntity component = base.gameObject.GetComponent <BoltEntity>(); if (component != null && component.isAttached) { BoltNetwork.Detach(base.gameObject); UnityEngine.Object.Destroy(component); } UnityEngine.Object.Destroy(base.gameObject.GetComponent <AnimalDespawner>()); } if (PoolManager.Pools["creatures"].IsSpawned(base.transform)) { PoolManager.Pools["creatures"].Despawn(base.transform); } else { UnityEngine.Object.Destroy(base.gameObject); } if (this.lizard) { this.sceneInfo.currLizardAmount--; } if (this.rabbit) { this.sceneInfo.currRabbitAmount--; this.sceneInfo.allRabbits.Remove(base.gameObject); } if (this.turtle) { this.controller.seCurrTurtleAmount(-1); } if (this.tortoise) { this.sceneInfo.currTortoiseAmount--; } if (this.raccoon) { this.sceneInfo.currRaccoonAmount--; this.sceneInfo.allRaccoons.Remove(base.gameObject); } if (this.deer) { this.sceneInfo.currDeerAmount--; this.sceneInfo.allDeer.Remove(base.gameObject); } }
public bool TryPool() { if (this._poolManagerDespawnCreature && this._destroyTarget && (!BoltNetwork.isClient || !this._destroyTarget.GetComponent <BoltEntity>()) && PoolManager.Pools[this._poolManagerPool].IsSpawned(this._destroyTarget.transform)) { base.enabled = false; this._destroyTarget.transform.parent = null; if (BoltNetwork.isServer && this._destroyTarget.GetComponent <BoltEntity>()) { BoltNetwork.Detach(this._destroyTarget.gameObject); } PoolManager.Pools[this._poolManagerPool].Despawn(this._destroyTarget.transform); this.OwnershipCheckUnregister(); return(true); } return(false); }
public void UpdateSpawnState(bool testPlayer = true) { if (testPlayer) { for (int i = 0; i < this.sceneTracker.allPlayers.Count; i++) { GameObject gameObject = this.sceneTracker.allPlayers[i]; if (gameObject && (gameObject.transform.position - base.transform.position).sqrMagnitude < this.DespawnRadius * this.DespawnRadius) { return; } } Vector3 vector = LocalPlayer.Transform.InverseTransformPoint(base.transform.position); float num = Mathf.Atan2(vector.x, vector.z) * 57.29578f; if (num < 90f && num > -90f) { return; } } if (this.SpawnedFromZone) { this.SpawnedFromZone.SpawnedAnimals.Remove(base.gameObject); this.SpawnedFromZone = null; } if (BoltNetwork.isRunning) { BoltNetwork.Detach(base.gameObject); UnityEngine.Object.Destroy(base.gameObject.GetComponent <BoltEntity>()); UnityEngine.Object.Destroy(this); } if (base.GetComponent <CoopAnimalServer>().NonPooled || !PoolManager.Pools["creatures"].IsSpawned(base.transform)) { UnityEngine.Object.Destroy(base.gameObject); } else { PoolManager.Pools["creatures"].Despawn(base.transform); UnityEngine.Object.Destroy(this); } }
public void Despawn() { if (this.instances == null || this.InstanceData == null) { return; } for (int i = 0; i < this.instances.Length; i++) { if (this.currentlyVisible && i < this.scheduledSpawnIndex && (!this.instances[i] || !this.instances[i].activeSelf) && this.InstanceData != null && this.InstanceData[i].Spawned) { if (this.AllowRegrowth) { this.InstanceData[i].CreationTime = Time.timeSinceLevelLoad; } else { this.InstanceData[i].Destroyed = true; } if (this.Data != null) { this.Data._instancesState[i] = 255; } } if (Application.isPlaying) { if (this.MpSync && BoltNetwork.isServer && this.instances[i]) { BoltNetwork.Detach(this.instances[i]); } GreeblePlugin.Destroy(this.instances[i]); } else { UnityEngine.Object.DestroyImmediate(this.instances[i]); } this.InstanceData[i].Spawned = false; this.instances[i] = null; } this.currentlyVisible = false; }
private void TurnOff() { if (!BoltNetwork.isClient) { if (PoolManager.Pools["PickUps"].IsSpawned(base.transform)) { if (BoltNetwork.isServer) { BoltEntity component = base.GetComponent <BoltEntity>(); if (component && component.isAttached) { BoltNetwork.Detach(base.gameObject); } } PoolManager.Pools["PickUps"].Despawn(base.transform); } else { UnityEngine.Object.Destroy(base.gameObject); } } }
private void Clear() { if (!BoltNetwork.isClient) { if (PoolManager.Pools["misc"].IsSpawned(base.transform)) { if (BoltNetwork.isRunning && base.entity && base.entity.isAttached && base.entity.isOwner) { BoltNetwork.Detach(base.entity); } base.transform.parent = null; PoolManager.Pools["misc"].Despawn(base.transform); for (int i = 0; i < this._pickups.Length; i++) { this._pickups[i].transform.parent.gameObject.SetActive(true); } } else { UnityEngine.Object.Destroy(base.gameObject); } } }
private void Respawn() { Debug.Log("LocalPlayer -> Respawn"); if (LocalPlayer.Stats.Dead) { if (LocalPlayer.IsInEndgame) { GameObject gameObject = GameObject.FindWithTag("EndgameLoader"); if (gameObject) { SceneLoadTrigger component = gameObject.GetComponent <SceneLoadTrigger>(); component.ForceUnload(); } } EventRegistry.Player.Publish(TfEvent.ExitOverlookArea, null); EventRegistry.Player.Publish(TfEvent.ExitEndgame, null); LocalPlayer.GameObject.SendMessage("NotInACave"); PlayerInventory inventory = LocalPlayer.Inventory; PlayerClothing clothing = LocalPlayer.Clothing; AchievementsManager achievements = LocalPlayer.Achievements; SurvivalBookTodo componentInChildren = LocalPlayer.SpecialItems.GetComponentInChildren <SurvivalBookTodo>(); string name = LocalPlayer.Entity.GetState <IPlayerState>().name; bool value = LocalPlayer.SavedData.ReachedLowSanityThreshold; bool value2 = LocalPlayer.SavedData.ExitedEndgame; LocalPlayer.Inventory.HideAllEquiped(false, false); LocalPlayer.Inventory.enabled = false; if (Scene.SceneTracker.allPlayers.Contains(LocalPlayer.GameObject)) { Scene.SceneTracker.allPlayers.Remove(LocalPlayer.GameObject); } if (Scene.SceneTracker.allPlayerEntities.Contains(LocalPlayer.Entity)) { Scene.SceneTracker.allPlayerEntities.Remove(LocalPlayer.Entity); } BoltNetwork.Detach(LocalPlayer.Entity); GameObject gameObject2 = LocalPlayer.GameObject; BoltEntity entity = LocalPlayer.Entity; gameObject2.name = "player Corpse - " + name; gameObject2.tag = "Untagged"; LocalPlayer.MainCamTr.parent = LocalPlayer.Transform; LocalPlayer.Inventory.CurrentView = PlayerInventory.PlayerViews.Loot; if (LocalPlayer.AnimControl.swimming) { LocalPlayer.Rigidbody.useGravity = true; } for (int i = gameObject2.transform.childCount - 1; i >= 0; i--) { Transform child = gameObject2.transform.GetChild(i); UnityEngine.Object.Destroy(child.gameObject); } Component[] components = gameObject2.GetComponents(typeof(MonoBehaviour)); foreach (Component component2 in components) { if (!(component2 is BoltEntity)) { UnityEngine.Object.DestroyImmediate(component2); } } Transform transform = base.transform; GameObject gameObject3 = UnityEngine.Object.Instantiate <GameObject>(Prefabs.Instance.PlayerPrefab, transform.position, transform.rotation); gameObject3.transform.localEulerAngles = new Vector3(0f, gameObject3.transform.localEulerAngles.y, 0f); gameObject3.name = Prefabs.Instance.PlayerPrefab.name; LocalPlayer.Inventory.SetQuickSelectItemIds(inventory.QuickSelectItemIds); LocalPlayer.Achievements.Clone(achievements); LocalPlayer.SpecialItems.GetComponentInChildren <SurvivalBookTodo>().Clone(componentInChildren); LocalPlayer.SavedData.ReachedLowSanityThreshold.SetValue(value); LocalPlayer.SavedData.ExitedEndgame.SetValue(value2); LocalPlayer.FpCharacter.UnLockView(); LocalPlayer.CamFollowHead.enableMouseControl(false); LocalPlayer.MainCamTr.localEulerAngles = Vector3.zero; LocalPlayer.MainRotator.enabled = true; LocalPlayer.CamRotator.enabled = true; LocalPlayer.Stats.Health = 28f; LocalPlayer.Stats.HealthTarget = 28f; LocalPlayer.Stats.Energy = 100f; LocalPlayer.Stats.Fullness = 0.35f; LocalPlayer.Stats.Thirst = 0.35f; LocalPlayer.Stats.Invoke("CheckArmsStart", 2f); LocalPlayer.Stats.Invoke("PlayWakeMusic", 0.5f); LocalPlayer.Tuts.CloseColdTut(); Scene.RainFollowGO.GetComponent <SmoothTransformConstraint>().target = LocalPlayer.Transform; gameObject3.SetActive(true); CoopUtils.AttachLocalPlayer(gameObject3, name); Scene.SceneTracker.allPlayers.Add(LocalPlayer.GameObject); LocalPlayer.GreebleRoot.SetActive(true); LocalPlayer.Inventory.enabled = true; LocalPlayer.Transform.SendMessage("enableMpRenderers"); LocalPlayer.Transform.SendMessage("playerLoadedFromRespawn"); this._addedItems = false; StealItemTrigger stealItemTrigger = UnityEngine.Object.Instantiate <StealItemTrigger>(Prefabs.Instance.DeadBackpackPrefab, gameObject2.transform.position, gameObject2.transform.rotation); stealItemTrigger._entity = entity; stealItemTrigger.transform.parent = gameObject2.transform; gameObject2.AddComponent <DeathMPTut>(); ItemStorage itemStorage = gameObject2.AddComponent <ItemStorage>(); itemStorage._acceptedTypes = ~Item.Types.Story; for (int k = inventory._possessedItems.Count - 1; k >= 0; k--) { InventoryItem inventoryItem = inventory._possessedItems[k]; if (!LocalPlayer.Inventory.Owns(inventoryItem._itemId, false)) { if (inventoryItem.MaxAmount == 1) { InventoryItemView inventoryItemView = inventory.InventoryItemViewsCache[inventoryItem._itemId][0]; this.AddItemToStorage(inventoryItem._itemId, inventoryItem._amount, itemStorage, inventoryItemView.Properties); } else if (inventoryItem.MaxAmount > 0 && inventoryItem.MaxAmount < 2147483647) { while (inventory.Owns(inventoryItem._itemId, false)) { InventoryItemView inventoryItemView2 = inventory.InventoryItemViewsCache[inventoryItem._itemId][0]; inventory.SortInventoryViewsByBonus(inventoryItemView2, inventoryItemView2.Properties.ActiveBonus, true); int amount = inventory.AmountOfItemWithBonus(inventoryItem._itemId, inventoryItemView2.Properties.ActiveBonus); inventory.RemoveItem(inventoryItem._itemId, amount, true, false); this.AddItemToStorage(inventoryItem._itemId, amount, itemStorage, inventoryItemView2.Properties); } } else { this.AddItemToStorage(inventoryItem._itemId, inventoryItem._amount, itemStorage, null); } } } for (int l = 0; l < inventory.EquipmentSlots.Length; l++) { InventoryItemView inventoryItemView3 = inventory.EquipmentSlots[l]; if (inventoryItemView3 && inventoryItemView3._itemId > 0) { this.AddItemToStorage(inventoryItemView3._itemId, 1, itemStorage, inventoryItemView3.Properties); } } clothing.DropAll(gameObject2.transform.position, true, true); if (!this._addedItems) { UnityEngine.Object.Destroy(gameObject2); } animalAI[] array2 = UnityEngine.Object.FindObjectsOfType <animalAI>(); foreach (animalAI animalAI in array2) { animalAI.SendMessage("updatePlayerTargets"); } mutantAI[] array4 = UnityEngine.Object.FindObjectsOfType <mutantAI>(); foreach (mutantAI mutantAI in array4) { mutantAI.SendMessage("updatePlayerTargets"); } Fish[] array6 = UnityEngine.Object.FindObjectsOfType <Fish>(); mutantScriptSetup[] array7 = UnityEngine.Object.FindObjectsOfType <mutantScriptSetup>(); foreach (mutantScriptSetup mutantScriptSetup in array7) { mutantScriptSetup.setupPlayer(); mutantScriptSetup.search.refreshCurrentTarget(); } LocalPlayer.Transform.SendMessage("enableMpRenderers"); Terrain.activeTerrain.GetComponent <Collider>().enabled = true; Scene.Clock.IsNotCave(); } PlayerRespawnMP.Cancel(); if (this._bringUpPauseMenu) { this._bringUpPauseMenu = false; LocalPlayer.Inventory.TogglePauseMenu(); } }
public override void OnEnter() { BoltNetwork.Detach(gameObject.Value); Finish(); }
private void Respawn() { UnityEngine.Debug.Log("LocalPlayer -> Respawn"); if (LocalPlayer.Stats.Dead) { LocalPlayer.GameObject.SendMessage("NotInACave"); PlayerInventory inventory = LocalPlayer.Inventory; string name = LocalPlayer.Entity.GetState <IPlayerState>().name; LocalPlayer.Inventory.HideAllEquiped(false); LocalPlayer.Inventory.enabled = false; if (Scene.SceneTracker.allPlayers.Contains(LocalPlayer.GameObject)) { Scene.SceneTracker.allPlayers.Remove(LocalPlayer.GameObject); } if (Scene.SceneTracker.allPlayerEntities.Contains(LocalPlayer.Entity)) { Scene.SceneTracker.allPlayerEntities.Remove(LocalPlayer.Entity); } BoltNetwork.Detach(LocalPlayer.Entity); GameObject gameObject = LocalPlayer.GameObject; BoltEntity entity = LocalPlayer.Entity; gameObject.name = "player Corpse - " + name; gameObject.tag = "Untagged"; LocalPlayer.MainCamTr.parent = LocalPlayer.Transform; LocalPlayer.Inventory.CurrentView = PlayerInventory.PlayerViews.Loot; for (int i = gameObject.transform.childCount - 1; i >= 0; i--) { Transform child = gameObject.transform.GetChild(i); UnityEngine.Object.Destroy(child.gameObject); } Component[] components = gameObject.GetComponents(typeof(MonoBehaviour)); Component[] array = components; for (int j = 0; j < array.Length; j++) { Component component = array[j]; if (!(component is BoltEntity)) { UnityEngine.Object.DestroyImmediate(component); } } Transform transform = base.transform; GameObject gameObject2 = (GameObject)UnityEngine.Object.Instantiate(Prefabs.Instance.PlayerPrefab, transform.position, transform.rotation); gameObject2.transform.localEulerAngles = new Vector3(0f, gameObject2.transform.localEulerAngles.y, 0f); gameObject2.name = Prefabs.Instance.PlayerPrefab.name; LocalPlayer.FpCharacter.UnLockView(); LocalPlayer.CamFollowHead.enableMouseControl(false); LocalPlayer.MainCamTr.localEulerAngles = Vector3.zero; LocalPlayer.MainRotator.enabled = true; LocalPlayer.CamRotator.enabled = true; LocalPlayer.Stats.Health = 28f; LocalPlayer.Stats.Energy = 100f; LocalPlayer.Stats.Fullness = 0.35f; LocalPlayer.Stats.Thirst = 0.35f; LocalPlayer.Stats.Invoke("CheckArmsStart", 2f); LocalPlayer.Stats.Invoke("PlayWakeMusic", 0.5f); Scene.RainFollowGO.GetComponent <SmoothTransformConstraint>().target = LocalPlayer.Transform; gameObject2.SetActive(true); CoopUtils.AttachLocalPlayer(gameObject2, name); Scene.SceneTracker.allPlayers.Add(LocalPlayer.GameObject); LocalPlayer.GreebleRoot.SetActive(true); StealItemTrigger stealItemTrigger = (StealItemTrigger)UnityEngine.Object.Instantiate(Prefabs.Instance.DeadBackpackPrefab, gameObject.transform.position, gameObject.transform.rotation); stealItemTrigger._entity = entity; stealItemTrigger.transform.parent = gameObject.transform; gameObject.AddComponent <DeathMPTut>(); ItemStorage cis = gameObject.AddComponent <ItemStorage>(); for (int k = 0; k < inventory._possessedItems.Count; k++) { InventoryItem inventoryItem = inventory._possessedItems[k]; if (!LocalPlayer.Inventory.Owns(inventoryItem._itemId)) { this.AddItemToStorage(inventoryItem._itemId, inventoryItem._amount, inventoryItem._maxAmountBonus, cis); } } for (int l = 0; l < inventory.EquipmentSlots.Length; l++) { InventoryItemView inventoryItemView = inventory.EquipmentSlots[l]; if (inventoryItemView && inventoryItemView._itemId > 0) { this.AddItemToStorage(inventoryItemView._itemId, 1, 0, cis); } } animalAI[] array2 = UnityEngine.Object.FindObjectsOfType <animalAI>(); animalAI[] array3 = array2; for (int m = 0; m < array3.Length; m++) { animalAI animalAI = array3[m]; animalAI.SendMessage("updatePlayerTargets"); } mutantAI[] array4 = UnityEngine.Object.FindObjectsOfType <mutantAI>(); mutantAI[] array5 = array4; for (int n = 0; n < array5.Length; n++) { mutantAI mutantAI = array5[n]; mutantAI.SendMessage("updatePlayerTargets"); } Fish[] array6 = UnityEngine.Object.FindObjectsOfType <Fish>(); Fish[] array7 = array6; for (int num = 0; num < array7.Length; num++) { Fish fish = array7[num]; fish.SendMessage("updatePlayerTargets"); } mutantScriptSetup[] array8 = UnityEngine.Object.FindObjectsOfType <mutantScriptSetup>(); mutantScriptSetup[] array9 = array8; for (int num2 = 0; num2 < array9.Length; num2++) { mutantScriptSetup mutantScriptSetup = array9[num2]; mutantScriptSetup.setupPlayer(); mutantScriptSetup.search.refreshCurrentTarget(); } Terrain.activeTerrain.GetComponent <Collider>().enabled = true; Scene.Clock.IsNotCave(); } PlayerRespawnMP.Cancel(); }