X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fanimatedobject.cpp;h=3a1d9d836ffea98989b79936f87a8ebe8034e20b;hb=6db6b7e49848e6bbc14f3ec8113ee5a941e4af07;hp=eec54aa74f38d24ddb40e57d7e1bf922e951d76c;hpb=237bf34e27585f4083a9c8cea5a7df95f4c081e7;p=libs%2Fgl.git diff --git a/source/animatedobject.cpp b/source/animatedobject.cpp index eec54aa7..3a1d9d83 100644 --- a/source/animatedobject.cpp +++ b/source/animatedobject.cpp @@ -43,9 +43,39 @@ void AnimatedObject::set_pose_matrix(unsigned link, const Matrix &m) void AnimatedObject::setup_render(Renderer &renderer, const Tag &) const { - renderer.matrix_stack() *= matrix; + renderer.transform(matrix); if(shdata) - renderer.add_shader_data(shdata); + renderer.add_shader_data(*shdata); +} + + +AnimatedObject::Loader::Loader(AnimatedObject &o): + DataFile::ObjectLoader(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