@@ -102,31 +102,33 @@ void MJScalarJoint::writeJointStateMessage(uint64_t CurrentSimNanos)
102102{
103103 checkInitialized ();
104104
105+ auto & scene = body.getSpec ().getScene ();
106+
105107 ScalarJointStateMsgPayload stateOutMsgPayload;
106- auto state = body.getSpec ().getScene ().getQposState ()->getState ();
107- stateOutMsgPayload.state = state (this ->qposAdr .value ());
108- this ->stateOutMsg .write (&stateOutMsgPayload, body.getSpec ().getScene ().moduleID , 0 );
108+ stateOutMsgPayload.state = scene.qposGet (this ->qposAdr .value ());
109+ this ->stateOutMsg .write (&stateOutMsgPayload, scene.moduleID , 0 );
109110
110111 ScalarJointStateMsgPayload stateDotOutMsgPayload;
111- auto stateDot = body.getSpec ().getScene ().getQvelState ()->getState ();
112- stateDotOutMsgPayload.state = stateDot (this ->qvelAdr .value ());
113- this ->stateDotOutMsg .write (&stateDotOutMsgPayload, body.getSpec ().getScene ().moduleID , 0 );
112+ stateDotOutMsgPayload.state = scene.qvelGet (this ->qvelAdr .value ());
113+ this ->stateDotOutMsg .write (&stateDotOutMsgPayload, scene.moduleID , 0 );
114114}
115115
116116void MJScalarJoint::setPosition (double value)
117117{
118118 checkInitialized ();
119119
120- body.getSpec ().getScene ().getQposState ()->state (this ->qposAdr .value ()) = value;
121- body.getSpec ().getScene ().markKinematicsAsStale ();
120+ auto & scene = body.getSpec ().getScene ();
121+ scene.qposRef (this ->qposAdr .value ()) = value;
122+ scene.markKinematicsAsStale ();
122123}
123124
124125void MJScalarJoint::setVelocity (double value)
125126{
126127 checkInitialized ();
127128
128- body.getSpec ().getScene ().getQvelState ()->state (this ->qvelAdr .value ()) = value;
129- body.getSpec ().getScene ().markKinematicsAsStale ();
129+ auto & scene = body.getSpec ().getScene ();
130+ scene.qvelRef (this ->qvelAdr .value ()) = value;
131+ scene.markKinematicsAsStale ();
130132}
131133
132134MJSingleJointEquality
@@ -139,45 +141,54 @@ void MJFreeJoint::setPosition(const Eigen::Vector3d& position)
139141{
140142 checkInitialized ();
141143
142- auto & qposState = body.getSpec ().getScene (). getQposState ()-> state ;
144+ auto & scene = body.getSpec ().getScene ();
143145 auto i = this ->qposAdr .value ();
144- qposState.middleRows (i, 3 ) = position;
146+ scene.qposRef (i + 0 ) = position[0 ];
147+ scene.qposRef (i + 1 ) = position[1 ];
148+ scene.qposRef (i + 2 ) = position[2 ];
145149
146- body. getSpec (). getScene () .markKinematicsAsStale ();
150+ scene .markKinematicsAsStale ();
147151}
148152
149153void MJFreeJoint::setVelocity (const Eigen::Vector3d& velocity)
150154{
151155 checkInitialized ();
152156
153- auto & qvelState = body.getSpec ().getScene (). getQvelState ()-> state ;
157+ auto & scene = body.getSpec ().getScene ();
154158 auto i = this ->qvelAdr .value ();
155- qvelState.middleRows (i, 3 ) = velocity;
159+ scene.qvelRef (i + 0 ) = velocity[0 ];
160+ scene.qvelRef (i + 1 ) = velocity[1 ];
161+ scene.qvelRef (i + 2 ) = velocity[2 ];
156162
157- body. getSpec (). getScene () .markKinematicsAsStale ();
163+ scene .markKinematicsAsStale ();
158164}
159165
160166void MJFreeJoint::setAttitude (const Eigen::MRPd& attitude)
161167{
162168 checkInitialized ();
163169
164- auto & qposState = body.getSpec ().getScene (). getQposState ()-> state ;
170+ auto & scene = body.getSpec ().getScene ();
165171 auto i = this ->qposAdr .value ();
166172
167173 auto mat = attitude.toRotationMatrix ();
168174 auto quat = Eigen::Quaterniond (mat);
169175
170- qposState.middleRows (i + 3 , 4 ) = Eigen::Vector4d{quat.w (), quat.x (), quat.y (), quat.z ()};
171- body.getSpec ().getScene ().markKinematicsAsStale ();
176+ scene.qposRef (i + 3 ) = quat.w ();
177+ scene.qposRef (i + 4 ) = quat.x ();
178+ scene.qposRef (i + 5 ) = quat.y ();
179+ scene.qposRef (i + 6 ) = quat.z ();
180+ scene.markKinematicsAsStale ();
172181}
173182
174183void MJFreeJoint::setAttitudeRate (const Eigen::Vector3d& attitudeRate)
175184{
176185 checkInitialized ();
177186
178- auto & qvelState = body.getSpec ().getScene (). getQvelState ()-> state ;
187+ auto & scene = body.getSpec ().getScene ();
179188 auto i = this ->qvelAdr .value ();
180- qvelState.middleRows (i + 3 , 3 ) = attitudeRate;
189+ scene.qvelRef (i + 3 ) = attitudeRate[0 ];
190+ scene.qvelRef (i + 4 ) = attitudeRate[1 ];
191+ scene.qvelRef (i + 5 ) = attitudeRate[2 ];
181192
182- body. getSpec (). getScene () .markKinematicsAsStale ();
193+ scene .markKinematicsAsStale ();
183194}
0 commit comments