/** @file * @author Edouard DUPIN * @copyright 2011, Edouard DUPIN, all right reserved * @license APACHE v2.0 (see license file) */ #pragma once #include #include #include #include #include #include #include #include #include #include #include class btBroadphaseInterface; class btCollisionShape; class btOverlappingPairCache; class btCollisionDispatcher; class btConstraintSolver; struct btCollisionAlgorithmCreateFunc; class btDefaultCollisionConfiguration; class btDynamicsWorld; #include class btVector3; #include #include namespace ege { namespace widget { class Scene : public ewol::Widget { public: // signals esignal::Signal/*, ememory::SharedPtr*/> signalDisplayDebug; //!< emit a signal to the application to draw the debug (@ref setDebugPhysic) // properties eproperty::Value propertyDebugPhysic; //!< display Physic Debug eproperty::Value propertyDebugNormal; //!< display mesh normal Debug eproperty::Value propertyDebugApplication; //!< display Application Debug protected: ememory::SharedPtr m_env; ememory::SharedPtr m_debugDrawProperty; public: protected: /** * @brief Constructor of the widget classes * @return (no execption generated (not managed in embended platform)) */ Scene(); void init(); public: void setEnv(ememory::SharedPtr _env) { m_env = _env; } public: DECLARE_FACTORY(Scene); /** * @brief Destructor of the widget classes */ virtual ~Scene(); protected: std::string m_cameraName; //!< current camera name public: /** * @brief Select a Camera for the display. * @param[in] _cameraName New name of the camera. */ void setCamera(const std::string& _cameraName); /** * @brief Get the current camera name to display the environnement. * @return the current camera name. */ const std::string& getCamera() const { return m_cameraName; } protected: // Note : This is only for temporary elements : on the display std::vector m_displayElementOrdered; protected: esignal::Connection m_PCH; //!< Periodic call handle to remove it when needed /** * @brief Periodic call to update grapgic display * @param[in] _event Time generic event */ virtual void periodicCall(const ewol::event::Time& _event); protected: void onDraw() override; void systemDraw(const ewol::DrawProperty& _displayProp) override; void onRegenerateDisplay() override; void calculateSize() override; }; } }