diff options
Diffstat (limited to 'src/core/entityglobe.h')
-rw-r--r-- | src/core/entityglobe.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/src/core/entityglobe.h b/src/core/entityglobe.h new file mode 100644 index 0000000..e60f61a --- /dev/null +++ b/src/core/entityglobe.h @@ -0,0 +1,96 @@ +/* + 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; + } + + /// 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_texturename(const std::string & texturename) { + entity_texturename.assign(texturename); + } + + inline void set_coronaname(const std::string & texturename) { + entity_coronaname.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; + std::string entity_texturename; + std::string entity_coronaname; +}; + +} + +#endif // __INCLUDED_CORE_ENTITYGLOBE_H__ |