コード例 #1
0
        private static void UpdateBuildingHealthMode()
        {
            Vector3 playerPos = Player.m_localPlayer.transform.position;

            foreach (WearNTear wearNTear in WearNTear.GetAllInstaces())
            {
                UpdateDataCache(wearNTear);
                if (ShouldHighlight(wearNTear, playerPos))
                {
                    HighlightPiece(wearNTear);
                }
            }
        }
コード例 #2
0
 private void Update()
 {
     if (configEnableAutoRepair.Value)
     {
         var cur_time = DateTime.Now.Ticks;
         if ((cur_time - l_saved_time) / TimeSpan.TicksPerSecond >= configRepairInterval.Value)
         {
             l_saved_time = cur_time;
             List <WearNTear> list = WearNTear.GetAllInstaces();
             if (list.Count > 0)
             {
                 foreach (WearNTear item in list)
                 {
                     ZNetView view = (ZNetView)GetInstanceField(item, "m_nview");
                     if (view != null)
                     {
                         if (PrivateArea.CheckInPrivateArea(item.transform.position))
                         {
                             float health = view.GetZDO().GetFloat("health");
                             if (!(health > 0) || !(health < item.m_health))
                             {
                                 continue;
                             }
                             var res_health = health + item.m_health * configRepairAmountPercent.Value / 100;
                             if (res_health > item.m_health)
                             {
                                 res_health = item.m_health;
                             }
                             view.GetZDO().Set("health", res_health);
                             view.InvokeRPC(ZNetView.Everybody, "WNTHealthChanged", new object[] { res_health });
                         }
                     }
                 }
             }
         }
     }
 }
コード例 #3
0
        private static IEnumerator UpdateBuildingHealthModeCo()
        {
            Vector3 playerPos = Player.m_localPlayer.transform.position;
            int     c         = 0;
            int     m         = AsyncObjectPerFrame.Value;

            WearNTear[] instances = WearNTear.GetAllInstaces().OrderBy(
                i => Vector3.Distance(i.transform.position, playerPos)).ToArray();

            foreach (WearNTear wearNTear in instances)
            {
                if (c % m == 0)
                {
                    yield return(null);
                }

                if (!_modEnabled)
                {
                    break;
                }

                if (wearNTear == null)
                {
                    continue;
                }

                UpdateDataCache(wearNTear);
                if (ShouldHighlight(wearNTear, playerPos))
                {
                    HighlightPiece(wearNTear);
                }
                c++;
            }

            isUpdatingAsync = false;
        }
コード例 #4
0
    // Token: 0x0600103A RID: 4154 RVA: 0x000727CF File Offset: 0x000709CF
    private IEnumerator UpdateWear()
    {
        for (;;)
        {
            List <WearNTear> instances = WearNTear.GetAllInstaces();
            int index = 0;
            while (index < instances.Count)
            {
                int num = 0;
                while (num < 50 && instances.Count != 0 && index < instances.Count)
                {
                    instances[index].UpdateWear();
                    int num2 = index + 1;
                    index = num2;
                    num++;
                }
                yield return(null);
            }
            yield return(new WaitForSeconds(0.5f));

            instances = null;
        }
        yield break;
    }