20#ifndef _MBSIMCONTROl_FRAME_CHASER_OBSERVER_H__
21#define _MBSIMCONTROl_FRAME_CHASER_OBSERVER_H__
23#include "mbsim/observers/observer.h"
25#include <mbsim/utils/boost_parameters.h>
26#include <mbsim/utils/openmbv_utils.h>
33namespace MBSimControl {
41 std::string saved_frame;
42 std::string saved_signalX, saved_signalY, saved_signalZ;
43 std::string saved_signalRotationX, saved_signalRotationY, saved_signalRotationZ;
45 std::shared_ptr<MBSim::OpenMBVFrame> ombvFrame;
46 std::shared_ptr<OpenMBV::Frame> openMBVFrame;
49 std::variant<std::monostate, double, Signal*> x;
50 std::variant<std::monostate, double, Signal*> y;
51 std::variant<std::monostate, double, Signal*> z;
52 std::variant<std::monostate, double, Signal*> rotX;
53 std::variant<std::monostate, double, Signal*> rotY;
54 std::variant<std::monostate, double, Signal*> rotZ;
60 void setConstantX(
double x_) { x=x_; }
61 void setConstantY(
double y_) { y=y_; }
62 void setConstantZ(
double z_) { z=z_; }
63 void setConstantRotationX(
double angle) { rotX=angle; }
64 void setConstantRotationY(
double angle) { rotY=angle; }
65 void setConstantRotationZ(
double angle) { rotZ=angle; }
66 void setSignalX(
Signal* x_) { x=x_; }
67 void setSignalY(
Signal* y_) { y=y_; }
68 void setSignalZ(
Signal* z_) { z=z_; }
69 void setSignalRotationX(
Signal* angle) { rotX=angle; }
70 void setSignalRotationY(
Signal* angle) { rotY=angle; }
71 void setSignalRotationZ(
Signal* angle) { rotZ=angle; }
72 void unsetX() { x=std::monostate(); }
73 void unsetY() { y=std::monostate(); }
74 void unsetZ() { z=std::monostate(); }
75 void unsetRotationX() { x=std::monostate(); }
76 void unsetRotationY() { y=std::monostate(); }
77 void unsetRotationZ() { z=std::monostate(); }
79 void init(
InitStage stage,
const MBSim::InitConfigSet &config)
override;
81 void initializeUsingXML(xercesc::DOMElement *element)
override;
83 BOOST_PARAMETER_MEMBER_FUNCTION( (
void), enableOpenMBV, MBSim::tag, (optional (
path,(
bool),
false)(size,(
double),1)(offset,(
double),1)
84 (transparency,(
double),0)(pointSize,(
double),0)(lineWidth,(
double),0))) {
85 ombvFrame = std::shared_ptr<MBSim::OpenMBVFrame>(
new MBSim::OpenMBVFrame(size, offset,
path, fmatvec::Vec3({-1,1,1}),
86 transparency, pointSize, lineWidth));
Definition: frame_chaser_observer.h:37
Signal.
Definition: signal_.h:38