示例#1
0
    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);
        }
    }
示例#2
0
    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;
        }
    }
示例#3
0
    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;
     }
 }
示例#5
0
 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");
     }
 }
示例#6
0
 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);
             }
         }
     }
 }
示例#7
0
 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);
     }
 }
示例#8
0
 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();
 }
示例#9
0
 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
             }));
         }
     }
 }
示例#10
0
 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);
         });
     }
 }
示例#11
0
        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;
        }
示例#12
0
 public static void RegisterObject(CoopGridObject obj)
 {
     CoopTreeGrid.RegisterObject(obj, false);
 }
示例#13
0
    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");
        }
    }