# Модульная структура проекта EEV_Proj

## Обзор
Проект разбит на логические модули для улучшения читаемости, поддерживаемости и переиспользования кода.

## Структура модулей

### 1. Core (Ядро)
- **GameCore.js** - Основная логика игры
- **SceneManager.js** - Управление 3D сценой
- **CameraManager.js** - Управление камерами
- **PlayerManager.js** - Управление игроком
- **CollisionManager.js** - Система коллизий для интерьеров

### 2. Rendering (Рендеринг)
- **RendererManager.js** - Управление рендерером
- **MaterialManager.js** - Управление материалами
- **TextureManager.js** - Управление текстурами
- **ModelLoader.js** - Загрузка 3D моделей

### 3. Gameplay (Игровой процесс)
- **InteriorManager.js** - Управление интерьерами
- **DialogManager.js** - Система диалогов
- **InventoryManager.js** - Управление инвентарем
- **QuestManager.js** - Система квестов

### 4. UI (Пользовательский интерфейс)
- **PhoneManager.js** - Виртуальный телефон
- **AppManager.js** - Управление приложениями
- **NotificationManager.js** - Система уведомлений

### 5. Networking (Сетевое взаимодействие)
- **SocketManager.js** - Управление WebSocket соединениями
- **VoiceChatManager.js** - Голосовой чат
- **MessageManager.js** - Система сообщений

### 6. Utils (Утилиты)
- **Pathfinding.js** - Поиск пути
- **CollisionDetection.js** - Обнаружение коллизий
- **AnimationManager.js** - Управление анимациями

## Система коллизий для интерьеров

### CollisionManager.js
Модуль отвечает за проверку столкновений игрока с объектами интерьера при движении от первого лица.

**Основные функции:**
- `checkInteriorCollisions()` - проверка коллизий при движении
- `checkPlayerCollision()` - проверка столкновения с конкретным объектом
- `getSafeTeleportPosition()` - поиск безопасной позиции для телепортации
- `checkInteriorInteractions()` - проверка взаимодействий с интерактивными объектами

**Особенности:**
- Использует AABB (Axis-Aligned Bounding Box) для быстрой проверки коллизий
- Кэширование коллайдеров для оптимизации производительности
- Раздельная проверка по осям X и Z для плавного движения
- Автоматическое исключение интерактивных объектов и хит-зон

**Интеграция:**
- Работает совместно с `PlayerManager` для ограничения движения
- Использует данные из `SceneManager` о коллайдерах интерьера
- Поддерживает различные типы геометрии (Box, Sphere, Custom)

## Принципы модулизации

1. **Единая ответственность** - каждый модуль отвечает за одну область функциональности
2. **Слабая связанность** - модули минимально зависят друг от друга
3. **Высокая когезия** - связанные функции находятся в одном модуле
4. **Интерфейсы** - четко определенные API между модулями
5. **Переиспользование** - модули можно использовать в других частях проекта

## Импорты и экспорты

```javascript
// Пример импорта
import { SceneManager } from './modules/SceneManager.js';
import { CameraManager } from './modules/CameraManager.js';

// Пример экспорта
export class GameCore {
  // ...
}
```

## Конфигурация

Каждый модуль может иметь свой конфигурационный файл:
- `config.js` - основные настройки
- `constants.js` - константы
- `types.js` - типы данных (для TypeScript)
