/** * @author Edouard DUPIN * * @copyright 2011, Edouard DUPIN, all right reserved * * @license BSD v3 (see license file) */ #ifndef __EWOL_SCENE_H__ #define __EWOL_SCENE_H__ #include #include #include #include #include #include #include namespace widget { class Scene :public ewol::Widget { protected: game::Engine* m_gameEngine; //!< display engine system bool m_isRunning; //!< the display is running (not in pause) int64_t m_lastCallTime; //!< previous call Time public: /** * @brief Main scene constructor * @param[in] gameEngine Used game engine for the display (can be NULL). */ Scene(game::Engine* gameEngine=NULL); /** * @brief Destructor * @note The engine is not destroy, it is the reponsability of the user */ virtual ~Scene(void); /** * @brief Set the scene in pause for a while */ void Pause(void); /** * @brief Resume the scene activity */ void Resume(void); /** * @brief Toggle between pause and running */ void PauseToggle(void); // Derived function virtual void GenDraw(ewol::DrawProperty displayProp); protected: // Derived function virtual void ScenePeriodicCall(int64_t localTime, int32_t deltaTime) { }; // camera properties : private: vec3 m_camRotation; vec3 m_camTranslation; float m_camAngleView; float m_camdistanceViewStart; float m_camdistanceViewStop; float m_zoom; public: void SetCamaraTranslation(); void SetCamaraRotation(); void SetCamaraAngleView(); void SetCamaraDistanceViewStart(); void SetCamaraDistanceViewStop(); /** * @brief Convert the absolute position in the local Position (Relative) * @param[in] pos Absolute position that you request convertion * @return the relative position */ virtual vec2 RelativePosition(vec2 pos); // Derived function virtual const char * const GetObjectType(void) { return "Ewol::Scene"; }; // Derived function virtual void OnRegenerateDisplay(void); // Derived function virtual void PeriodicCall(int64_t localTime); // Derived function virtual void OnDraw(ewol::DrawProperty& displayProp); // Derived function virtual bool OnEventInput(ewol::keyEvent::type_te type, int32_t IdInput, ewol::keyEvent::status_te statusEvent, vec2 pos); // Derived function virtual bool OnEventKb(ewol::keyEvent::status_te statusEvent, uniChar_t unicodeData); // Derived function virtual bool OnEventKbMove(ewol::keyEvent::status_te statusEvent, ewol::keyEvent::keyboard_te specialKey); }; }; #endif