reckfellENGINE

GraphElement

Базовый элемент интерфейса GraphEdit с координатами графа, выделением и запросами редактирования.

На этой странице
class GraphElementReckfellSharpНаследует Container

Добавляйте элемент непосредственным ребёнком GraphEdit. GraphElement — базовый контейнер интерфейса, а не исполняемая сущность игрового мира или готовая система визуального программирования. Хранение модели, выполнение графа, связи предметной области и undo/redo реализует приложение.

Позицию сохраняйте в PositionOffset — координатах графа до zoom/scroll. GraphEdit рассчитывает экранную локальную Position как PositionOffset × Zoom − ScrollOffset и управляет Scale. Не сохраняйте Position как координату модели и не умножайте PositionOffset на zoom заранее. PositionOffsetChanged приходит и при присваивании из кода; Dragged относится к завершению drag, а не каждому setter.

Selected меняется только при Selectable = true. Программное выделение испускает NodeSelected/NodeDeselected при переходе; повтор того же значения ничего не делает. Отключение Selectable снимает текущее выделение. Draggable запрещает пользовательское перемещение, но не setter PositionOffset. Это независимые флаги, не общий режим read-only.

Resizable включает обработку ручки, но сам GraphElement не применяет новый размер внутри своего обработчика. При штатном родителе GraphEdit подписывается на ResizeRequest и применяет размер с ограничениями/привязкой. Не добавляйте второй конкурирующий обработчик изменения Size без необходимости. ResizeEnd сообщает итоговый Size; сохраняйте итог после ограничений, а не только запрошенный newSize.

Базовый контейнер раскладывает подходящих дочерних Control в один прямоугольник: несколько прямых детей могут перекрыться. Добавьте один VBoxContainer/HBoxContainer для своей формы. Для портов и строк используйте специализированный GraphNode. ScalingMenus управляет масштабированием дочерних локальных popup при zoom; это не масштаб всего графа.

DeleteRequest и RaiseRequest — запросы, не удаление вашей модели и не запись undo. Перед освобождением элемента обновите модель и связи. Для динамического графа используйте устойчивые ключи в модели; индексы детей не являются ID.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

GraphElementКонструктор
# GraphElement
C#
public GraphElement();

Создаёт базовый контейнер: PositionOffset = (0,0), Draggable/Selectable = true, Selected/Resizable/ScalingMenus = false.

Свойства6

DraggableСвойство
# Draggable
C#
public bool Draggable { get; set; }

Разрешает пользовательское перетаскивание в GraphEdit, true по умолчанию. Не блокирует программный PositionOffset и не снимает выделение.

PositionOffsetСвойство
# PositionOffset
C#
public Vector2 PositionOffset { get; set; }

Позиция в координатах графа до zoom/scroll. Изменение, включая setter из кода, испускает PositionOffsetChanged; равное значение пропускается.

ResizableСвойство
# Resizable
C#
public bool Resizable { get; set; }

Разрешает ручку изменения размера, false по умолчанию. Элемент испускает запрос; штатный GraphEdit применяет его с ограничениями. Для GraphFrame ручка доступна при выключенном AutoshrinkEnabled.

ScalingMenusСвойство
# ScalingMenus
C#
public bool ScalingMenus { get; set; }

Разрешает учитывать zoom GraphEdit при подготовке дочерних локальных popup, false по умолчанию. Не меняет PositionOffset или zoom самого графа.

SelectableСвойство
# Selectable
C#
public bool Selectable { get; set; }

Разрешает изменение Selected, true по умолчанию. Установка false сначала снимает выделение и может испустить NodeDeselected.

SelectedСвойство
# Selected
C#
public bool Selected { get; set; }

Текущее выделение. Setter игнорируется при Selectable = false; переход испускает NodeSelected/NodeDeselected даже из кода, повтор того же значения — нет.

Методы12

GetPositionOffsetVector2
# GetPositionOffset
C#
public Vector2 GetPositionOffset();

Позиция в координатах графа до zoom/scroll. Изменение, включая setter из кода, испускает PositionOffsetChanged; равное значение пропускается.

