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 bool | allowConnection() const override<br>A condition for starting and receiving a link connection. |
virtual bool | allowDrawing() override<br>Decide whether the object should be drawn (when outside the window for example) |
bool | canPlug(Pin * other) const override |
virtual void | content(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. |
bool | drawData(DIWNE::DrawInfo & context) |
bool | drawDataEx(DIWNE::DrawInfo & context) |
void | drawLabel(DIWNE::DrawInfo & context, const std::string & label) |
DIWNE::PinIconDrawData | drawPin(bool left, float alpha) |
bool | ensureLinkSyncWithCore()<br>This method ensures the state of this pin is synchronized with the core state. |
int | getCoreIndex() const |
Core::Pin const & | getCorePin() const |
Core::EValueType | getType() const |
bool | isConnected() const |
virtual bool | isDisabled() const override<br>/// Whether the pin is disabled or not. When disabled it cannot be plugged in. |
int | maxLengthOfData() |
virtual void | onPlug(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 void | onReleased(bool justReleased, DIWNE::DrawInfo & context) override<br>Called when the object is not pressed. |
virtual void | onUnplug(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 bool | plugLink(DIWNE::Pin * otherPin, DIWNE::Link * link, bool logEvent =true) override<br>Connect this and some other pin together using an existing link. |
bool | preparePlug(Pin * otherPin, DIWNE::Link * link, bool hovering, DIWNE::DrawInfo & context) override |
void | renderPinDiwne(DIWNE::PinIconDrawData & data) const<br>Internal method to render pin icon based on previously generated pin icon draw data. |
virtual void | tooltipContent(DIWNE::DrawInfo & context) override<br>Content of the object's tooltip. |
Public Attributes
Name | |
---|---|
DIWNE::IconType | m_iconType |
PinStyle | m_pinStyle |
bool | m_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 void | afterDraw(DrawInfo & context) override<br>Called last during drawing. |
virtual bool | allowDragStart() const override<br>Determines whether a drag operation can start from this object. |
virtual bool | allowPopup() const override<br>Determines whether a popup can be raised over the object. |
virtual void | begin(DrawInfo & context) override<br>First method to be called during object drawing. |
bool | connectionChanged() const |
virtual void | end(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> <br>T * | getNode() |
Node * | getNode() |
const ImRect & | getPinRect() const |
virtual void | initialize(DrawInfo & context) override<br>First method to be called every frame. |
virtual bool | isDragAreaHovered() const<br>Condition determining when a new link can be created from the pin on drag. |
bool | isInput() const<br>Whether this is an input or output pin. |
bool | isLeft() const<br>Whether the pin is rendered on the left side of a node. |
bool | isPlugged() const |
void | makeInput()<br>Called to initialize an input pin or to switch to being one. |
void | makeOutput()<br>Called to initialize an output pin or to switch to being one. |
virtual void | onDestroy(bool logEvent) override<br>Gets called the moment the object is marked for deletion by destroy(). |
virtual void | onDrag(DrawInfo & context, bool dragStart, bool dragEnd) override<br>This method gets called when the object is being dragged. |
virtual bool | plug(Pin * otherPin, bool logEvent =true)<br>Create a new link between this pin and the other pin. |
template <typename T > <br>bool | plug(Pin * otherPin, T logEvent) =delete |
virtual void | processInteractions(DrawInfo & context) override<br>Method for reacting to user input after the object is fully drawn and its dimensions are known. |
bool | registerLink(Link * link)<br>Adds the link to the pin's list of links. |
virtual void | setConnectionPointDiwne(const ImVec2 & value)<br>Set the point to which connected links are attached. |
virtual void | translate(const ImVec2 & vec) override<br>Move the object's rect and any other associated positional data. |
virtual bool | unplug(bool logEvent =true, bool deleteLinks =true)<br>Unplug all links from this pin. |
bool | unregisterLink(Link * link)<br>Removes the link from the pin's list of links. |
virtual void | updateLayout(DrawInfo & context) override<br>Updates object's m_rect, m_displayRect and any other object size variables. |
Protected Functions inherited from DIWNE::Pin
Name | |
---|---|
void | drawPinBackground() |
virtual void | updateConnectionPoint()<br>Updates the connection point. |
Public Attributes inherited from DIWNE::Pin
Name | |
---|---|
bool | m_allowMultipleConnections <br>Only allow one link to be connected, set to false for input pins. |
bool | m_isInput <br>Whether this is an input or output pin,. |
bool | m_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) |
PinIconDrawData | m_pinIconData <br>Temporary data used while drawing the pin. |
Protected Attributes inherited from DIWNE::Pin
Name | |
---|---|
bool | m_connectionChanged <br>Flag indicating that the pin has been plugged or unplugged last time the pin was drawn. |
ImVec2 | m_connectionPoint <br>Point where a link connects to this pin. |
ImRect | m_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. |
ImRect | m_pinRect <br>Rect of the pin icon/socket. Links will connect to this. |
bool | m_previewPlugged <br>Style the pin as if it was plugged in. |
bool | m_previewPluggedInternal <br>Temp flag during drawing. |
Public Functions inherited from DIWNE::DiwneObject
Name | |
---|---|
DiwneObject(DIWNE::NodeEditor & diwne, std::string labelDiwne) | |
virtual | ~DiwneObject() |
virtual void | afterDraw(DrawInfo & context)<br>Called last during drawing. |
virtual bool | allowDragStart() const<br>Determines whether a drag operation can start from this object. |
virtual bool | allowHover() const<br>Determines whether the object can be hovered. |
virtual bool | allowInteraction() const<br>Decide whether the object should react to user input in general. |
virtual bool | allowPopup() const<br>Determines whether a popup can be raised over the object. |
virtual bool | allowPress(const DrawInfo & context) const<br>Determines whether the object can be pressed. |
virtual bool | allowSelectOnClick(const DrawInfo & context) const<br>Determines whether the object can be selected by clicking it (eg. |
template <typename T =DiwneObject> <br>T * | as()<br>Returns a raw pointer to itself casted to a type. |
virtual void | begin(DrawInfo & context) =0<br>First method to be called during object drawing. |
virtual void | destroy(bool logEvent =true)<br>Marks the object for lazy destruction/deallocation and removal from any containers (like the node editor). |
virtual void | draw(DrawMode drawMode =DrawMode_Interactive)<br>Generic draw method meant to be used by external code. |
virtual void | drawDiwne(DrawInfo & context, DrawMode drawMode =DrawMode_Interactive)<br>Internal draw method. |
DrawInfo | drawDiwneEx(DrawInfo & context, DrawMode drawMode =DrawMode_Interactive) |
virtual void | end(DrawInfo & context) =0<br>Called after content(). |
virtual void | finalize(DrawInfo & context)<br>The final method to be called, gets called every frame and doesn't do any drawing. |
ImRect | getDisplayRect() const<br>Object's bounds aligned to current viewport pixel boundaries. |
ID | getId() const |
DiwneObject * | getParentObject() const |
ImVec2 | getPosition() const<br>Returns the top left corner of the object's rect. |
virtual ImRect | getRect() const<br>Rectangle bounds of the object in DIWNE coordinates (editor canvas coordinates). |
bool | getSelectable() |
virtual bool | getSelected() const<br>Whether the object is selected or not. |
StyleOverride * | getStyleOverride() const |
virtual void | initialize(DrawInfo & context)<br>First method to be called every frame. |
bool | isAnyParentSelected() |
bool | isChildObject() const |
bool | isChildOfObject(DiwneObject * parent) |
bool | isDestroyed() const |
bool | isDragging(DrawInfo & context)<br>Is this object the source of an active dragging operation? |
bool | isFixed() const<br>Fixed objects are ones rendered at a position determined by some other object. |
bool | isRendered() const |
bool | isToBeBroughtToFront() |
virtual void | onDestroy(bool logEvent)<br>Gets called the moment the object is marked for deletion by destroy(). |
virtual void | onDrag(DrawInfo & context, bool dragStart, bool dragEnd)<br>This method gets called when the object is being dragged. |
virtual void | onHover(DrawInfo & context)<br>This method gets called when the object is hovered. |
virtual void | onPopup() |
virtual void | onPressed(bool justPressed, DrawInfo & context)<br>Called when the object is pressed, meaning a key is pressed over it. |
virtual void | onSelection(bool selected) |
void | openPopup()<br>Request to open the object's popup if possible. |
bool | operator!=(const DiwneObject & rhs) const |
bool | operator==(const DiwneObject & rhs) const |
virtual void | popupContent(DrawInfo & context)<br>Content of popup menu raised on this objec. |
virtual void | processInteractions(DrawInfo & context)<br>Method for reacting to user input after the object is fully drawn and its dimensions are known. |
void | setBringToFront(bool val)<br>Marks the object to be brought to front (be drawn first). |
void | setFixed(bool val) |
void | setForceDraw(bool val)<br>When true, makes the object automatically add the ForceDraw DrawMode flag. |
void | setParentObject(DiwneObject * parent) |
void | setPopupEnabled(bool val) |
void | setPosition(const ImVec2 & position)<br>Move the object's rect and any other associated positional data to the specified position. |
void | setRendered(bool val) |
void | setSelectable(bool selectable)<br>Whether the object can be selected. |
virtual bool | setSelected(bool selected)<br>Set the selection state of the object. |
void | setStyleOverride(StyleOverride * styleOverride)<br>Assign a StyleOverride object to this DiwneObject. |
void | setTooltip(const std::string & text) |
void | setTooltipEnabled(bool val) |
template <typename T =DiwneObject> <br>std::shared_ptr< T > | sharedPtr()<br>Returns a shared pointer to this object. |
void | showTooltip(const std::string & label, const ImColor && color, DrawInfo & context)<br>Immediately show a tooltip next to the mouse cursor with the specified text. |
void | showTooltip(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. |
void | stopDrag(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 void | translate(const ImVec2 & vec)<br>Move the object's rect and any other associated positional data. |
virtual void | updateLayout(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 void | afterDrawDiwne(DrawInfo & context)<br>Updates layout, processes interactions and then calls the user afterDraw() method. |
virtual void | beginDiwne(DrawInfo & context) |
virtual void | endDiwne(DrawInfo & context) |
virtual void | finalizeDiwne(DrawInfo & context) |
virtual void | initializeDiwne(DrawInfo & context) |
virtual bool | isDraggedDiwne()<br>Is the object being dragged? (usually by mouse or some key combo) |
virtual bool | isHoveredDiwne()<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 bool | isJustPressedDiwne()<br>Determine whether a key/s of interest was/were just pressed. |
virtual bool | isPressedDiwne()<br>Determine whether a key/s of interest is/are pressed down over the object. |
virtual bool | popupShouldBeOpenedDiwne() const<br>Determine whether a popup should be opened, that is, by default, that right mouse button was pressed and isn't dragging. |
virtual void | processDragDiwne(DrawInfo & context) |
virtual void | processHoverDiwne(DrawInfo & context)<br>Processes whether the object is currently hovered. |
virtual void | processInteractionsDiwne(DrawInfo & context) |
virtual void | processPopupAndTooltipDiwne(DrawInfo & context)<br>Processes whether a popup should be opened over this object. |
virtual void | processPressAndReleaseDiwne(DrawInfo & context)<br>Processes whether the object is currently pressed (held) and further if it was just pressed or released. |
virtual bool | processSelectDiwne(DrawInfo & context)<br>Processes any interactions related to whether the object should be selected. |
virtual void | setInitialPositionDiwne()<br>Internal helper for setting the object's initial position. |
void | setSize(const ImVec2 & size) |
void | updateRectFromImGuiItem() |
Public Attributes inherited from DIWNE::DiwneObject
Name | |
---|---|
NodeEditor & | diwne <br>Reference to the NodeEditor instance (also named 'editor' in some classes) |
bool | m_deletable <br>Whether the object can be destroyed by the user. |
bool | m_destroy <br>Indicates the object is to be deleted (and deallocated) |
ImRect | m_displayRect <br>Rectangle bounds aligned with the last viewport. |
bool | m_draggable <br>Whether dragging of the object is allowed by default. |
DrawMode | m_drawMode <br>Read-only flag thats updated on each drawDiwne(). |
bool | m_drawnThisFrame <br>Read only flag indicating whether the object has been drawn this frame. |
bool | m_fixed <br>Whether the object can be moved by user operations. |
bool | m_forceHoverDiwne <br>Special flag that can be used to enforce hover state, used by pin drag assist. |
bool | m_hoverable <br>Whether hovering is enabled by default. |
bool | m_hovered <br>Is the object hovered (usually by the mouse or whatever isHoveredDiwne() tracks) |
bool | m_hoverRoot <br>Whether hovering this object should prevent other objects from hovering. |
ID | m_idDiwne <br>Unique numeric identifier of the object. |
bool | m_isDragged <br>Is the object dragged? Returns false immediately on drag end (unlike isDragging()). |
bool | m_isPressed <br>Is the object pressed down (held)? Requirement for dragging. |
bool | m_justHidden <br>Read only flag indicating that this object was drawn last frame, but not this one. |
bool | m_justPressed <br>Read only flag indicating the object was pressed this frame (eg. |
bool | m_justReleased <br>Read only flag indicating the object was released this frame (eg. |
std::string | m_labelDiwne <br>Unique string identifier, consists of <some string>:<m_idDiwne>. |
ImRect | m_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 long | g_diwneIDCounter <br>Static unique ID generator, unique only for current application run. |
bool | m_bringToFront <br>Request the object's rendering order to be moved to the front above other objects. |
bool | m_forceDraw <br>Request the next draw of the object to have the ForceDraw DrawMode flag. |
bool | m_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. |
bool | m_openPopup <br>Request to open popup. |
bool | m_openTooltip <br>Request to open tooltip. |
DiwneObject * | m_parentObject <br>Sets the parent object of object, relevant in node container and hover hierarchy. |
bool | m_popupEnabled <br>Whether this object has popup enabled. |
std::string | m_popupLabelDiwne <br>ImGui popup identifier. |
bool | m_rendered <br>Whether the object should be drawn, this is a general flag that overrides behavior of the allowDrawing() method. |
bool | m_selectable <br>Should not be accessed directly. |
bool | m_selected <br>Should not be accessed directly. |
bool | m_tooltipEnabled <br>Whether this object has tooltip enabled. |
std::string | m_tooltipText |
Public Functions Documentation
function CorePin
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
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
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
bool canPlug(
Pin * other
) const override
bool canPlug(
Pin * other
) const override
function content
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.
function createLink
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
bool drawData(
DIWNE::DrawInfo & context
)
bool drawData(
DIWNE::DrawInfo & context
)
Return: Whether a new item was created
function drawDataEx
bool drawDataEx(
DIWNE::DrawInfo & context
)
bool drawDataEx(
DIWNE::DrawInfo & context
)
Return: Whether a new item was created
function drawLabel
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
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
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
int getCoreIndex() const
int getCoreIndex() const
function getCorePin
Core::Pin const & getCorePin() const
Core::Pin const & getCorePin() const
function getType
Core::EValueType getType() const
Core::EValueType getType() const
function isConnected
bool isConnected() const
bool isConnected() const
function isDisabled
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
int maxLengthOfData()
int maxLengthOfData()
See: CoreNode::maxLengthOfData()
function onPlug
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
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
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
function plugLink
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
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
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
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
DIWNE::IconType m_iconType = DIWNE::IconType::NoIcon;
DIWNE::IconType m_iconType = DIWNE::IconType::NoIcon;
variable m_pinStyle
PinStyle m_pinStyle {PinStyle::Square};
PinStyle m_pinStyle {PinStyle::Square};
variable m_showData
bool m_showData {true};
bool m_showData {true};
Protected Attributes Documentation
variable m_pin
Core::Pin const & m_pin;
Core::Pin const & m_pin;
Updated on 2025-05-31 at 12:55:30 +0000