/
technologic
/
3d-adventure_next
Обзор
Документация
Войти
/
technologic
/
3d-adventure_next
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
Source/GameScene.h
48 строк
2 KB
iRoboco
ray impl v1
23 май 2026, 23:55
23 май 2026, 23:55
46ef8e7
Код
Авторство
О чём код?
#pragma once #include "axmol.h" #include "ChunkManager.h" #include "FirstPersonController.h" #include "VoxelRaycaster.h" /** @brief Основная игровая сцена (Gameplay Scene) Архитектурные принципы (Steam-ready): - Инкапсуляция всех игровых систем внутри Scene. - Безопасный lifecycle: init -> update -> pause/resume -> destructor. - Разделение графа сцены: камера, игрок, чанки, будущий HUD/UI. - Потокобезопасная интеграция через коллбеки и lazy-инициализацию. */ class GameScene : public ax::Scene { public: static ax::Scene* create(); bool init() override; // Деструктор для корректного shutdown() ChunkManager // Вызывается только при полном уничтожении сцены (replaceScene, quit), // но НЕ при сворачивании приложения. ~GameScene() override; // Установка внешней ссылки на нод игрока (для HUD, инвентаря, сетевых систем) void setPlayerNode(ax::Node* player) { _playerNode = player; } ax::Vec3 getPlayerPosition() const; protected: // Axmol вызывает эти методы при сворачивании/разворачивании окна void onEnter() override; void onExit() override; private: void update(float dt) override; // Обработчик клавиатуры для перезапуска уровня void onKeyPressed(ax::EventKeyboard::KeyCode keyCode, ax::Event* event); // Ядро генерации мира ChunkManager _chunkMgr; // Управление камерой и физикой FirstPersonController* _playerController = nullptr; ax::Camera* _mainCamera = nullptr; // Абстрактная ссылка для внешних систем (UI, звук, сеть) ax::Node* _playerNode = nullptr; VoxelRaycasterNode* _raycaster = nullptr; };