Skip to content

Workspace::CorePin

#include "GUI/Workspace/Nodes/Basic/CorePins.h"

Inherits from DIWNE::Pin, DIWNE::DiwneObject, std::enable_shared_from_this< DiwneObject >

Public Functions

Name
CorePin(DIWNE::NodeEditor & diwne, Core::Pin const & pin, CoreNode * node, bool isInput, const std::string & label ="CorePin")
virtual boolallowConnection() const override<br>A condition for starting and receiving a link connection.
virtual boolallowDrawing() override<br>Decide whether the object should be drawn (when outside the window for example)
boolcanPlug(Pin * other) const override
virtual voidcontent(DIWNE::DrawInfo & context) override<br>Called after begin() during drawing.
virtual std::shared_ptr< DIWNE::Link >createLink() override<br>Method responsible for constructing a new link for this pin.
booldrawData(DIWNE::DrawInfo & context)
booldrawDataEx(DIWNE::DrawInfo & context)
voiddrawLabel(DIWNE::DrawInfo & context, const std::string & label)
DIWNE::PinIconDrawDatadrawPin(bool left, float alpha)
boolensureLinkSyncWithCore()<br>This method ensures the state of this pin is synchronized with the core state.
intgetCoreIndex() const
Core::Pin const &getCorePin() const
Core::EValueTypegetType() const
boolisConnected() const
virtual boolisDisabled() const override<br>/// Whether the pin is disabled or not. When disabled it cannot be plugged in.
intmaxLengthOfData()
virtual voidonPlug(DIWNE::Pin * otherPin, DIWNE::Link * link, bool isStartPin, bool logEvent =true) override<br>Called after the pin has been connected to another pin using a link.
virtual voidonReleased(bool justReleased, DIWNE::DrawInfo & context) override<br>Called when the object is not pressed.
virtual voidonUnplug(DIWNE::Pin * otherPin, DIWNE::Link * link, bool wasStartPin, bool logEvent =true) override<br>Called after the link connecting this pin to another is disconnected.
virtual boolplugLink(DIWNE::Pin * otherPin, DIWNE::Link * link, bool logEvent =true) override<br>Connect this and some other pin together using an existing link.
boolpreparePlug(Pin * otherPin, DIWNE::Link * link, bool hovering, DIWNE::DrawInfo & context) override
voidrenderPinDiwne(DIWNE::PinIconDrawData & data) const<br>Internal method to render pin icon based on previously generated pin icon draw data.
virtual voidtooltipContent(DIWNE::DrawInfo & context) override<br>Content of the object's tooltip.

Public Attributes

Name
DIWNE::IconTypem_iconType
PinStylem_pinStyle
boolm_showData

Protected Attributes

Name
Core::Pin const &m_pin

Additional inherited members

Public Functions inherited from DIWNE::Pin

Name
Pin(NodeEditor & diwne, Node * node, bool isInput, std::string labelDiwne ="DiwnePin")
virtual voidafterDraw(DrawInfo & context) override<br>Called last during drawing.
virtual boolallowDragStart() const override<br>Determines whether a drag operation can start from this object.
virtual boolallowPopup() const override<br>Determines whether a popup can be raised over the object.
virtual voidbegin(DrawInfo & context) override<br>First method to be called during object drawing.
boolconnectionChanged() const
virtual voidend(DrawInfo & context) override<br>Called after content().
virtual const ImVec2 &getConnectionPoint()
const ImRect &getDragRect() const
Link *getLink(size_t index =0)
template <typename T =Node&gt; <br>T *getNode()
Node *getNode()
const ImRect &getPinRect() const
virtual voidinitialize(DrawInfo & context) override<br>First method to be called every frame.
virtual boolisDragAreaHovered() const<br>Condition determining when a new link can be created from the pin on drag.
boolisInput() const<br>Whether this is an input or output pin.
boolisLeft() const<br>Whether the pin is rendered on the left side of a node.
boolisPlugged() const
voidmakeInput()<br>Called to initialize an input pin or to switch to being one.
voidmakeOutput()<br>Called to initialize an output pin or to switch to being one.
virtual voidonDestroy(bool logEvent) override<br>Gets called the moment the object is marked for deletion by destroy().
virtual voidonDrag(DrawInfo & context, bool dragStart, bool dragEnd) override<br>This method gets called when the object is being dragged.
virtual boolplug(Pin * otherPin, bool logEvent =true)<br>Create a new link between this pin and the other pin.
template <typename T &gt; <br>boolplug(Pin * otherPin, T logEvent) =delete
virtual voidprocessInteractions(DrawInfo & context) override<br>Method for reacting to user input after the object is fully drawn and its dimensions are known.
boolregisterLink(Link * link)<br>Adds the link to the pin's list of links.
virtual voidsetConnectionPointDiwne(const ImVec2 & value)<br>Set the point to which connected links are attached.
virtual voidtranslate(const ImVec2 & vec) override<br>Move the object's rect and any other associated positional data.
virtual boolunplug(bool logEvent =true, bool deleteLinks =true)<br>Unplug all links from this pin.
boolunregisterLink(Link * link)<br>Removes the link from the pin's list of links.
virtual voidupdateLayout(DrawInfo & context) override<br>Updates object's m_rect, m_displayRect and any other object size variables.

