#pragma once #include "TextureManager.h" #include "BoneAnimatedModel.h" #include "AudioPlayerAsync.h" #include #include #include "ActiveObject.h" #include "Room.h" #ifdef __linux__ #include #endif #include "OpenGlExtensions.h" #include #include "BoundaryBox.h" // Добавляем новый include namespace ZL { class GameObjectManager { public: void initializeLoadingScreen(); void initialize(); void switch_room(int index); void handleEvent(const SDL_Event& event); void updateScene(size_t ms); void checkMouseIntersection(int mouseX, int mouseY, const Matrix4f& projectionModelView); // Добавляем новый метод std::shared_ptr testObjTexturePtr; std::shared_ptr roomTexturePtr; std::shared_ptr coneTexturePtr; //ZL::VertexDataStruct colorCubeMesh; //ZL::VertexRenderStruct colorCubeMeshMutable; //ZL::VertexDataStruct testObjMesh; //ZL::VertexRenderStruct testObjMeshMutable; ZL::BoneSystem violaIdleModel; ZL::VertexRenderStruct violaIdleModelMutable; ZL::BoneSystem violaWalkModel; ZL::VertexRenderStruct violaWalkModelMutable; ZL::VertexDataStruct textMesh; ZL::VertexRenderStruct textMeshMutable; //ZL::VertexDataStruct coneMesh; //ZL::VertexRenderStruct coneMeshMutable; std::vector activeObjects; std::vector rooms; AudioPlayerAsync audioPlayerAsync; ZL::VertexDataStruct inventoryIconMesh; ZL::VertexRenderStruct inventoryIconMeshMutable; static const float INVENTORY_ICON_SIZE; static const float INVENTORY_MARGIN; ActiveObjectManager aoMgr; int objects_in_inventory; std::shared_ptr loadingScreenTexturePtr; ZL::VertexDataStruct loadingScreenMesh; ZL::VertexRenderStruct loadingScreenMeshMutable; std::list> loadingFunctions; std::thread loadingThread; bool sideThreadLoadingCompleted = false; private: //int animationCounter = 0; int lastMouseX = 0; // Добавляем переменные для хранения позиции мыши int lastMouseY = 0; int current_room_index; bool isPointInObject(int screenX, int screenY, int objectScreenX, int objectScreenY) const; void worldToScreenCoordinates(Vector3f objectPos, // Добавляем метод Matrix4f projectionModelView, int screenWidth, int screenHeight, int& screenX, int& screenY); BoundaryBox walkArea{800.0f, 800.0f}; // Изменяем размер с 400 на 800 }; } // namespace ZL