void rotation(float, float, float, float);
void scaling_uniform(float);
void scaling(float, float, float);
+ void uniforms();
};
+ class UniformsLoader: public DataFile::ObjectLoader<KeyFrame>
+ {
+ public:
+ UniformsLoader(KeyFrame &);
+
+ private:
+ void uniform1f(const std::string &, float);
+ void uniform2f(const std::string &, float, float);
+ void uniform3f(const std::string &, float, float, float);
+ void uniform4f(const std::string &, float, float, float, float);
+ };
+
+ struct AnimatedUniform
+ {
+ unsigned size;
+ float values[4];
+
+ AnimatedUniform(unsigned, float, float = 0.0f, float = 0.0f, float = 0.0f);
+ };
+
+ typedef std::map<std::string, AnimatedUniform> UniformMap;
+
private:
Matrix matrix;
+ UniformMap uniforms;
RefPtr<const Pose> pose;
public:
void set_matrix(const Matrix &);
void set_pose(const Pose &);
const Matrix &get_matrix() const { return matrix; }
+ const UniformMap &get_uniforms() const { return uniforms; }
const Pose *get_pose() const { return pose.get(); }
};