Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-11-01 13:33:18 +0000
committerStijn Buys <ingar@osirion.org>2008-11-01 13:33:18 +0000
commit83d6c17799c4d448a67ab5cdad02954282fa5c94 (patch)
tree2d76abb9bb501491f78e07822ed52e8302fdd247 /src/core/entity.cc
parenta6bceed80f1b4315f23656efeceb6fe02cc7641c (diff)
server-side model loading, initial @dock function
Diffstat (limited to 'src/core/entity.cc')
-rw-r--r--src/core/entity.cc52
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;
}