This commit is contained in:
Oscar
2025-06-28 22:26:47 +03:00
parent f7e8f8bf1f
commit 7223dd3b61
50 changed files with 479 additions and 82 deletions

View File

@@ -35,6 +35,10 @@ public class BaseWeapon : InventoryItem, IUseable
private WeaponItemDefinition _weaponDefinition;
private bool _isInitialized;
private InventoryItem _inventoryItem;
// Оптимизация обновлений
private TimeSince _lastEffectsUpdate = 0f;
private const float EFFECTS_UPDATE_INTERVAL = 0.1f; // Обновляем эффекты каждые 100мс
// IUseable реализация - Cooldown вычисляется на основе FireRate
public float Cooldown
@@ -95,8 +99,12 @@ public class BaseWeapon : InventoryItem, IUseable
FinishReload();
}
// Обновляем эффекты
UpdateEffects();
// Обновляем эффекты с интервалом для оптимизации
if ( _lastEffectsUpdate >= EFFECTS_UPDATE_INTERVAL )
{
UpdateEffects();
_lastEffectsUpdate = 0f;
}
}
/// <summary>
@@ -132,11 +140,16 @@ public class BaseWeapon : InventoryItem, IUseable
{
base.OnEquipped();
// Получаем Rigidbody в момент экипировки
_rigidbody = GameObject.Components.Get<Rigidbody>();
// Кэшируем Rigidbody при экипировке
if ( _rigidbody == null )
_rigidbody = GameObject.Components.Get<Rigidbody>();
if ( _rigidbody != null )
_rigidbody.Enabled = false;
if ( _pickupItem == null )
_pickupItem = GameObject.Components.Get<PickupItem>();
if ( _pickupItem != null )
_pickupItem.Enabled = false;
}
@@ -148,8 +161,7 @@ public class BaseWeapon : InventoryItem, IUseable
{
base.OnUnEquipped();
// Получаем Rigidbody в момент снятия
_rigidbody = GameObject.Components.Get<Rigidbody>();
// Используем кэшированный Rigidbody
if ( _rigidbody != null )
_rigidbody.Enabled = true;