This commit is contained in:
Oscar 2025-06-28 22:39:08 +03:00
parent 7223dd3b61
commit 037ef1b6a3
2 changed files with 80 additions and 0 deletions

View File

@ -9,6 +9,7 @@ partial class Dedugan
{ {
[Property] public List<string> WorkshopItems { get; set; } [Property] public List<string> WorkshopItems { get; set; }
[Property] public ClothingContainer CurrentClothing { get; set; } [Property] public ClothingContainer CurrentClothing { get; set; }
private ClothingContainer initialClothing;
public static IReadOnlyList<Dedugan> All => InternalPlayers; public static IReadOnlyList<Dedugan> All => InternalPlayers;
public static List<Dedugan> InternalPlayers = new List<Dedugan>(); public static List<Dedugan> InternalPlayers = new List<Dedugan>();
public List<ClothingContainer.ClothingEntry> Clothings { get; set; } public List<ClothingContainer.ClothingEntry> Clothings { get; set; }
@ -76,6 +77,7 @@ partial class Dedugan
CurrentClothing.Clothing.RemoveAll( entry => !allowedCategories.Contains( entry.Clothing.Category ) ); CurrentClothing.Clothing.RemoveAll( entry => !allowedCategories.Contains( entry.Clothing.Category ) );
CurrentClothing.Apply( Renderer ); CurrentClothing.Apply( Renderer );
initialClothing = CurrentClothing;
} }
CancellationTokenSource _cts; CancellationTokenSource _cts;

78
README.md Normal file
View File

@ -0,0 +1,78 @@
# Sasalka Game Project
## Последние обновления
### 🔧 Оптимизации производительности
- **Кэширование Network.IsOwner** - убраны повторные проверки в OnUpdate()
- **Оптимизация UpdateBodyRotation** - добавлена проверка изменений углов перед вычислениями
- **Кэширование предметов в инвентаре** - замена LINQ FirstOrDefault на Dictionary для O(1) поиска
- **Уменьшение частоты обновления эффектов** - эффекты оружия обновляются каждые 100мс вместо каждого кадра
- **Кэширование компонентов** - Rigidbody и PickupItem получаются один раз и кэшируются
### 👕 Исправление проблемы с волосами
- **Защита волос при снятии одежды** - волосы больше не удаляются при снятии одежды с головы
- Добавлена проверка категорий волос в методе `StripByName()`
- Защищены категории: Hair, HairShort, HairMedium, HairLong, HairUpdo, HairSpecial
### 📦 Система стакания предметов
- **Поддержка стакания** - предметы с флагом `IsStackable = true` теперь автоматически стакаются
- **Автоматическое объединение стаков** - стаки объединяются при добавлении/удалении предметов
- **Оптимизация инвентаря** - метод `ConsolidateStacks()` для ручного объединения стаков
- **Патроны по умолчанию стакаемые** - AmmoItemDefinition теперь имеет IsStackable = true и MaxCount = 100
### 🎯 Как использовать стакание
1. В определении предмета установите `IsStackable = true`
2. Установите `MaxCount` - максимальное количество предметов в стаке
3. Система автоматически будет стакать предметы при добавлении в инвентарь
### 📈 Ожидаемые улучшения производительности
- Снижение нагрузки CPU на 15-25%
- Ускорение поиска предметов в инвентаре с O(n) до O(1)
- Меньше обращений к компонентам
- Оптимизация рендеринга эффектов
## Система оружия
### Основные компоненты
- `BaseWeapon` - базовый класс для всех видов оружия
- `WeaponItemDefinition` - определение оружия с параметрами
- `AmmoItemDefinition` - определение патронов (стакаемые по умолчанию)
### Функции оружия
- Автоматическая и одиночная стрельба
- Система патронов с магазином и инвентарем
- Перезарядка с анимацией
- Эффекты выстрела и попадания
- Синхронизация по сети
### Система инвентаря
- Поддержка стакания предметов
- Автоматическое объединение стаков
- Кэширование для производительности
- События для UI обновлений
## Система камеры
### Орбитальное движение
- Камера вращается вокруг пивота при движении мыши
- Компенсация поворота тела
- Плавная интерполяция позиции пивота
- Поддержка ADS режима
### Управление
- Горизонтальное движение мыши - вращение по орбите
- Вертикальное движение мыши - наклон камеры
- Плавное следование за позицией глаз игрока
## Сетевая синхронизация
### Синхронизируемые данные
- Позиция и поворот игрока
- Состояние оружия (перезарядка, патроны)
- Экипированные предметы
- Анимации персонажа
### Оптимизации сети
- Кэширование проверок владельца
- Уменьшение частоты обновлений
- Эффективная синхронизация состояний