Skip to content

DIWNE::BasicNodeWithPins

#include "DIWNE/Basic/BasicNodeWithPins.h"

Inherits from DIWNE::BasicNode, DIWNE::Node, DIWNE::DiwneObject, std::enable_shared_from_this< DiwneObject >

Public Functions

Name
BasicNodeWithPins(NodeEditor & diwne, std::string label)
virtual voidafterDraw(DrawInfo & context) override<br>Called last during drawing.
virtual boolallowPress(const DrawInfo & context) const override<br>Determines whether the object can be pressed.
virtual voidbegin(DrawInfo & context) override<br>First method to be called during object drawing.
virtual voiddrawInputPins(DrawInfo & context)
virtual voiddrawOutputPins(DrawInfo & context)
const std::vector< std::shared_ptr< Pin > > &getInputs() const<br>get vector of input pins
const std::vector< std::shared_ptr< Pin > > &getOutputs() const<br>get vector of output pins
virtual voidleftContent(DrawInfo & context) override
virtual voidonDestroy(bool logEvent) override<br>Gets called the moment the object is marked for deletion by destroy().
virtual voidrightContent(DrawInfo & context) override
virtual voidtranslate(const ImVec2 & vec) override<br>Move the object's rect and any other associated positional data.
voidunplugAll()

Protected Functions

Name
boolprocessPinDragAssist()<br>Inspects mouse position relative to all pins within the node and forces a pin hover operation on the nearest pin of the mouse is close enough, this allows pins to be (un)plugged more easily, not requiring the mouse to be directly over them.

Protected Attributes

Name
std::vector< std::shared_ptr< Pin > >m_inputs
std::vector< Pin * >m_leftPins
VStackm_outputPinsVstack
std::vector< std::shared_ptr< Pin > >m_outputs
std::vector< Pin * >m_rightPins

Additional inherited members

Public Functions inherited from DIWNE::BasicNode

Name
BasicNode(NodeEditor & editor, std::string label)
virtual voidbottomContent(DrawInfo & context)
virtual voidcenterContent(DrawInfo & context)
virtual voidcontent(DrawInfo & context) override<br>Called after begin() during drawing.
virtual voiddrawBody()
virtual voiddrawHeader(ImDrawFlags corners =ImDrawFlags_RoundCornersTop)
virtual voidend(DrawInfo & context) override<br>Called after content().
const std::string &getTopLabel() const
voidsetTopLabel(const std::string & str)
virtual voidtopContent(DrawInfo & context)
virtual voidupdateLayout(DrawInfo & context) override<br>Updates object's m_rect, m_displayRect and any other object size variables.

Public Attributes inherited from DIWNE::BasicNode

Name
DiwnePanelm_center
DiwnePanelm_left
DiwnePanelm_middle
DiwnePanelm_right
DiwnePanelm_top

Protected Attributes inherited from DIWNE::BasicNode

Name
boolm_bottomSpacing <br>Whether to add a gap between the node content and the end.
floatm_contentSpacing <br>Gap between left, center and right panels (-1 for default item spacing).
boolm_headerSpacing <br>Whether to add a gap between the node header and its content.
std::stringm_topLabel
floatm_topLabelWidth <br>Top label width in DIWNE coordinates.
floatm_topLabelWidthChange <br>Change of top label width since last frame, used to prevent layout flicker.

Public Functions inherited from DIWNE::Node

Name
Node(const Node & other) =delete
Node(NodeEditor & diwne, std::string labelDiwne ="DiwneNode")
virtual boolallowDrawing() override<br>Decide whether the object should be drawn (when outside the window for example)
virtual voidcontent(DrawInfo & context) override<br>Called after begin() during drawing.
virtual voiddrawSelectionIndicator(DrawInfo & context)
virtual voidend(DrawInfo & context) override<br>Called after content().
boolgetFlag(char index) const<br>Get the node bit flag value at index.
virtual voidonDrag(DrawInfo & context, bool dragStart, bool dragEnd) override<br>This method gets called when the object is being dragged.
virtual voidonHover(DrawInfo & context) override<br>This method gets called when the object is hovered.
virtual voidonSelection(bool selected) override
Node &operator=(const Node & other) =delete
voidsetFlag(char index, bool value)<br>Set the node bit flag value at index.
virtual voidupdateLayout(DrawInfo & context) override<br>Updates object's m_rect, m_displayRect and any other object size variables.
boolwillBeRemovedFromContainer(const DiwneObject * container)

