diff options
author | Stijn Buys <ingar@osirion.org> | 2008-11-01 13:33:18 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-11-01 13:33:18 +0000 |
commit | 83d6c17799c4d448a67ab5cdad02954282fa5c94 (patch) | |
tree | 2d76abb9bb501491f78e07822ed52e8302fdd247 /src/core/entity.cc | |
parent | a6bceed80f1b4315f23656efeceb6fe02cc7641c (diff) |
server-side model loading, initial @dock function
Diffstat (limited to 'src/core/entity.cc')
-rw-r--r-- | src/core/entity.cc | 52 |
1 files changed, 41 insertions, 11 deletions
diff --git a/src/core/entity.cc b/src/core/entity.cc index 2c63b18..f9062e0 100644 --- a/src/core/entity.cc +++ b/src/core/entity.cc @@ -102,7 +102,6 @@ Entity::Entity(unsigned int flags) : entity_dirty = false; entity_model = 0; - entity_modelname.clear(); entity_label.clear(); entity_name.clear(); @@ -213,22 +212,53 @@ void Entity::hide() entity_visible = false; } +void Entity::set_flag(Flags flag) +{ + entity_flags |= flag; +} + +void Entity::unset_flag(Flags flag) +{ + entity_flags &= ~flag; +} + +void Entity::set_model(model::Model *model) +{ + entity_model = model; + if (entity_model) { + entity_radius = entity_model->radius(); + entity_modelname = entity_model->name(); + } +} + +void Entity::set_modelname(const std::string &modelname) +{ + if (!modelname.size()) { + set_model(0); + } else { + set_model(model::Model::load(modelname)); + } + + if (!entity_model) + entity_modelname.clear(); +} + void Entity::serialize_server_create(std::ostream & os) const { - os << entity_moduletypeid << " " - << entity_flags << " " - << (entity_visible ? 1 : 0) << " " - << (entity_zone ? entity_zone->id() : 0) << " " + os << moduletype() << " " + << flags() << " " + << (visible() ? 1 : 0) << " " + << (zone() ? zone()->id() : 0) << " " << std::setprecision(8) << entity_location << " " - << entity_color << " " - << entity_color_second << " " - << entity_shape << " " - << entity_radius << " " + << color() << " " + << color_second() << " " + << shape() << " " + << radius() << " " << std::setprecision(8) << entity_axis.forward() << " " << std::setprecision(8) << entity_axis.left() << " " << "\"" << entity_label << "\" " << "\"" << entity_name << "\" " - << "\"" << entity_modelname << "\" "; + << "\"" << (entity_model ? entity_model->name() : "") << "\" "; } void Entity::receive_server_create(std::istream &is) @@ -288,8 +318,8 @@ void Entity::receive_server_create(std::istream &is) while ( (is.get(c)) && (c != '"')); while ( (is.get(c)) && (c != '"')) n += c; - entity_modelname = n; + set_modelname(n); entity_dirty = false; } |