Возвращает Vector2

Позиция в координатах графа до zoom/scroll. Изменение, включая setter из кода, испускает PositionOffsetChanged; равное значение пропускается.

IsDraggablebool
# IsDraggable
C#
public bool IsDraggable();

Разрешает пользовательское перетаскивание в GraphEdit, true по умолчанию. Не блокирует программный PositionOffset и не снимает выделение.

Возвращает bool

Разрешает пользовательское перетаскивание в GraphEdit, true по умолчанию. Не блокирует программный PositionOffset и не снимает выделение.

IsResizablebool
# IsResizable
C#
public bool IsResizable();

Разрешает ручку изменения размера, false по умолчанию. Элемент испускает запрос; штатный GraphEdit применяет его с ограничениями. Для GraphFrame ручка доступна при выключенном AutoshrinkEnabled.

Возвращает bool

Разрешает ручку изменения размера, false по умолчанию. Элемент испускает запрос; штатный GraphEdit применяет его с ограничениями. Для GraphFrame ручка доступна при выключенном AutoshrinkEnabled.

IsScalingMenusbool
# IsScalingMenus
C#
public bool IsScalingMenus();

Разрешает учитывать zoom GraphEdit при подготовке дочерних локальных popup, false по умолчанию. Не меняет PositionOffset или zoom самого графа.

Возвращает bool

Разрешает учитывать zoom GraphEdit при подготовке дочерних локальных popup, false по умолчанию. Не меняет PositionOffset или zoom самого графа.

IsSelectablebool
# IsSelectable
C#
public bool IsSelectable();

Разрешает изменение Selected, true по умолчанию. Установка false сначала снимает выделение и может испустить NodeDeselected.

Возвращает bool

Разрешает изменение Selected, true по умолчанию. Установка false сначала снимает выделение и может испустить NodeDeselected.

IsSelectedbool
# IsSelected
C#
public bool IsSelected();

Текущее выделение. Setter игнорируется при Selectable = false; переход испускает NodeSelected/NodeDeselected даже из кода, повтор того же значения — нет.

Возвращает bool

Текущее выделение. Setter игнорируется при Selectable = false; переход испускает NodeSelected/NodeDeselected даже из кода, повтор того же значения — нет.

SetDraggablevoid
# SetDraggable
C#
public void SetDraggable(bool draggable);

Разрешает пользовательское перетаскивание в GraphEdit, true по умолчанию. Не блокирует программный PositionOffset и не снимает выделение.

Параметры
ИмяТипПо умолчанию
draggablebool—
draggable

Разрешает пользовательское перетаскивание в GraphEdit, true по умолчанию. Не блокирует программный PositionOffset и не снимает выделение.

SetPositionOffsetvoid
# SetPositionOffset
C#
public void SetPositionOffset(Vector2 offset);

Позиция в координатах графа до zoom/scroll. Изменение, включая setter из кода, испускает PositionOffsetChanged; равное значение пропускается.

Параметры
ИмяТипПо умолчанию
offsetVector2—
offset

Позиция в координатах графа до zoom/scroll, не экранная Position.

SetResizablevoid
# SetResizable
C#
public void SetResizable(bool resizable);

Разрешает ручку изменения размера, false по умолчанию. Элемент испускает запрос; штатный GraphEdit применяет его с ограничениями. Для GraphFrame ручка доступна при выключенном AutoshrinkEnabled.

Параметры
ИмяТипПо умолчанию
resizablebool—
resizable

Разрешает ручку изменения размера, false по умолчанию. Элемент испускает запрос; штатный GraphEdit применяет его с ограничениями. Для GraphFrame ручка доступна при выключенном AutoshrinkEnabled.

SetScalingMenusvoid
# SetScalingMenus
C#
public void SetScalingMenus(bool scalingMenus);

Разрешает учитывать zoom GraphEdit при подготовке дочерних локальных popup, false по умолчанию. Не меняет PositionOffset или zoom самого графа.

Параметры
ИмяТипПо умолчанию
scalingMenusbool—
scalingMenus

