asd
This commit is contained in:
parent
7223dd3b61
commit
037ef1b6a3
@ -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
78
README.md
Normal 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 режима
|
||||||
|
|
||||||
|
### Управление
|
||||||
|
- Горизонтальное движение мыши - вращение по орбите
|
||||||
|
- Вертикальное движение мыши - наклон камеры
|
||||||
|
- Плавное следование за позицией глаз игрока
|
||||||
|
|
||||||
|
## Сетевая синхронизация
|
||||||
|
|
||||||
|
### Синхронизируемые данные
|
||||||
|
- Позиция и поворот игрока
|
||||||
|
- Состояние оружия (перезарядка, патроны)
|
||||||
|
- Экипированные предметы
|
||||||
|
- Анимации персонажа
|
||||||
|
|
||||||
|
### Оптимизации сети
|
||||||
|
- Кэширование проверок владельца
|
||||||
|
- Уменьшение частоты обновлений
|
||||||
|
- Эффективная синхронизация состояний
|
||||||
Loading…
x
Reference in New Issue
Block a user