#include <algorithm>
#include <msp/strings/format.h>
#include "animatedobject.h"
+#include "error.h"
#include "object.h"
#include "programdata.h"
#include "renderer.h"
delete shdata;
}
-void AnimatedObject::set_matrix(const Matrix &m)
-{
- matrix = m;
-}
-
void AnimatedObject::set_pose_matrix(unsigned link, const Matrix &m)
{
if(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);