internal static void RegisterObject(CoopGridObject obj, bool is_update) { int num = CoopTreeGrid.CalculateNode(obj.transform.position); if (CoopTreeGrid.Nodes[num].Objects == null) { CoopTreeGrid.Nodes[num].Objects = new List <CoopGridObject>(); } CoopTreeGrid.Nodes[num].Objects.Add(obj); obj.CurrentNode = num; if (!is_update) { obj.entity.Freeze(false); } }
public static void UpdateObject(CoopGridObject obj) { int num = CoopTreeGrid.CalculateNode(obj.transform.position); if (num != obj.CurrentNode) { CoopTreeGrid.Nodes[obj.CurrentNode].Objects.Remove(obj); if (CoopTreeGrid.Nodes[num].Objects == null) { CoopTreeGrid.Nodes[num].Objects = new List <CoopGridObject>(); } CoopTreeGrid.Nodes[num].Objects.Add(obj); obj.CurrentNode = num; } }
private static IEnumerator ShutDownRoutine(bool restart) { BoltLauncher.Shutdown(); yield return(YieldPresets.WaitPointFiveSeconds); CoopSteamServer.Shutdown(); CoopSteamClient.Shutdown(); CoopTreeGrid.Clear(); if (restart) { yield return(YieldPresets.WaitPointFiveSeconds); SceneManager.LoadScene("SteamDedicatedBootstrapScene", LoadSceneMode.Single); } else { Application.Quit(); } yield break; }
private void OnGameStart() { try { AnimalSpawnController.lastUpdate = Time.realtimeSinceStartup + 30f; try { BoltNetwork.UpdateSceneObjectsLookup(); } catch (Exception) { } CoopTreeGrid.Update(BoltNetwork.SceneObjects); this.AttachBuildings(); } finally { LoadSave.OnGameStart -= this.OnGameStart; } }
private void OnExitMenu() { if (this.selected) { return; } this.selected = true; Time.timeScale = 1f; if (this.audio != null) { this.audio.PrepareForLevelLoad(); } if (BoltNetwork.isRunning) { if (CoopLobby.IsInLobby) { if (CoopLobby.Instance.Info.IsOwner) { CoopLobby.Instance.Destroy(); } CoopLobby.LeaveActive(); } base.StartCoroutine(this.WaitForBoltShutdown(delegate { CoopSteamServer.Shutdown(); CoopSteamClient.Shutdown(); CoopTreeGrid.Clear(); TitleScreen.StartGameSetup.Type = TitleScreen.GameSetup.InitTypes.New; TitleScreen.StartGameSetup.Game = TitleScreen.GameSetup.GameModes.Standard; Application.LoadLevel("TitleSceneLoader"); })); } else { CoopTreeGrid.Clear(); TitleScreen.StartGameSetup.Type = TitleScreen.GameSetup.InitTypes.New; TitleScreen.StartGameSetup.Game = TitleScreen.GameSetup.GameModes.Standard; Application.LoadLevel("TitleSceneLoader"); } }
public static void Update(IEnumerable <BoltEntity> trees) { foreach (BoltEntity boltEntity in trees) { int num = CoopTreeGrid.CalculateNode(boltEntity.transform.position); if (CoopTreeGrid.Nodes[num].Trees == null) { CoopTreeGrid.Nodes[num].Trees = new List <BoltEntity>(); } CoopTreeGrid.Nodes[num].Trees.Add(boltEntity); } foreach (CoopTreeGrid.Node node in CoopTreeGrid.Nodes) { if (node.Trees != null) { foreach (BoltEntity item in node.Trees) { CoopTreeGrid.AttachQueue.Enqueue(item); } } } }
private void Update() { if (CoopServerInfo.Instance && CoopLobby.Instance != null && !CoopPeerStarter.Dedicated) { CoopLobby arg_46_0 = CoopLobby.Instance; int num = BoltNetwork.clients.Count <BoltConnection>() + 1; CoopServerInfo.Instance.state.PlayerCount = num; arg_46_0.SetCurrentMembers(num); } if (CoopServerInfo.Instance && this.tracker.Component) { if (LocalPlayer.Entity && string.IsNullOrEmpty(CoopServerInfo.Instance.state.PlayerNames[0])) { CoopServerInfo.Instance.state.PlayerNames[0] = LocalPlayer.Entity.GetState <IPlayerState>().name + " (host)"; } int num2 = Mathf.Min(CoopServerInfo.Instance.state.PlayerNames.Count <string>() - 1, this.tracker.Component.allPlayerEntities.Count); for (int i = 0; i < num2; i++) { if (CoopServerInfo.Instance.state.PlayerNames[i + 1] != this.tracker.Component.allPlayerEntities[i].GetState <IPlayerState>().name) { CoopServerInfo.Instance.state.PlayerNames[i + 1] = this.tracker.Component.allPlayerEntities[i].GetState <IPlayerState>().name; } } for (int j = this.tracker.Component.allPlayerEntities.Count + 1; j < CoopServerInfo.Instance.state.PlayerNames.Length; j++) { if (!string.IsNullOrEmpty(CoopServerInfo.Instance.state.PlayerNames[j])) { CoopServerInfo.Instance.state.PlayerNames[j] = string.Empty; } } } CoopTreeGrid.AttachTrees(); if (this.tracker.Component) { CoopTreeGrid.AttachAdjacent(this.tracker.Component.allPlayers); } }
private void Awake() { EventRegistry.Clear(); GameModeStarter.Prefab = null; GameSetup.SetInitType(InitTypes.New); GameSetup.SetGameType(GameTypes.Standard); GameSetup.SetDifficulty(DifficultyModes.Normal); TitleSceneBridge.TitleScene = this; TitleSceneBridge.GameSetup = GameSetup.Bridge; TitleSceneBridge.Cheats = Cheats.Bridge; LoadSave.ShouldLoad = false; CoopAckChecker.ACKED = false; CoopSteamServer.Shutdown(); CoopSteamClient.Shutdown(); CoopTreeGrid.Clear(); GeoHash.ClearAll(); TitleScreen.Instance = this; if (LoadAsync.Scenery) { UnityEngine.Object.Destroy(LoadAsync.Scenery); LoadAsync.Scenery = null; } this.InitMpScreenScenery(); }
public static void CheckRegrowTrees() { if (PlayerPreferences.TreeRegrowth) { LOD_Trees[] source = UnityEngine.Object.FindObjectsOfType <LOD_Trees>(); List <LOD_Trees> list = (from t in source where !t.enabled && t.CurrentView == null select t).ToList <LOD_Trees>(); if (list != null && list.Count > 0) { TreeLodGrid treeLodGrid = UnityEngine.Object.FindObjectOfType <TreeLodGrid>(); int count = list.Count; int num = count / 10 + 2; float num2 = Mathf.Max((float)count / (float)num, 1f); int num3 = 0; for (float num4 = 0f; num4 < (float)count; num4 += num2) { int index = (int)num4; if (BoltNetwork.isRunning) { CoopTreeId component = list[index].GetComponent <CoopTreeId>(); if (component) { component.RegrowTree(); } list[index].DontSpawn = false; } list[index].enabled = true; list[index].RefreshLODs(); if (treeLodGrid) { treeLodGrid.RegisterTreeRegrowth(list[index].transform.position); } IEnumerator enumerator = list[index].transform.GetEnumerator(); try { while (enumerator.MoveNext()) { object obj = enumerator.Current; Transform transform = (Transform)obj; LOD_Stump component2 = transform.GetComponent <LOD_Stump>(); if (component2) { component2.DespawnCurrent(); component2.CurrentView = null; } UnityEngine.Object.Destroy(transform.gameObject); } } finally { IDisposable disposable; if ((disposable = (enumerator as IDisposable)) != null) { disposable.Dispose(); } } num3++; } if (num3 != 0 && BoltNetwork.isRunning) { CoopTreeGrid.SweepGrid(); } Debug.Log(string.Concat(new object[] { "Tree regrowth: ", num3, "/", count })); } } }
public override void Attached() { base.state.Transform.SetTransforms(base.transform); if (base.entity.isOwner) { base.state.PlayerVariation = LocalPlayer.Stats.PlayerVariation; base.state.PlayerVariationHair = LocalPlayer.Stats.PlayerVariationHair; base.Invoke("InitClothingMpSync", 0.1f); base.Invoke("RefreshPlayerMaterials", 0.1f); this.FindHands(); if (base.entity.isOwner && BoltNetwork.isClient && Scene.TriggerCutScene.clientPlayerOnPlaneGo != null) { Scene.TriggerCutScene.clientPlayerOnPlaneGo.SendMessage("PlayerVariationSetupClean", base.state.PlayerVariation, SendMessageOptions.DontRequireReceiver); Scene.TriggerCutScene.clientCutScenePlayerGo.SendMessage("PlayerVariationSetup", base.state.PlayerVariation, SendMessageOptions.DontRequireReceiver); } } else { base.state.AddCallback("PlayerVariation", new PropertyCallbackSimple(this.PlayerVariationSetup)); base.state.AddCallback("PlayerVariationHair", new PropertyCallbackSimple(this.PlayerVariationSetup)); base.state.AddCallback("PlayerClothingIds[]", new PropertyCallbackSimple(this.PlayerVariationSetup)); base.state.AddCallback("Bloody", new PropertyCallbackSimple(this.RefreshPlayerMaterials)); base.state.AddCallback("Muddy", new PropertyCallbackSimple(this.RefreshPlayerMaterials)); base.state.AddCallback("RedPaint", new PropertyCallbackSimple(this.RefreshPlayerMaterials)); base.state.AddCallback("Cold", new PropertyCallbackSimple(this.RefreshPlayerMaterials)); this.PlayerVariationSetup(); this.RefreshPlayerMaterials(); if (BoltNetwork.isServer && CoopTreeGrid.TodoPlayerSweeps.Contains(base.entity.source)) { CoopTreeGrid.TodoPlayerSweeps.Remove(base.entity.source); CoopTreeGrid.SweepGrid(); } Transform playerTr = base.transform; PlayerName pn = base.GetComponentInChildren <PlayerName>(); targetStats ts = base.GetComponent <targetStats>(); base.state.AddCallback("name", delegate { pn.Init(this.state.name); }); this.plasticTorch = base.GetComponentsInChildren <BatteryBasedLight>(true).FirstOrDefault <BatteryBasedLight>(); if (BoltNetwork.isClient && Scene.SceneTracker) { if (!Scene.SceneTracker.allPlayers.Contains(base.gameObject)) { Scene.SceneTracker.allPlayers.Add(base.entity.gameObject); } if (!Scene.SceneTracker.allPlayerEntities.Contains(base.entity)) { Scene.SceneTracker.allPlayerEntities.Add(base.entity); } if (!Scene.SceneTracker.allClients.Contains(base.gameObject)) { Scene.SceneTracker.allClients.Add(base.entity.gameObject); } } base.state.AddCallback("CurrentView", delegate { if (this.state.CurrentView == 7 != this.RespawnDeadTrigger.activeSelf) { if (!ts || !ts.inWater) { this.RespawnDeadTrigger.SetActive(!this.RespawnDeadTrigger.activeSelf); } } pn.OnCurrentViewChanged(); if (this.state.CurrentView == 8) { if (Scene.SceneTracker.allPlayers.Contains(this.gameObject)) { Scene.SceneTracker.allPlayers.Remove(this.gameObject); } if (Scene.SceneTracker.allPlayerEntities.Contains(this.entity)) { Scene.SceneTracker.allPlayerEntities.Remove(this.entity); } for (int i = playerTr.childCount - 1; i >= 0; i--) { Transform child = playerTr.GetChild(i); if (!child.GetComponent <Animator>()) { UnityEngine.Object.Destroy(child.gameObject); } else { for (int j = child.childCount - 1; j >= 0; j--) { UnityEngine.Object.Destroy(child.GetChild(j).gameObject); } Component[] components = child.GetComponents(typeof(MonoBehaviour)); foreach (Component component in components) { if (!(component is Animator)) { UnityEngine.Object.DestroyImmediate(component); } } } } Component[] components2 = this.GetComponents(typeof(MonoBehaviour)); foreach (Component component2 in components2) { if (!(component2 is BoltEntity)) { UnityEngine.Object.DestroyImmediate(component2); } } StealItemTrigger stealItemTrigger = UnityEngine.Object.Instantiate <StealItemTrigger>(Prefabs.Instance.DeadBackpackPrefab); stealItemTrigger._entity = this.entity; stealItemTrigger.transform.parent = playerTr; stealItemTrigger.transform.localPosition = Vector3.zero; } }); base.state.AddCallback("BatteryTorchEnabled", delegate { this.plasticTorch.SetEnabled(this.state.BatteryTorchEnabled); }); base.state.AddCallback("BatteryTorchColor", delegate { this.plasticTorch.SetColor(this.state.BatteryTorchColor); }); base.state.AddCallback("BatteryTorchIntensity", delegate { this.plasticTorch.SetIntensity(this.state.BatteryTorchIntensity); }); } }
public IEnumerator doEndPlaneCrashRoutine(Transform mark) { LocalPlayer.PlayerBase.SendMessage("loadCustomAnimation", "operatePanel", SendMessageOptions.DontRequireReceiver); while (LocalPlayer.AnimControl.loadingAnimation) { yield return(null); } Vector3 fixLocalPos = new Vector3(0f, -2.344841f, 0f); LocalPlayer.Inventory.LockEquipmentSlot(Item.EquipmentSlot.LeftHand); LocalPlayer.FpCharacter.allowFallDamage = false; LocalPlayer.ScriptSetup.bodyCollisionGo.SetActive(false); LocalPlayer.FpCharacter.Locked = true; LocalPlayer.Inventory.UnequipItemAtSlot(Item.EquipmentSlot.Chest, false, true, false); LocalPlayer.FpCharacter.CanJump = false; LocalPlayer.Create.Grabber.gameObject.SetActive(false); LocalPlayer.AnimControl.endGameCutScene = true; LocalPlayer.vrPlayerControl.useGhostMode = true; LocalPlayer.vrPlayerControl.gameObject.SendMessage("useSteppedGhostMode"); LocalPlayer.vrPlayerControl.gameObject.SendMessage("setVrStandPos1", LocalPlayer.vrAdapter.overShoulderCamPos, SendMessageOptions.DontRequireReceiver); LocalPlayer.AnimControl.playerHeadCollider.enabled = false; LocalPlayer.Animator.SetBool("onHand", false); LocalPlayer.Rigidbody.interpolation = RigidbodyInterpolation.None; LocalPlayer.Inventory.HideAllEquiped(false, false); LocalPlayer.Animator.SetLayerWeightReflected(0, 1f); LocalPlayer.Animator.SetLayerWeightReflected(1, 1f); LocalPlayer.Animator.SetLayerWeightReflected(2, 1f); LocalPlayer.Animator.SetLayerWeightReflected(3, 0f); LocalPlayer.ScriptSetup.pmControl.FsmVariables.GetFsmBool("noControl").Value = true; LocalPlayer.MainRotator.rotationRange = new Vector2(0f, 0f); LocalPlayer.MainRotator.enabled = false; LocalPlayer.CamRotator.stopInput = true; LocalPlayer.CamRotator.rotationRange = new Vector2(0f, 0f); LocalPlayer.FpCharacter.drinking = true; LocalPlayer.CamFollowHead.smoothLock = true; LocalPlayer.CamFollowHead.lockYCam = true; LocalPlayer.AnimControl.playerHeadCollider.enabled = false; LocalPlayer.AnimControl.playerCollider.enabled = false; LocalPlayer.AnimControl.lockGravity = true; LocalPlayer.AnimControl.animEvents.StartCoroutine("smoothDisableSpine"); LocalPlayer.Transform.rotation = mark.rotation; LocalPlayer.Animator.CrossFade("Base Layer.idle", 0f, 0, 0f); LocalPlayer.Animator.CrossFade("upperBody.idle", 0f, 1, 0f); LocalPlayer.Animator.CrossFade("fullBodyActions.idle", 0f, 2, 0f); LocalPlayer.Animator.SetBool("operatePanel", true); float timer = 0f; Vector3 playerPos = mark.position; playerPos.y += 2.35f; LocalPlayer.Transform.position = playerPos; LocalPlayer.Transform.rotation = mark.rotation; LocalPlayer.PlayerBase.transform.localPosition = fixLocalPos; LocalPlayer.AnimControl.useRootMotion = true; this.currState2 = LocalPlayer.Animator.GetCurrentAnimatorStateInfo(2); while (!this.currState2.IsName("fullBodyActions.operatePanel")) { LocalPlayer.Inventory.LockEquipmentSlot(Item.EquipmentSlot.LeftHand); this.currState2 = LocalPlayer.Animator.GetCurrentAnimatorStateInfo(2); LocalPlayer.Animator.SetLayerWeightReflected(3, 0f); LocalPlayer.Transform.position = playerPos; yield return(null); } LocalPlayer.Animator.SetBool("operatePanel", false); this.currState2 = LocalPlayer.Animator.GetCurrentAnimatorStateInfo(2); this.planeAnimator.CrossFade("Base Layer.endSequence", 0f, 0, this.currState2.normalizedTime); bool canShowEndgameUI = true; bool doArtifactGlow = false; bool doFlash = false; bool doButton = false; while (this.currState2.IsName("fullBodyActions.operatePanel")) { this.currState2 = LocalPlayer.Animator.GetCurrentAnimatorStateInfo(2); this.lockPlayerParams(); LocalPlayer.PlayerBase.transform.localPosition = fixLocalPos; Vector3 hidePos = LocalPlayer.Transform.position + LocalPlayer.Transform.forward * -100f + LocalPlayer.Transform.up * -300f; for (int i = 0; i < Scene.SceneTracker.allPlayers.Count; i++) { if (Scene.SceneTracker.allPlayers[i] != null && Scene.SceneTracker.allPlayers[i].CompareTag("PlayerNet")) { Scene.SceneTracker.allPlayers[i].transform.position = hidePos; } } if (this.currState2.normalizedTime > 0.7f && !doButton) { this.endCrash.activateScreen.SetActive(false); doButton = true; } if (this.currState2.normalizedTime > 0.453f && !doArtifactGlow) { this.artifactGo.SendMessage("setArtifactOn"); doArtifactGlow = true; } if (this.currState2.normalizedTime > 0.537f && !doFlash) { this.artifactGo.SendMessage("enableFlashEffectGo"); doFlash = true; } if (this.currState2.normalizedTime > 0.83f) { Scene.HudGui.SetGUICamEnabled(false); if (canShowEndgameUI) { canShowEndgameUI = false; Scene.HudGui.EndgameScreen.SetActive(true); } } yield return(null); } this.unlockPlayerParams(); LocalPlayer.Inventory.UnlockEquipmentSlot(Item.EquipmentSlot.LeftHand); LocalPlayer.AnimControl.playerHeadCollider.enabled = true; LocalPlayer.AnimControl.playerCollider.enabled = true; LocalPlayer.AnimControl.lockGravity = false; yield return(null); LocalPlayer.AnimControl.skinningAnimal = false; LocalPlayer.ScriptSetup.bodyCollisionGo.SetActive(true); LocalPlayer.AnimControl.endGameCutScene = false; LocalPlayer.vrPlayerControl.useGhostMode = false; LocalPlayer.AnimControl.useRootMotion = false; LocalPlayer.AnimControl.useRootRotation = false; LocalPlayer.Create.Grabber.gameObject.SetActive(true); LocalPlayer.AnimControl.playerHeadCollider.enabled = true; LocalPlayer.AnimControl.playerCollider.enabled = true; LocalPlayer.CamFollowHead.lockYCam = false; LocalPlayer.CamFollowHead.smoothLock = false; LocalPlayer.CamRotator.resetOriginalRotation = true; LocalPlayer.CamRotator.stopInput = false; LocalPlayer.CamRotator.rotationRange = new Vector2(LocalPlayer.FpCharacter.minCamRotationRange, 0f); LocalPlayer.FpCharacter.Locked = false; LocalPlayer.FpCharacter.drinking = false; LocalPlayer.FpCharacter.CanJump = true; LocalPlayer.AnimControl.animEvents.StartCoroutine("smoothEnableSpine"); LocalPlayer.ScriptSetup.pmControl.FsmVariables.GetFsmBool("noControl").Value = false; if (LocalPlayer.ScriptSetup.events.toyHeld) { LocalPlayer.ScriptSetup.events.toyHeld.SetActive(false); } LocalPlayer.MainRotator.rotationRange = new Vector2(0f, 999f); LocalPlayer.MainRotator.resetOriginalRotation = true; LocalPlayer.MainRotator.enabled = true; timer = 0f; while (timer < 1f) { LocalPlayer.CamFollowHead.transform.localRotation = Quaternion.Lerp(LocalPlayer.CamFollowHead.transform.localRotation, LocalPlayer.CamFollowHead.transform.parent.localRotation, timer); timer += Time.deltaTime * 3f; yield return(null); } LocalPlayer.Inventory.enabled = false; yield return(YieldPresets.WaitFiveSeconds); LocalPlayer.Inventory.CurrentView = PlayerInventory.PlayerViews.Loading; MenuMain.exitingToMenu = true; WorkScheduler.ClearInstance(); UniqueIdentifier.AllIdentifiers.Clear(); RecastMeshObj.Clear(); GeoHash.ClearAll(); if (BoltNetwork.isRunning) { if (CoopLobby.IsInLobby) { if (CoopLobby.Instance.Info.IsOwner) { CoopLobby.Instance.Destroy(); } CoopLobby.LeaveActive(); } yield return(YieldPresets.WaitPointFiveSeconds); CoopSteamServer.Shutdown(); CoopSteamClient.Shutdown(); CoopTreeGrid.Clear(); GameSetup.SetInitType(InitTypes.New); GameSetup.SetGameType(GameTypes.Standard); BoltLauncher.Shutdown(); } if (LocalPlayer.GameObject) { Debug.Log("destroy player l210"); UnityEngine.Object.Destroy(LocalPlayer.GameObject); } yield break; }
public static void RegisterObject(CoopGridObject obj) { CoopTreeGrid.RegisterObject(obj, false); }
public static void AttachAdjacent(List <GameObject> positions) { if (CoopTreeGrid.Nodes == null) { return; } for (int i = 0; i < CoopTreeGrid.Nodes.Length; i++) { CoopTreeGrid.Nodes[i].NewHasPlayer = 0; } for (int j = 0; j < positions.Count; j++) { Vector3 position = positions[j].transform.position; int num = Mathf.Clamp(2048 + (int)position.x, 0, 4096); int num2 = Mathf.Clamp(2048 + (int)position.z, 0, 4096); int num3 = Mathf.Clamp(num / 64, 0, 63); int num4 = Mathf.Clamp(num2 / 64, 0, 63); for (int k = -2; k < 3; k++) { for (int l = -2; l < 3; l++) { int num5 = num4 + k; int num6 = num3 + l; if (num5 >= 0 && num5 < 64 && num6 >= 0 && num6 < 64) { CoopTreeGrid.Node[] nodes = CoopTreeGrid.Nodes; int num7 = num5 * 64 + num6; nodes[num7].NewHasPlayer = nodes[num7].NewHasPlayer + 1; } } } } for (int m = 0; m < CoopTreeGrid.Nodes.Length; m++) { CoopTreeGrid.Node node = CoopTreeGrid.Nodes[m]; bool flag = node.NewHasPlayer == 0; bool flag2 = CoopTreeGrid.NodeToSweepIndex(m) == CoopTreeGrid.SweepNodeIndex; if (node.NewHasPlayer > node.OldHasPlayer || (node.NewHasPlayer == 0 && node.NewHasPlayer != node.OldHasPlayer) || flag2) { if (flag && flag2) { flag = false; CoopTreeGrid.Nodes[m].NewHasPlayer = -1; } if (node.Trees != null) { for (int n = 0; n < node.Trees.Count; n++) { BoltEntity boltEntity = node.Trees[n]; if (boltEntity) { if (boltEntity.isAttached) { boltEntity.Freeze(flag); } } else { node.Trees.RemoveAt(n); n--; } } } if (node.Objects != null) { for (int num8 = 0; num8 < node.Objects.Count; num8++) { CoopGridObject coopGridObject = node.Objects[num8]; if (coopGridObject && coopGridObject.entity) { if (coopGridObject.entity.isAttached) { coopGridObject.entity.Freeze(flag); } } else { node.Objects.RemoveAt(num8); num8--; } } } } CoopTreeGrid.Nodes[m].OldHasPlayer = CoopTreeGrid.Nodes[m].NewHasPlayer; } int num9 = CoopTreeGrid.SweepToNodeIndex(CoopTreeGrid.SweepNodeIndex); if (num9 < CoopTreeGrid.Nodes.Length) { CoopTreeGrid.SweepNodeIndex++; } else if (num9 == CoopTreeGrid.Nodes.Length + 4) { CoopTreeGrid.SweepNodeIndex++; Debug.Log("Finished tree grid sweep"); } }