фыв
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user