Protected Functions inherited from DIWNE::Node

Name
virtual voidafterDrawDiwne(DrawInfo & context) override<br>Updates layout, processes interactions and then calls the user afterDraw() method.
virtual boolprocessSelectDiwne(DrawInfo & context) override<br>Processes any interactions related to whether the object should be selected.
virtual voidsetInitialPositionDiwne() override<br>Internal helper for setting the object's initial position.

Public Attributes inherited from DIWNE::Node

Name
boolm_forceDraw <br>Internal flag to force drawing of the node, used by pins (TODO: move to DiwneObject?)

Protected Attributes inherited from DIWNE::Node

Name
NodeFlagm_flag <br>The node flag bit field.

Public Functions inherited from DIWNE::DiwneObject

Name
DiwneObject(DIWNE::NodeEditor & diwne, std::string labelDiwne)
virtual~DiwneObject()
virtual boolallowDragStart() const<br>Determines whether a drag operation can start from this object.
virtual boolallowDrawing()<br>Decide whether the object should be drawn (when outside the window for example)
virtual boolallowHover() const<br>Determines whether the object can be hovered.
virtual boolallowInteraction() const<br>Decide whether the object should react to user input in general.
virtual boolallowPopup() const<br>Determines whether a popup can be raised over the object.
virtual boolallowSelectOnClick(const DrawInfo & context) const<br>Determines whether the object can be selected by clicking it (eg.
template <typename T =DiwneObject&gt; <br>T *as()<br>Returns a raw pointer to itself casted to a type.
virtual voidcontent(DrawInfo & context) =0<br>Called after begin() during drawing.
virtual voiddestroy(bool logEvent =true)<br>Marks the object for lazy destruction/deallocation and removal from any containers (like the node editor).
virtual voiddraw(DrawMode drawMode =DrawMode_Interactive)<br>Generic draw method meant to be used by external code.
virtual voiddrawDiwne(DrawInfo & context, DrawMode drawMode =DrawMode_Interactive)<br>Internal draw method.
DrawInfodrawDiwneEx(DrawInfo & context, DrawMode drawMode =DrawMode_Interactive)
virtual voidend(DrawInfo & context) =0<br>Called after content().
virtual voidfinalize(DrawInfo & context)<br>The final method to be called, gets called every frame and doesn't do any drawing.
ImRectgetDisplayRect() const<br>Object's bounds aligned to current viewport pixel boundaries.
IDgetId() const
DiwneObject *getParentObject() const
ImVec2getPosition() const<br>Returns the top left corner of the object's rect.
virtual ImRectgetRect() const<br>Rectangle bounds of the object in DIWNE coordinates (editor canvas coordinates).
boolgetSelectable()
virtual boolgetSelected() const<br>Whether the object is selected or not.
StyleOverride *getStyleOverride() const
virtual voidinitialize(DrawInfo & context)<br>First method to be called every frame.
boolisAnyParentSelected()
boolisChildObject() const
boolisChildOfObject(DiwneObject * parent)
boolisDestroyed() const
boolisDragging(DrawInfo & context)<br>Is this object the source of an active dragging operation?
boolisFixed() const<br>Fixed objects are ones rendered at a position determined by some other object.
boolisRendered() const
boolisToBeBroughtToFront()
virtual voidonDrag(DrawInfo & context, bool dragStart, bool dragEnd)<br>This method gets called when the object is being dragged.
virtual voidonHover(DrawInfo & context)<br>This method gets called when the object is hovered.
virtual voidonPopup()
virtual voidonPressed(bool justPressed, DrawInfo & context)<br>Called when the object is pressed, meaning a key is pressed over it.
virtual voidonReleased(bool justReleased, DrawInfo & context)<br>Called when the object is not pressed.
virtual voidonSelection(bool selected)
voidopenPopup()<br>Request to open the object's popup if possible.
booloperator!=(const DiwneObject & rhs) const
booloperator==(const DiwneObject & rhs) const
virtual voidpopupContent(DrawInfo & context)<br>Content of popup menu raised on this objec.
virtual voidprocessInteractions(DrawInfo & context)<br>Method for reacting to user input after the object is fully drawn and its dimensions are known.
voidsetBringToFront(bool val)<br>Marks the object to be brought to front (be drawn first).
voidsetFixed(bool val)
voidsetForceDraw(bool val)<br>When true, makes the object automatically add the ForceDraw DrawMode flag.
voidsetParentObject(DiwneObject * parent)
voidsetPopupEnabled(bool val)
voidsetPosition(const ImVec2 & position)<br>Move the object's rect and any other associated positional data to the specified position.
voidsetRendered(bool val)
voidsetSelectable(bool selectable)<br>Whether the object can be selected.
virtual boolsetSelected(bool selected)<br>Set the selection state of the object.
voidsetStyleOverride(StyleOverride * styleOverride)<br>Assign a StyleOverride object to this DiwneObject.
voidsetTooltip(const std::string & text)
voidsetTooltipEnabled(bool val)
template <typename T =DiwneObject&gt; <br>std::shared_ptr< T >sharedPtr()<br>Returns a shared pointer to this object.
voidshowTooltip(const std::string & label, const ImColor && color, DrawInfo & context)<br>Immediately show a tooltip next to the mouse cursor with the specified text.
voidshowTooltip(const std::string & label, const std::string & desc, const ImColor && color, DrawInfo & context, float wrapWidth =35.f)<br>Immediately show a tooltip next to the mouse cursor with the specified text.
voidstopDrag(DrawInfo & context)<br>End an active drag operation this object is a source of.
virtual Style &style() const<br>Get the style for this object.
virtual voidtooltipContent(DrawInfo & context)<br>Content of the object's tooltip.
virtual voidupdateLayout(DrawInfo & context) =0<br>Updates object's m_rect, m_displayRect and any other object size variables.

Protected Functions inherited from DIWNE::DiwneObject

Name
virtual voidafterDrawDiwne(DrawInfo & context)<br>Updates layout, processes interactions and then calls the user afterDraw() method.
virtual voidbeginDiwne(DrawInfo & context)
virtual voidendDiwne(DrawInfo & context)
virtual voidfinalizeDiwne(DrawInfo & context)
virtual voidinitializeDiwne(DrawInfo & context)
virtual boolisDraggedDiwne()<br>Is the object being dragged? (usually by mouse or some key combo)
virtual boolisHoveredDiwne()<br>Is the object being hovered? The default implementation mostly gets this information from ImGui::IsItemHovered() but the behavior can be changed or restricted.
virtual boolisJustPressedDiwne()<br>Determine whether a key/s of interest was/were just pressed.
virtual boolisPressedDiwne()<br>Determine whether a key/s of interest is/are pressed down over the object.
virtual boolpopupShouldBeOpenedDiwne() const<br>Determine whether a popup should be opened, that is, by default, that right mouse button was pressed and isn't dragging.
virtual voidprocessDragDiwne(DrawInfo & context)
virtual voidprocessHoverDiwne(DrawInfo & context)<br>Processes whether the object is currently hovered.
virtual voidprocessInteractionsDiwne(DrawInfo & context)
virtual voidprocessPopupAndTooltipDiwne(DrawInfo & context)<br>Processes whether a popup should be opened over this object.
virtual voidprocessPressAndReleaseDiwne(DrawInfo & context)<br>Processes whether the object is currently pressed (held) and further if it was just pressed or released.
virtual boolprocessSelectDiwne(DrawInfo & context)<br>Processes any interactions related to whether the object should be selected.
virtual voidsetInitialPositionDiwne()<br>Internal helper for setting the object's initial position.
voidsetSize(const ImVec2 & size)
voidupdateRectFromImGuiItem()

Public Attributes inherited from DIWNE::DiwneObject

Name
NodeEditor &diwne <br>Reference to the NodeEditor instance (also named 'editor' in some classes)
boolm_deletable <br>Whether the object can be destroyed by the user.
boolm_destroy <br>Indicates the object is to be deleted (and deallocated)
ImRectm_displayRect <br>Rectangle bounds aligned with the last viewport.
boolm_draggable <br>Whether dragging of the object is allowed by default.
DrawModem_drawMode <br>Read-only flag thats updated on each drawDiwne().
boolm_drawnThisFrame <br>Read only flag indicating whether the object has been drawn this frame.
boolm_fixed <br>Whether the object can be moved by user operations.
boolm_forceHoverDiwne <br>Special flag that can be used to enforce hover state, used by pin drag assist.
boolm_hoverable <br>Whether hovering is enabled by default.
boolm_hovered <br>Is the object hovered (usually by the mouse or whatever isHoveredDiwne() tracks)
boolm_hoverRoot <br>Whether hovering this object should prevent other objects from hovering.
IDm_idDiwne <br>Unique numeric identifier of the object.
boolm_isDragged <br>Is the object dragged? Returns false immediately on drag end (unlike isDragging()).
boolm_isPressed <br>Is the object pressed down (held)? Requirement for dragging.
boolm_justHidden <br>Read only flag indicating that this object was drawn last frame, but not this one.
boolm_justPressed <br>Read only flag indicating the object was pressed this frame (eg.
boolm_justReleased <br>Read only flag indicating the object was released this frame (eg.
std::stringm_labelDiwne <br>Unique string identifier, consists of <some string>:<m_idDiwne>.
ImRectm_rect <br>Rectangle bounds of the object in diwne coordinates.
StyleOverride *m_styleOverride <br>Style override to allow uniquely styled object types.

Protected Attributes inherited from DIWNE::DiwneObject

Name
unsigned long longg_diwneIDCounter <br>Static unique ID generator, unique only for current application run.
boolm_bringToFront <br>Request the object's rendering order to be moved to the front above other objects.
boolm_forceDraw <br>Request the next draw of the object to have the ForceDraw DrawMode flag.
boolm_internalHover <br>Temporary storage for an internal ImGui::IsItemHovered() check Can be set in the end() method to determine if object is hovered if applicable.
boolm_openPopup <br>Request to open popup.
boolm_openTooltip <br>Request to open tooltip.
DiwneObject *m_parentObject <br>Sets the parent object of object, relevant in node container and hover hierarchy.
boolm_popupEnabled <br>Whether this object has popup enabled.
std::stringm_popupLabelDiwne <br>ImGui popup identifier.
boolm_rendered <br>Whether the object should be drawn, this is a general flag that overrides behavior of the allowDrawing() method.
boolm_selectable <br>Should not be accessed directly.
boolm_selected <br>Should not be accessed directly.
boolm_tooltipEnabled <br>Whether this object has tooltip enabled.
std::stringm_tooltipText

Public Functions Documentation

function BasicNodeWithPins

cpp
BasicNodeWithPins(
    NodeEditor & diwne,
    std::string label
)
BasicNodeWithPins(
    NodeEditor & diwne,
    std::string label
)

function afterDraw

cpp
virtual void afterDraw(
    DrawInfo & context
) override
virtual void afterDraw(
    DrawInfo & context
) override

Called last during drawing.

Reimplements: DIWNE::DiwneObject::afterDraw

At this point the m_rect of the object should be calculated in the updateLayout() method and this method should be able to work with it. Because of that the drawing code within shouldn't affect the objects size anymore. Interactions are processed before this method and thus interaction related member variables can be used within.

function allowPress

cpp
virtual bool allowPress(
    const DrawInfo & context
) const override
virtual bool allowPress(
    const DrawInfo & context
) const override

Determines whether the object can be pressed.

See: isPressedDiwne(), allowHover(), DrawInfo::inputConsumed, InteractionState::dragging

Reimplements: DIWNE::DiwneObject::allowPress

By default this requires the object to be hovered, input not being consumed and nothing else being dragged.

function begin

cpp
virtual void begin(
    DrawInfo & context
) override
virtual void begin(
    DrawInfo & context
) override

First method to be called during object drawing.

Reimplements: DIWNE::BasicNode::begin

Can be used to initialize drawing code.

function drawInputPins

cpp
virtual void drawInputPins(
    DrawInfo & context
)
virtual void drawInputPins(
    DrawInfo & context
)

function drawOutputPins

cpp
virtual void drawOutputPins(
    DrawInfo & context
)
virtual void drawOutputPins(
    DrawInfo & context
)

function getInputs

cpp
inline const std::vector< std::shared_ptr< Pin > > & getInputs() const
inline const std::vector< std::shared_ptr< Pin > > & getInputs() const

get vector of input pins

Return: m_inputs

Note: Input pins don't always have to be on the left side of the node!

function getOutputs

cpp
inline const std::vector< std::shared_ptr< Pin > > & getOutputs() const
inline const std::vector< std::shared_ptr< Pin > > & getOutputs() const

get vector of output pins

Return: m_outputs

Note: Output pins don't always have to be on the right side of the node!

function leftContent

cpp
virtual void leftContent(
    DrawInfo & context
) override
virtual void leftContent(
    DrawInfo & context
) override

Reimplements: DIWNE::BasicNode::leftContent

function onDestroy

cpp
virtual void onDestroy(
    bool logEvent
) override
virtual void onDestroy(
    bool logEvent
) override

Gets called the moment the object is marked for deletion by destroy().

See: destroy()

Warning: It is possible that the onDestroy() callback is never called when destroy() wasn't properly called. DiwneObjects containing other DiwneObjects should always ensure to destroy their children in their onDestroy().

Reimplements: DIWNE::DiwneObject::onDestroy

It is called only once per object.

function rightContent

cpp
virtual void rightContent(
    DrawInfo & context
) override
virtual void rightContent(
    DrawInfo & context
) override

Reimplements: DIWNE::BasicNode::rightContent

function translate

cpp
virtual void translate(
    const ImVec2 & vec
) override
virtual void translate(
    const ImVec2 & vec
) override

Move the object's rect and any other associated positional data.

Reimplements: DIWNE::BasicNode::translate

function unplugAll

cpp
void unplugAll()
void unplugAll()

Protected Functions Documentation

function processPinDragAssist

cpp
bool processPinDragAssist()
bool processPinDragAssist()

Inspects mouse position relative to all pins within the node and forces a pin hover operation on the nearest pin of the mouse is close enough, this allows pins to be (un)plugged more easily, not requiring the mouse to be directly over them.

Return: Whether hover event was forced on one of the pins.

Protected Attributes Documentation

variable m_inputs

cpp
std::vector< std::shared_ptr< Pin > > m_inputs;
std::vector< std::shared_ptr< Pin > > m_inputs;

variable m_leftPins

cpp
std::vector< Pin * > m_leftPins;
std::vector< Pin * > m_leftPins;

variable m_outputPinsVstack

cpp
VStack m_outputPinsVstack {diwne, &m_right};
VStack m_outputPinsVstack {diwne, &m_right};

variable m_outputs

cpp
std::vector< std::shared_ptr< Pin > > m_outputs;
std::vector< std::shared_ptr< Pin > > m_outputs;

variable m_rightPins

cpp
std::vector< Pin * > m_rightPins;
std::vector< Pin * > m_rightPins;

Updated on 2025-05-31 at 12:55:31 +0000