3737import us .ihmc .rdx .ui .behavior .sequence .RDXActionNode ;
3838import us .ihmc .rdx .ui .behavior .tools .RDXCRDTTools ;
3939import us .ihmc .rdx .ui .gizmo .RDXSelectablePose3DGizmo ;
40- import us .ihmc .rdx .ui .graphics .RDXFootstepGraphic ;
4140import us .ihmc .rdx .ui .graphics .RDXFootstepPlanGraphic ;
4241import us .ihmc .rdx .ui .widgets .ImGuiFootstepsWidget ;
4342import us .ihmc .rdx .vr .RDXVRContext ;
@@ -73,8 +72,7 @@ public class RDXFootstepPlanAction extends RDXActionNode<FootstepPlanActionState
7372 private final RDXMutableArrowModel goalArrowGraphic = new RDXMutableArrowModel ();
7473 private final RDXSelectablePose3DGizmo goalStancePointGizmo = new RDXSelectablePose3DGizmo ();
7574 private final RDXSelectablePose3DGizmo goalFocalPointGizmo = new RDXSelectablePose3DGizmo ();
76- private final SideDependentList <RDXFootstepGraphic > goalFeetGraphics = new SideDependentList <>();
77- private final SideDependentList <RDXSelectablePose3DGizmo > goalFeetGizmos = new SideDependentList <>();
75+ private final SideDependentList <RDXFootstepPlanActionGoalFootstep > goalFeet = new SideDependentList <>();
7876 private final RDX3DPanelTooltip tooltip ;
7977 private final ImGuiFootstepsWidget footstepsWidget = new ImGuiFootstepsWidget ();
8078 private final RDXFootstepPlanGraphic previewFootstepPlan ;
@@ -165,16 +163,7 @@ public RDXFootstepPlanAction(long id,
165163 goalFocalPointGizmo .getPoseGizmo ().getCenterSphereToTorusRatio ().set (0.5f );
166164
167165 for (RobotSide side : RobotSide .values )
168- {
169- RDXSelectablePose3DGizmo footGizmo = new RDXSelectablePose3DGizmo (ReferenceFrame .getWorldFrame (), state .getGoalFootstepToGoalTransform (side ));
170- footGizmo .create (baseUI .getPrimary3DPanel ());
171- footGizmo .getPoseGizmo ().getCenterSphereToTorusRatio ().set (0.3f );
172- goalFeetGizmos .put (side , footGizmo );
173-
174- RDXFootstepGraphic goalFootGraphic = new RDXFootstepGraphic (robotModel .getContactPointParameters ().getControllerFootGroundContactPoints (), side );
175- goalFootGraphic .create ();
176- goalFeetGraphics .put (side , goalFootGraphic );
177- }
166+ goalFeet .put (side , new RDXFootstepPlanActionGoalFootstep (baseUI , side , definition , state , robotModel ));
178167
179168 previewFootstepPlan = new RDXFootstepPlanGraphic (robotModel .getContactPointParameters ().getControllerFootGroundContactPoints ());
180169
@@ -240,14 +229,13 @@ public void update()
240229 goalFocalPointGizmo .getPoseGizmo ().setParentFrame (parentFrame );
241230
242231 for (RobotSide side : RobotSide .values )
243- goalFeetGizmos .get (side ).getPoseGizmo (). setParentFrame (state . getGoalFrame (). getReferenceFrame () );
232+ goalFeet .get (side ).setParentFrame ();
244233
245234 RDXCRDTTools .syncGizmoWithBidirectionalField (goalStancePointGizmo .getPoseGizmo (), definition .getGoalStancePoint (), definition );
246235 RDXCRDTTools .syncGizmoWithBidirectionalField (goalFocalPointGizmo .getPoseGizmo (), definition .getGoalFocalPoint (), definition );
247236
248237 for (RobotSide side : RobotSide .values )
249- if (goalFeetGizmos .get (side ).getPoseGizmo ().getGizmoModifiedByUser ().poll ())
250- definition .modify ();
238+ goalFeet .get (side ).handleGizmoModifiedByUser ();
251239
252240 if (definition .isModified ())
253241 for (RobotSide side : RobotSide .values )
@@ -272,10 +260,7 @@ public void update()
272260 });
273261
274262 for (RobotSide side : RobotSide .values )
275- {
276- goalFeetGizmos .get (side ).getPoseGizmo ().update ();
277- goalFeetGraphics .get (side ).setPose (goalFeetGizmos .get (side ).getPoseGizmo ().getPose ());
278- }
263+ goalFeet .get (side ).updatePoses ();
279264
280265 if (state .getIsNextForExecution ())
281266 {
@@ -344,9 +329,7 @@ public void calculate3DViewPick(ImGui3DViewInput input)
344329 goalStancePointGizmo .calculate3DViewPick (input );
345330 goalFocalPointGizmo .calculate3DViewPick (input );
346331 for (RobotSide side : RobotSide .values )
347- {
348- goalFeetGizmos .get (side ).calculate3DViewPick (input );
349- }
332+ goalFeet .get (side ).calculate3DViewPick (input );
350333 }
351334 }
352335 }
@@ -369,9 +352,7 @@ public void process3DViewInput(ImGui3DViewInput input)
369352 goalFocalPointGizmo .process3DViewInput (input , false );
370353 tooltip .setInput (input );
371354 for (RobotSide side : RobotSide .values )
372- {
373- goalFeetGizmos .get (side ).process3DViewInput (input , false );
374- }
355+ goalFeet .get (side ).process3DViewInput (input );
375356 }
376357 }
377358 }
@@ -433,7 +414,7 @@ protected void renderImGuiWidgetsInternal()
433414 ImGui .checkbox (labels .get ("Focal Point" ), goalFocalPointGizmo .getSelected ());
434415 for (RobotSide side : RobotSide .values )
435416 {
436- ImGui .checkbox (labels .get (side .getPascalCaseName () + " Foot to Goal" ), goalFeetGizmos .get (side ).getSelected ());
417+ ImGui .checkbox (labels .get (side .getPascalCaseName () + " Foot to Goal" ), goalFeet .get (side ). getGizmo ( ).getSelected ());
437418 if (side == RobotSide .LEFT )
438419 ImGui .sameLine ();
439420 }
@@ -466,7 +447,7 @@ public void deselectGizmos()
466447 goalStancePointGizmo .setSelected (false );
467448 goalFocalPointGizmo .setSelected (false );
468449 for (RobotSide side : RobotSide .values )
469- goalFeetGizmos .get (side ).setSelected (false );
450+ goalFeet .get (side ). getGizmo ( ).setSelected (false );
470451 editManuallyPlacedSteps .set (false );
471452 }
472453
@@ -486,7 +467,7 @@ public void getRenderables(Array<Renderable> renderables, Pool<Renderable> pool)
486467 {
487468 if (state .areFramesInWorld ())
488469 {
489- if (definition .getIsManuallyPlaced () && ( state . getIsNextForExecution () || getSelected ()) )
470+ if (definition .getIsManuallyPlaced ())
490471 {
491472 for (RDXFootstepPlanActionFootstep footstep : manuallyPlacedFootsteps )
492473 {
@@ -500,19 +481,10 @@ public void getRenderables(Array<Renderable> renderables, Pool<Renderable> pool)
500481 goalStancePointGizmo .getVirtualRenderables (renderables , pool );
501482 goalFocalPointGizmo .getVirtualRenderables (renderables , pool );
502483 for (RobotSide side : RobotSide .values )
503- {
504- goalFeetGizmos .get (side ).getVirtualRenderables (renderables , pool );
505- }
506- for (RobotSide side : RobotSide .values )
507- {
508- goalFeetGraphics .get (side ).setHighlighted (footstepsWidget .getIsHovered ().get (side ));
509- goalFeetGraphics .get (side ).getRenderables (renderables , pool );
510- }
484+ goalFeet .get (side ).getRenderables (renderables , pool , footstepsWidget .getIsHovered ().get (side ));
511485
512486 if (state .getIsNextForExecution ())
513- {
514487 previewFootstepPlan .getRenderables (renderables , pool );
515- }
516488 }
517489 }
518490 }
0 commit comments