Handler example - RamilGauss/MMO-Framework GitHub Wiki
Пример как получить событие от TreeView и показать popup-меню.
class TTreeViewHandler
{
public:
void Handle(int eid, TTreeViewComponent* pTreeViewComponent)
{
auto popupEid = nsHelper::FindInChildByComponent<TPopupForTask_XXX_TagComponent>(eid);
// Позиционирование попап меню
auto posComponent = EntMng()->ViewComponent<TPositionComponent>(popupEid);
posComponent->pos = pTreeViewComponent->p->pSelectionNode->pos;
EntMng()->UpdateComponent(popupEid, posComponent);
// С чем работать
auto targetComponent = EntMng()->ViewComponent<TTargetComponent>(popupEid);
targetComponent->guid = pTreeViewComponent->p->pSelectionNode->id;
EntMng()->UpdateComponent(popupEid, targetComponent);
// Показать
auto visComponent = EntMng()->ViewComponent<TVisibilityComponent>(popupEid);
visComponent->value = true;
EntMng()->UpdateComponent(popupEid, visComponent);
}
};
Как бы это выглядело в Unity:
void UnityHandle(GameObject go)
{
var treeNode = go.GetComponent<TreeView>().selection;
var popup = GameObject.Instantiate(GetComponent<PopupPrefab>().prefab);
popup.target = treeNode;
popup.pos = treeNode.transform.pos;
popup.Show();
}
Вывод: порог вхождения пока в Unity ниже. Нужно уменьшать количество строк кода.