Разрешает учитывать zoom GraphEdit при подготовке дочерних локальных popup, false по умолчанию. Не меняет PositionOffset или zoom самого графа.

SetSelectablevoid
# SetSelectable
C#
public void SetSelectable(bool selectable);

Разрешает изменение Selected, true по умолчанию. Установка false сначала снимает выделение и может испустить NodeDeselected.

Параметры
ИмяТипПо умолчанию
selectablebool—
selectable

Разрешает изменение Selected, true по умолчанию. Установка false сначала снимает выделение и может испустить NodeDeselected.

SetSelectedvoid
# SetSelected
C#
public void SetSelected(bool selected);

Текущее выделение. Setter игнорируется при Selectable = false; переход испускает NodeSelected/NodeDeselected даже из кода, повтор того же значения — нет.

Параметры
ИмяТипПо умолчанию
selectedbool—
selected

Текущее выделение. Setter игнорируется при Selectable = false; переход испускает NodeSelected/NodeDeselected даже из кода, повтор того же значения — нет.

Сигналы и события8

DeleteRequestСобытие
# DeleteRequest
C#
public event Action DeleteRequest;

Объявленный запрос удаления, не автоматический Free. Штатный ui_graph_delete в GraphEdit испускает GraphEdit.DeleteNodesRequest со списком имён, а не этот сигнал каждого элемента. Обработайте модель и связи, затем освобождайте объекты.

DraggedСобытие
# Dragged
C#
public event GraphElement.DraggedEventHandler Dragged;

Завершение drag с начальным и конечным PositionOffset, удобно для одной записи undo. Обычный setter PositionOffset сигнал не испускает.

Параметры обработчика
ИмяТипПо умолчанию
fromVector2—
toVector2—
from

Позиция в координатах графа до zoom/scroll, не экранная Position.

to

Позиция в координатах графа до zoom/scroll, не экранная Position.

NodeDeselectedСобытие
# NodeDeselected
C#
public event Action NodeDeselected;

Выделение снято, в том числе при Selectable = false или setter Selected.

NodeSelectedСобытие
# NodeSelected
C#
public event Action NodeSelected;

Элемент перешёл в Selected = true; может прийти от setter из кода. Это не выполнение узла графа.

PositionOffsetChangedСобытие
# PositionOffsetChanged
C#
public event Action PositionOffsetChanged;

PositionOffset изменился, в том числе программно. Сигнал без аргументов: прочитайте свойство. Не означает завершённый drag.

RaiseRequestСобытие
# RaiseRequest
C#
public event Action RaiseRequest;

Запрос поднять элемент в порядке отображения. GraphEdit обрабатывает порядок; это не изменение ID или структуры вашей модели.

ResizeEndСобытие
# ResizeEnd
C#
public event GraphElement.ResizeEndEventHandler ResizeEnd;

Завершение изменения ручкой с фактическим текущим Size. Сохраняйте итог с учётом ограничений; не заменяет каждое промежуточное ResizeRequest.

Параметры обработчика
ИмяТипПо умолчанию
newSizeVector2—
newSize

Локальный размер элемента; ResizeRequest — запрос, ResizeEnd — текущий итоговый Size.

ResizeRequestСобытие
# ResizeRequest
C#
public event GraphElement.ResizeRequestEventHandler ResizeRequest;

Запрашиваемый размер в локальных единицах элемента. GraphEdit применяет запрос с привязкой/ограничениями, поэтому итоговый Size может отличаться. Сам сигнал не является завершением жеста.

Параметры обработчика
ИмяТипПо умолчанию
newSizeVector2—
newSize

Локальный размер элемента; ResizeRequest — запрос, ResizeEnd — текущий итоговый Size.

Свойства темы

Это ключи ресурсов Theme, а не свойства C# класса. Используйте методы GetTheme…() и AddTheme…Override() у Control с соответствующим типом значения.

Ключ и типОписание
resizer
Texture2D

Значок, используемый для изменения размера, виден, когда включен параметр GraphElement.Resizable.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.