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 ниже. Нужно уменьшать количество строк кода.

⚠️ **GitHub.com Fallback** ⚠️