Создание нового нода
Материал из CryWiki Russia
|
Создание нового нода
Статья описывает шаги по внедрению нового нода Flowgraph.
Базовый код
Рекомендуется реализовывать ноды, принадлежащие одинаковой группе в едином cpp файле. Обычно нет необходимости в заголовке, за исключением некоторых специальных нодов. Поместите cpp файл в файл проекта CryAction/Flow System Files/Nodes и в рамках структуры директории файловой системы в Code/CryEngine/CryAction/FlowSystem/Nodes.
В cpp файле добавьте класс используя следующий шаблон кода и замените «MyName» желаемым именем вашего ФГ [сокр. Флоуграф] нода. Замените «FlowNodeGroup» желаемым именем группы и создайте соответствующую подпапку в селекторе редактора нода, где этот тип нода будет располагаться:
#include "stdafx.h" #include "FlowBaseNode.h" class CFlowNode_MyName : public CFlowBaseNode { public: CFlowNode_MyName( SActivationInfo * pActInfo ) { }; virtual void GetConfiguration( SFlowNodeConfig& config ) { static const SInputPortConfig in_config[] = { {0} }; static const SOutputPortConfig out_config[] = { {0} }; config.sDescription = _HELP( "A description of this flow node" ); config.pInputPorts = in_config; config.pOutputPorts = out_config; config.nFlags = 0; } virtual void ProcessEvent( EFlowEvent event, SActivationInfo * pActInfo ) { switch (event) { }; } }; REGISTER_FLOW_NODE("FlowNodeGroup:MyName", CFlowNode_MyName);
Добавление портов Output
ФГ ноды имеют как input (т.е. входящие ) так и output (исходящие) порты. Output порт может быть добавлен за счет изменения GetConfiguration функции, как видно на следующем примере:
class CFlowNode_MyName : public CFlowBaseNode { public: // ... virtual void GetConfiguration( SFlowNodeConfig& config ) { static const SInputPortConfig in_config[] = { {0} }; static const SOutputPortConfig out_config[] = { OutputPortConfig<int>("alertness", _HELP("useful help text")), {0} }; config.sDescription = _HELP( "A description of this flow node" ); config.pInputPorts = in_config; config.pOutputPorts = out_config; config.nFlags = 0; } // ... };
OutputPortConfig является шаблонной вспомогательной функцией, которая полезна для заполнения маленькой структуры соответствующими данными. Могут быть определены разные типы, но в примере тип порта «int». Доступны следующие типы: SFlowSystemVoid, int, float, EntityId, Vec3, string, и bool. SFlowSystemVoid - это специальный тип, который представляет собой «no value» (нет значения). OutputPortConfig принимает три параметра: