X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fanimatedobject.cpp;fp=source%2Fanimatedobject.cpp;h=0000000000000000000000000000000000000000;hb=7aaec9a70b8d7733429bec043f8e33e02956f266;hp=390b90b869ce6acc9eb5a5a93a6fbe701776429e;hpb=bec07999d95b76f4b47cffcc564d0cd0afc0435e;p=libs%2Fgl.git diff --git a/source/animatedobject.cpp b/source/animatedobject.cpp deleted file mode 100644 index 390b90b8..00000000 --- a/source/animatedobject.cpp +++ /dev/null @@ -1,110 +0,0 @@ -#include -#include -#include "animatedobject.h" -#include "error.h" -#include "object.h" -#include "programdata.h" -#include "renderer.h" -#include "technique.h" - -using namespace std; - -namespace Msp { -namespace GL { - -AnimatedObject::AnimatedObject(const Object &o): - ObjectInstance(o), - shdata(0) -{ - if(const Technique *tech = object.get_technique()) - if(tech->has_shaders()) - shdata = new ProgramData; -} - -AnimatedObject::~AnimatedObject() -{ - delete shdata; -} - -void AnimatedObject::set_pose_matrix(unsigned link, const Matrix &m) -{ - if(shdata) - { - if(link*16>=pose_data.size()) - pose_data.resize((link+1)*16); - copy(m.data(), m.data()+16, &pose_data[link*16]); - shdata->uniform_matrix4_array("pose", pose_data.size()/16, &pose_data[0]); - } -} - -ProgramData &AnimatedObject::get_shader_data() -{ - if(!shdata) - throw invalid_operation("AnimatedObject::get_shader_data"); - return *shdata; -} - -const ProgramData &AnimatedObject::get_shader_data() const -{ - if(!shdata) - throw invalid_operation("AnimatedObject::get_shader_data"); - return *shdata; -} - -void AnimatedObject::set_uniform(const string &name, const KeyFrame::AnimatedUniform &uni) -{ - if(!shdata) - throw invalid_operation("AnimatedObject::set_uniform"); - - if(uni.size==1) - shdata->uniform(name, uni.values[0]); - else if(uni.size==2) - shdata->uniform2(name, uni.values); - else if(uni.size==3) - shdata->uniform3(name, uni.values); - else if(uni.size==4) - shdata->uniform4(name, uni.values); - else - throw invalid_argument("AnimatedObject::set_uniform"); -} - -void AnimatedObject::setup_render(Renderer &renderer, const Tag &) const -{ - renderer.transform(matrix); - if(shdata) - renderer.add_shader_data(*shdata); -} - - -AnimatedObject::Loader::Loader(AnimatedObject &o): - DataFile::DerivedObjectLoader(o) -{ - // Deprecated; Use the transform statement defined in ObjectInstance instead - 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 -} // namespace Msp