/* * FloorFactory.h * * Created on: Aug 12, 2019 * Author: fredrick */ #ifndef FLOORFACTORY_H_ #define FLOORFACTORY_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "FloorPhysicsComponent.h" namespace JamSpook { using std::string; using std::shared_ptr; using std::make_shared; using std::weak_ptr; using std::dynamic_pointer_cast; using std::function; using std::bind; using std::vector; using glm::vec3; using glm::mat4; using glm::quat; using glm::translate; using glm::scale; using ecos::utility::getShared; using ecos::core::IDCache; using ecos::core::logging::Log; using ecos::core::logging::LogLevel; using ecos::core::BroadcastObservable; using ecos::core::Message; using ecos::core::Entity; using ecos::core::SceneGraph; using ecos::core::ICCResponseComponent; using ecos::asset::AssetSystem; using ecos::asset::DataManagementMode; using ecos::graphics::GraphicsSystem; using ecos::graphics::GraphicsComponent; using ecos::graphics::RenderLayer; using ecos::graphics::TextureFactory; using ecos::graphics::Texture; using ecos::graphics::ShaderType; using ecos::graphics::ShaderAsset; using ecos::graphics::ShaderProgram; using ecos::graphics::ShaderProgramFactory; using ecos::graphics::Material; using ecos::graphics::MaterialFactory; using ecos::graphics::Mesh; using ecos::graphics::MeshFactory; using ecos::graphics::ModelRenderableFactory; using ecos::graphics::ModelRenderable; using ecos::physics::PhysicsSystem; using ecos::physics::PhysicsComponent; using ecos::physics::ColliderFactory; using ecos::physics::Collider; class FloorFactory { private: weak_ptr mAssetSystem; weak_ptr mGraphicsSystem; weak_ptr mPhysicsSystem; weak_ptr mRenderLayer; public: FloorFactory(weak_ptr assetSystem, weak_ptr graphicsSystem, weak_ptr physicsSystem, weak_ptr renderLayer); virtual ~FloorFactory(); shared_ptr createFloor(const vec3 position); shared_ptr createStaticFloor(const vec3 position); }; } // namespace JamSpook #endif // FLOORFACTORY_H_