iMSTK
Interactive Medical Simulation Toolkit
imstkObjectControllerGhost.h
1 /*
2 ** This file is part of the Interactive Medical Simulation Toolkit (iMSTK)
3 ** iMSTK is distributed under the Apache License, Version 2.0.
4 ** See accompanying NOTICE for details.
5 */
6 
7 #include "imstkComponent.h"
8 
9 #pragma once
10 
11 namespace imstk
12 {
13 class PbdObjectController;
14 class RigidObjectController;
15 class VisualModel;
16 
27 {
28 public:
29  ObjectControllerGhost(const std::string& name = "ObjectControllerGhost");
30 
31  void setController(std::shared_ptr<PbdObjectController> controller) { m_pbdController = controller; }
32  std::shared_ptr<PbdObjectController> getPbdController() const { return m_pbdController; }
33  void setController(std::shared_ptr<RigidObjectController> controller) { m_rbdController = controller; }
34  std::shared_ptr<RigidObjectController> getRbdController() const { return m_rbdController; }
35 
36  std::shared_ptr<VisualModel> getGhostModel() const { return m_ghostVisualModel; }
37 
43  void setUseForceFade(bool useForceFade) { m_useForceFade = useForceFade; }
44  bool getUseForceFade() const { return m_useForceFade; }
46 
47  void visualUpdate(const double& dt) override;
48 
49 protected:
50  void init() override;
51 
52 protected:
53  std::shared_ptr<PbdObjectController> m_pbdController = nullptr;
54  std::shared_ptr<RigidObjectController> m_rbdController = nullptr;
55  std::shared_ptr<VisualModel> m_ghostVisualModel = nullptr;
56  bool m_useForceFade = false;
57 };
58 } // namespace imstk
void setUseForceFade(bool useForceFade)
Get/Set whether to use force fade or not. Force fade sets opacity of ghost geometry according to forc...
Compound Geometry.
A Behaviour represents a single component system A template is used here for UpdateInfo to keep the C...
A behaviour that renders a second copy of the controlled object at a lower opacity in the physical po...
void init() override
Initialize the component, called at a later time after all component construction is complete...