Protected Functions inherited from DIWNE::Pin

Name
voiddrawPinBackground()
virtual voidupdateConnectionPoint()<br>Updates the connection point.

Public Attributes inherited from DIWNE::Pin

Name
boolm_allowMultipleConnections <br>Only allow one link to be connected, set to false for input pins.
boolm_isInput <br>Whether this is an input or output pin,.
boolm_isLeft <br>Whether this pin is on the left or right side of a node Determined from m_isInput by default (inputs are on the right)
PinIconDrawDatam_pinIconData <br>Temporary data used while drawing the pin.

Protected Attributes inherited from DIWNE::Pin

Name
boolm_connectionChanged <br>Flag indicating that the pin has been plugged or unplugged last time the pin was drawn.
ImVec2m_connectionPoint <br>Point where a link connects to this pin.
ImRectm_dragRect <br>Rect of the area that can be dragged to start a new connection.
std::vector< Link * >m_links <br>Links connected to this pin.
Node *m_node <br>Node this pin belongs to.
ImRectm_pinRect <br>Rect of the pin icon/socket. Links will connect to this.
boolm_previewPlugged <br>Style the pin as if it was plugged in.
boolm_previewPluggedInternal <br>Temp flag during drawing.

Public Functions inherited from DIWNE::DiwneObject

Name
DiwneObject(DIWNE::NodeEditor & diwne, std::string labelDiwne)
virtual~DiwneObject()
virtual voidafterDraw(DrawInfo & context)<br>Called last during drawing.
virtual boolallowDragStart() const<br>Determines whether a drag operation can start from this object.
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 boolallowPress(const DrawInfo & context) const<br>Determines whether the object can be pressed.
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 voidbegin(DrawInfo & context) =0<br>First method to be called during object 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 voidonDestroy(bool logEvent)<br>Gets called the moment the object is marked for deletion by destroy().
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 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 voidtranslate(const ImVec2 & vec)<br>Move the object's rect and any other associated positional data.
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 CorePin

cpp
CorePin(
    DIWNE::NodeEditor & diwne,
    Core::Pin const & pin,
    CoreNode * node,
    bool isInput,
    const std::string & label ="CorePin"
)
CorePin(
    DIWNE::NodeEditor & diwne,
    Core::Pin const & pin,
    CoreNode * node,
    bool isInput,
    const std::string & label ="CorePin"
)

function allowConnection

cpp
virtual bool allowConnection() const override
virtual bool allowConnection() const override

A condition for starting and receiving a link connection.

Reimplements: DIWNE::Pin::allowConnection

Can be used to specify an area where the pin can be dragged from or a link dropped at.

function allowDrawing

cpp
virtual bool allowDrawing() override
virtual bool allowDrawing() override

Decide whether the object should be drawn (when outside the window for example)

Reimplements: DIWNE::DiwneObject::allowDrawing

function canPlug

cpp
bool canPlug(
    Pin * other
) const override
bool canPlug(
    Pin * other
) const override

function content

cpp
virtual void content(
    DIWNE::DrawInfo & context
) override
virtual void content(
    DIWNE::DrawInfo & context
) override

Called after begin() during drawing.

Reimplements: DIWNE::DiwneObject::content

Draws object content.

cpp
virtual std::shared_ptr< DIWNE::Link > createLink() override
virtual std::shared_ptr< DIWNE::Link > createLink() override

Method responsible for constructing a new link for this pin.

Return: The new Link instance, it is already registered with the current editor and has no connections yet.

Reimplements: DIWNE::Pin::createLink

By default a standard Link object is used, however this method can be overriden to allow specific pins to use specialized link subclasses.

function drawData

cpp
bool drawData(
    DIWNE::DrawInfo & context
)
bool drawData(
    DIWNE::DrawInfo & context
)

Return: Whether a new item was created

function drawDataEx

cpp
bool drawDataEx(
    DIWNE::DrawInfo & context
)
bool drawDataEx(
    DIWNE::DrawInfo & context
)

Return: Whether a new item was created

function drawLabel

cpp
void drawLabel(
    DIWNE::DrawInfo & context,
    const std::string & label
)
void drawLabel(
    DIWNE::DrawInfo & context,
    const std::string & label
)

Return: Whether a ne;w item was created

function drawPin

cpp
DIWNE::PinIconDrawData drawPin(
    bool left,
    float alpha
)
DIWNE::PinIconDrawData drawPin(
    bool left,
    float alpha
)

Return: Offset by which the pin is sticking out of the node.

function ensureLinkSyncWithCore

cpp
bool ensureLinkSyncWithCore()
bool ensureLinkSyncWithCore()

