7 #include "imstkComponent.h" 17 class AnalyticalGeometry;
31 Burner(
const std::string& name =
"BurnerPbdObjectBehavior");
45 void setBurnerGeometry(std::shared_ptr<AnalyticalGeometry> geom)
47 CHECK(geom !=
nullptr);
59 void setOnTime(
const double onTime)
61 CHECK(onTime >= 0.0 && onTime <= 1.0) <<
"On time in the burning component must be between 0 and 1 \n";
73 void setWattage(
const double wattage)
75 CHECK(wattage >= 10.0 && wattage <= 200.0) <<
"Wattage is currently forced to be within 10 and 200 for the burning tool, set value within these bounds \n";
104 void visualUpdate(
const double& dt)
override;
106 bool getDidBurn()
const;
113 void handleBurnable(
int burnableId);
116 void applyBurn(
int burnableId,
int cellId);
121 void monopolarToolModel(
double& burnDmg,
double& burnVis,
double dt);
123 void initGraphEdges(std::shared_ptr<TaskNode> source, std::shared_ptr<TaskNode> sink)
override;
128 std::shared_ptr<TaskNode> m_burningHandleNode;
132 std::shared_ptr<PbdObject> object;
133 std::shared_ptr<CellPicker> picker;
147 bool m_didBurn =
false;
148 double m_burnTime = 0;
std::shared_ptr< AnalyticalGeometry > m_burnGeometry
Geometry doing the burning.
double m_q
Fitting parameter that modifies how quickly tissue gets burned.
double m_normWattage
Tool wattage / 100.
double getOnTime() const
Get/Set the ontime from [0,1] where 1 is on fully and any value less than 1 is the percent of on time...
void init() override
Initialize the component, called at a later time after all component construction is complete...
bool m_didBurnLastPhysics
Buffer for providing information to the user.
std::vector< Burnable > m_burnableObjects
Set of burnable objects, currently set by user during setup.
bool getState() const
Get state of burner (on/off ~ true/false)
std::shared_ptr< AnalyticalGeometry > getBurnerGeometry() const
Get/Set the geometry doing the burning, if it's not set the collision geoemtry of the burner object w...
A Behaviour represents a single component system A template is used here for UpdateInfo to keep the C...
void addObject(std::shared_ptr< PbdObject > obj)
Add burnable object to list of things that can be burned.
double m_onTime
On time for energy burning tool from [0,1].
bool m_burnOnce
Rate limit the burning to once per phyics cycle.
double m_wattage
Tool wattage.
std::shared_ptr< PbdObject > getBurnerObject() const
Get the object doing the burning.
std::shared_ptr< PbdObject > m_burningObj
PbdObject doing the burning.
bool m_onState
flag if tool is currently on or not
Defines the behaviour to allow a tool to burn a pbdObject. This is done by storing state on the mesh ...
double getWattage() const
Get/Set the wattage. This value is generally between 50-80 watts for L-hook monopolar devices...
void start()
Start/Stop the burn by changing the onState flag.