7 #include <assetloading/ScenePart.h>
8 #include <sim/tools/NonVoidStepLoop.h>
27 friend class boost::serialization::access;
34 template <
typename Archive>
35 void serialize(Archive &ar,
const unsigned int version){
36 boost::serialization::split_member(ar, *
this, version);
43 template <
typename Archive>
44 void save(Archive &ar,
const unsigned int version)
const{
45 boost::serialization::void_cast_register<DynObject, ScenePart>();
46 ar &boost::serialization::base_object<ScenePart>(*
this);
54 template <
typename Archive>
55 void load(Archive &ar,
const unsigned int version) {
56 boost::serialization::void_cast_register<DynObject, ScenePart>();
57 ar &boost::serialization::base_object<ScenePart>(*
this);
89 stepLoop(1, [&] () -> bool{return doSimStep();})
97 stepLoop(1, [&] () -> bool{return doSimStep();})
105 stepLoop(1, [&] () -> bool{return doSimStep();})
106 {setPrimitives(primitives);}
114 DynObject(
string const id, vector<Primitive *>
const &primitives) :
115 stepLoop(1, [&] () -> bool{return doSimStep();})
118 setPrimitives(primitives);
134 virtual bool doStep();
160 inline void operator() () {doStep();}
172 size_t countVertices()
const;
187 arma::mat positionMatrixFromPrimitives()
const;
202 arma::mat positionMatrixFromPrimitives(
size_t const m)
const;
217 arma::mat normalMatrixFromPrimitives()
const;
232 arma::mat normalMatrixFromPrimitives(
size_t const m)
const;
245 void updatePrimitivesPositionFromMatrix(arma::mat
const &X);
259 void updatePrimitivesPositionFromMatrix(
275 void updatePrimitivesNormalFromMatrix(arma::mat
const &X);
289 void updatePrimitivesNormalFromMatrix(
size_t const m, arma::mat
const &X);
319 arma::mat matrixFromPrimitives(
320 std::function<arma::colvec(
Vertex const *)> get
336 arma::mat matrixFromPrimitives(
338 std::function<arma::colvec(
Vertex const *)> get
368 void matrixToPrimitives(
369 std::function<
void(
Vertex *, arma::colvec
const &)> set,
386 void matrixToPrimitives(
388 std::function<
void(
Vertex *, arma::colvec
const &)> set,
Dynamic object base implementation.
Definition: DynObject.h:23
void load(Archive &ar, const unsigned int version)
Load a serialized dynamic object from a stream of bytes.
Definition: DynObject.h:55
void setStepInterval(int const stepInterval)
Set the step interval for the dynamic object.
Definition: DynObject.h:415
int getStepInterval() const
Obtain the current step interval for the dynamic object.
Definition: DynObject.h:406
DynObject()
Dynamic object default constructor.
Definition: DynObject.h:79
DynObject(string const id, vector< Primitive * > const &primitives)
Dynamic object constructor with id and primitives as arguments.
Definition: DynObject.h:114
DynObject(vector< Primitive * > const &primitives)
Dynamic object constructor with primitives as argument.
Definition: DynObject.h:104
DynObject(string const id)
Dynamic object constructor with id as argument.
Definition: DynObject.h:96
DynObject(ScenePart const &sp, bool const shallowPrimitives=false)
Build the dynamic object from given scene part.
Definition: DynObject.h:87
void save(Archive &ar, const unsigned int version) const
Save a serialized dynamic object to a stream of bytes.
Definition: DynObject.h:44
NonVoidStepLoop< bool > stepLoop
The object to handle the execution of the dynamic object logic between specified simulation steps.
Definition: DynObject.h:71
ObjectType getType() const override
Definition: DynObject.h:398
virtual bool doSimStep()=0
Any dynamic object concrete implementation must override this method providing dynamic behavior to th...
void serialize(Archive &ar, const unsigned int version)
Serialize a dynamic object to a stream of bytes.
Definition: DynObject.h:35
Class representing a scene part.
Definition: ScenePart.h:20
ObjectType
Specify the type of scene part / object. By default, the ScenePart is a static object.
Definition: ScenePart.h:53
virtual int getStepInterval() const
Obtain the step interval.
Definition: StepLoop.h:108
virtual void setStepInterval(int const stepInterval)
Set the step interval.
Definition: StepLoop.h:114
Class representing a vertex.
Definition: Vertex.h:14