shdata = new ProgramData;
}
+AnimatedObject::~AnimatedObject()
+{
+ delete shdata;
+}
+
void AnimatedObject::set_matrix(const Matrix &m)
{
matrix = m;
{
renderer.matrix_stack() *= matrix;
if(shdata)
- renderer.add_shader_data(shdata);
+ renderer.add_shader_data(*shdata);
+}
+
+
+AnimatedObject::Loader::Loader(AnimatedObject &o):
+ DataFile::ObjectLoader<AnimatedObject>(o)
+{
+ add("position", &Loader::position);
+ add("rotation", &Loader::rotation);
+ add("scale", &Loader::scale);
+ add("scale", &Loader::scale_uniform);
+}
+
+void AnimatedObject::Loader::position(float x, float y, float z)
+{
+ obj.matrix.translate(x, y, z);
+}
+
+void AnimatedObject::Loader::rotation(float a, float x, float y, float z)
+{
+ obj.matrix.rotate_deg(a, x, y, z);
+}
+
+void AnimatedObject::Loader::scale(float x, float y, float z)
+{
+ obj.matrix.scale(x, y, z);
+}
+
+void AnimatedObject::Loader::scale_uniform(float s)
+{
+ obj.matrix.scale(s);
}
} // namespace GL