This method ensures the state of this pin is synchronized with the core state.

Return: Whether a change was made.

Currently ONLY deletes links that should no longer exist. As to create new links it would need to search for a GUI equivalent of a certain Core pin.

function getCoreIndex

cpp
int getCoreIndex() const
int getCoreIndex() const

function getCorePin

cpp
Core::Pin const & getCorePin() const
Core::Pin const & getCorePin() const

function getType

cpp
Core::EValueType getType() const
Core::EValueType getType() const

function isConnected

cpp
bool isConnected() const
bool isConnected() const

function isDisabled

cpp
virtual bool isDisabled() const override
virtual bool isDisabled() const override

/// Whether the pin is disabled or not. When disabled it cannot be plugged in.

Reimplements: DIWNE::Pin::isDisabled

function maxLengthOfData

cpp
int maxLengthOfData()
int maxLengthOfData()

See: CoreNode::maxLengthOfData()

function onPlug

cpp
virtual void onPlug(
    DIWNE::Pin * otherPin,
    DIWNE::Link * link,
    bool isStartPin,
    bool logEvent =true
) override
virtual void onPlug(
    DIWNE::Pin * otherPin,
    DIWNE::Link * link,
    bool isStartPin,
    bool logEvent =true
) override

Called after the pin has been connected to another pin using a link.

Parameters:

  • otherPin The pin on the other side of the link. Cannot be null.
  • link The link of the new connection with both ends plugged.
  • isStartPin Whether this pin is the start of the connection (otherwise it's the end).
  • logEvent The flag passed to the origin of the action.

Reimplements: DIWNE::Pin::onPlug

function onReleased

cpp
virtual void onReleased(
    bool justReleased,
    DIWNE::DrawInfo & context
) override
virtual void onReleased(
    bool justReleased,
    DIWNE::DrawInfo & context
) override

Called when the object is not pressed.

Parameters:

  • justPressed True on the frame the object is released (becomes no longer pressed)

See: onPressed()

Reimplements: DIWNE::DiwneObject::onReleased

Every frame either this or the onPressed() method is called.

function onUnplug

cpp
virtual void onUnplug(
    DIWNE::Pin * otherPin,
    DIWNE::Link * link,
    bool wasStartPin,
    bool logEvent =true
) override
virtual void onUnplug(
    DIWNE::Pin * otherPin,
    DIWNE::Link * link,
    bool wasStartPin,
    bool logEvent =true
) override

Called after the link connecting this pin to another is disconnected.

Parameters:

  • otherPin The pin on the other side of the link. Can be null.
  • link The link of the disconnected connection.
  • wasStartPin Whether this pin was the start of the connection (otherwise it was the end).
  • logEvent The flag passed to the origin of the action.

Reimplements: DIWNE::Pin::onUnplug

cpp
virtual bool plugLink(
    DIWNE::Pin * otherPin,
    DIWNE::Link * link,
    bool logEvent =true
) override
virtual bool plugLink(
    DIWNE::Pin * otherPin,
    DIWNE::Link * link,
    bool logEvent =true
) override

Connect this and some other pin together using an existing link.

Parameters:

  • otherPin The other pin on the other side of the link.
  • link
  • logEvent The boolean flag passed to onUnplug() on successful disconnect

Return: true

Reimplements: DIWNE::Pin::plugLink

The other pin is considered the start of the link, except when it is an input pin. Both pins cannot be input pins. The link will get unplugged from other pins if necessary.

function preparePlug

cpp
bool preparePlug(
    Pin * otherPin,
    DIWNE::Link * link,
    bool hovering,
    DIWNE::DrawInfo & context
) override
bool preparePlug(
    Pin * otherPin,
    DIWNE::Link * link,
    bool hovering,
    DIWNE::DrawInfo & context
) override

Same nodes.

function renderPinDiwne

cpp
void renderPinDiwne(
    DIWNE::PinIconDrawData & data
) const
void renderPinDiwne(
    DIWNE::PinIconDrawData & data
) const

Internal method to render pin icon based on previously generated pin icon draw data.

Ł This method is public as the rendering is sometimes deferred to the parent node.

function tooltipContent

cpp
virtual void tooltipContent(
    DIWNE::DrawInfo & context
) override
virtual void tooltipContent(
    DIWNE::DrawInfo & context
) override

Content of the object's tooltip.

Reimplements: DIWNE::DiwneObject::tooltipContent

Public Attributes Documentation

variable m_iconType

cpp
DIWNE::IconType m_iconType = DIWNE::IconType::NoIcon;
DIWNE::IconType m_iconType = DIWNE::IconType::NoIcon;

variable m_pinStyle

cpp
PinStyle m_pinStyle {PinStyle::Square};
PinStyle m_pinStyle {PinStyle::Square};

variable m_showData

cpp
bool m_showData {true};
bool m_showData {true};

Protected Attributes Documentation

variable m_pin

cpp
Core::Pin const  & m_pin;
Core::Pin const  & m_pin;

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