/* core/entityglobe.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2. */ #ifndef __INCLUDED_CORE_ENTITYGLOBE_H__ #define __INCLUDED_CORE_ENTITYGLOBE_H__ #include "core/entity.h" namespace core { /// a Globe entity class EntityGlobe : public Entity { public: /// server-side constructor EntityGlobe(); EntityGlobe(std::istream & is); virtual ~EntityGlobe(); /*----- inspectors ----------------------------------------------- */ /// core type id virtual inline const unsigned int type() const { return Entity::Globe; } /// texture name inline const std::string &texturename() const { return entity_texturename; } /// texture render id inline size_t texture_id() const { return entity_texture_id; } /// corona texture name inline const std::string &coronaname() const { return entity_coronaname; } /// corona texture id inline size_t corona_id() const { return entity_corona_id; } /// rings texture name inline const std::string &ringsname() const { return entity_ringsname; } /// rings texture id inline size_t rings_id() const { return entity_rings_id; } /// rotation speed in degrees per second inline float rotationspeed() const { return entity_rotationspeed; } /*----- mutators -------------------------------------------------- */ inline void set_rotationspeed(const float rotationspeed) { entity_rotationspeed = rotationspeed; } inline void set_texture_id(size_t texture_id) { entity_texture_id = texture_id; } inline void set_corona_id(size_t texture_id) { entity_corona_id = texture_id; } inline void set_rings_id(size_t texture_id) { entity_rings_id = texture_id; } inline void set_texturename(const std::string & texturename) { entity_texturename.assign(texturename); } inline void set_coronaname(const std::string & texturename) { entity_coronaname.assign(texturename); } inline void set_ringsname(const std::string & texturename) { entity_ringsname.assign(texturename); } /*----- serializers ----------------------------------------------- */ /// serialize the entity to a stream virtual void serialize_server_create(std::ostream & os) const; /// receive a server-to-client create from a stream virtual void receive_server_create(std::istream &is); private: float entity_rotationspeed; size_t entity_texture_id; size_t entity_corona_id; size_t entity_rings_id; std::string entity_texturename; std::string entity_coronaname; std::string entity_ringsname; }; } #endif // __INCLUDED_CORE_ENTITYGLOBE_H__