Регистрация своего flowgraph нода

Материал из CryWiki Russia

(Различия между версиями)
Перейти к: навигация, поиск
Строка 8: Строка 8:
{{Пример C++
{{Пример C++
 +
<!-- Название этого примера C++ -->
<!-- Название этого примера C++ -->
-
|название=Регистрация своего flowgraph node в c++
+
|название= Выбор сущности мышкой
 +
 
<!-- Ваше имя -->
<!-- Ваше имя -->
-
|автор=AfroStalin(chernecoff)
+
|автор= AfroStalin (chernecoff)
 +
 
<!-- Дайте краткое описание того, что делает ваш код C++. -->
<!-- Дайте краткое описание того, что делает ваш код C++. -->
-
|описание=Создание своего flowgraph node в с++
+
|описание= Данный код позволяет создать и зарегистрировать свой собственный flowgraph нод.
-
<!-- Введите ваш код C++ сюда! -->
+
 
 +
<!-- Введите ваш код C++ сюда! Можно описать ваш код и тут. -->
 +
<!-- Для ввода кода C++ в специальное поле с подсветкой синтаксиса
 +
    и номером строк, используйте следующий формат:
 +
 
 +
    {{Код C++ | {аргументы} | [код] }}
 +
 
 +
    где [код] — актуальный код C++ для отображения,
 +
    и {аргументы} могут быть одним из следующего:
 +
 
 +
    заголовок - название блока кода, например, имя файла.
 +
    line - начальная строка (по умолчанию: 1).
 +
 
 +
    Пример:
 +
    {{Код C++ | заголовок=main.cpp | <source lang="cpp">
 +
    int main(void)
 +
    {
 +
        return 0;
 +
    }
 +
    </source>}}
 +
 
 +
-->
 +
|руководство= Создайте в своем проекте новый cpp файл (например "MyCryNode.cpp"), добавьте туда данный код, скомпилируйте проект.
{{Код C++ | заголовок=SimpleCryNode.cpp | <source lang="cpp">
{{Код C++ | заголовок=SimpleCryNode.cpp | <source lang="cpp">
-
     
+
 
 +
 
/*************************************************************************
/*************************************************************************
-------------------------------------------------------------------------
-------------------------------------------------------------------------
Строка 144: Строка 170:
//REGISTER_FLOW_NODE("КАТЕГОРИЯ:НАЗВАНИЕ_НОДА", CFlowNode_НАЗВАНИЕ_ВАШЕГО_НОДА);
//REGISTER_FLOW_NODE("КАТЕГОРИЯ:НАЗВАНИЕ_НОДА", CFlowNode_НАЗВАНИЕ_ВАШЕГО_НОДА);
REGISTER_FLOW_NODE("SimplesNodes:SimpleCryNode", CFlowNode_SimpleCryNode);
REGISTER_FLOW_NODE("SimplesNodes:SimpleCryNode", CFlowNode_SimpleCryNode);
-
    </source>}}
 
-
-->
+
</source>}}
-
|руководство=Создайте в вашем коде новый файл, например "MyCryNode.cpp", вставьте туда данный код и скомпилируйте проект.
+
}}
}}
-
 
-
<noinclude>[[Категория:Шаблоны:Примеры кода]]</noinclude>
 

Версия 08:47, 9 марта 2015



Пошаговое руководств по примеру C++

Создайте в своем проекте новый cpp файл (например "MyCryNode.cpp"), добавьте туда данный код, скомпилируйте проект.

|

C++ (SimpleCryNode.cpp)

 
 
/*************************************************************************
-------------------------------------------------------------------------
History:
 
- 08.02.2015   13:03 : Created by AfroStalin(chernecoff)
-------------------------------------------------------------------------
 
*************************************************************************/
 
#include "StdAfx.h"
#include "Nodes/G2FlowBaseNode.h"
 
// CFlowNode_Название_Вашего_Нода p.s. Можете любое имя использовать для класса, но лучше используйте что-то понятное
class CFlowNode_SimpleCryNode : public CFlowBaseNode<eNCT_Instanced>
{
	// Ввод
	enum INPUTS 
	{
		EIP_Test = 0,
		EIP_String,
		EIP_Int,
		EIP_Vec3,
	};
 
	// Вывод
	enum OUTPUTS
	{
		EOP_String = 0,
		EOP_Int,
		EOP_Vec3,
	};
 
public:
	CFlowNode_SimpleCryNode( SActivationInfo * pActInfo )
	{
	}
 
	~CFlowNode_SimpleCryNode()
	{
	}
 
	IFlowNodePtr Clone(SActivationInfo* pActInfo)
	{
		return new CFlowNode_SimpleCryNode(pActInfo);
	}
 
	virtual void GetMemoryUsage(ICrySizer * s) const
	{
		s->Add(*this);
	}
 
	void GetConfiguration( SFlowNodeConfig& config )
	{
		// Ввод
		static const SInputPortConfig in_ports[] = 
		{
			// InputPortConfig<ТИП>("НАЗВАНИЕ_ПОРТА", _HELP("ОПИСАНИЕ НОДА"))
			InputPortConfig_Void( "TestFunc", _HELP("Test function")),
			InputPortConfig<string>("String", _HELP("String input")),
			InputPortConfig<int>("Int", _HELP("Int input")),
			InputPortConfig<Vec3>("Vec3", _HELP("Vec3 input")),
			{0}
		};
		// Вывод
		static const SOutputPortConfig out_ports[] = 
		{
			// OutputPortConfig<ТИП>("НАЗВАНИЕ_ПОРТА", _HELP("ОПИСАНИЕ НОДА"))
			OutputPortConfig<string>("String", _HELP("String out")),
			OutputPortConfig<int>("Int", _HELP("Int out")),
			OutputPortConfig<Vec3>("Vec3", _HELP("Vec3 out")),
			{0}
		};
		config.pInputPorts = in_ports;
		config.pOutputPorts = out_ports;
		config.sDescription = _HELP("SimpleCryNode"); // Общее описание нода
		config.SetCategory(EFLN_APPROVED);
	}
 
	void ProcessEvent( EFlowEvent event, SActivationInfo *pActInfo )
	{
		switch (event)
		{
		case eFE_Initialize:
			{
				m_actInfo = *pActInfo;
			}
			break;
		case eFE_Activate:
			{
				// Ecли активирован порт "Test" - получаем данные из входящих портов, вызываем функцию и выводим что то
				if(IsPortActive(pActInfo, EIP_Test))
				{
					// Получаем данные GetPortТип(pActInfo, номер порта входящих данных). Если у нас есть пустой вход без приема данных он не учитывается! 
					const string& string_input = GetPortString(pActInfo, 1);
					const int& int_input = GetPortInt(pActInfo, 2);
					const Vec3& vec3_input = GetPortVec3(pActInfo,3);
 
 
					// Вызываем функцию, передаем полученные данные
					TestFunction(string_input,int_input,vec3_input);
				}
			}
			break;
		}
	}
 
	// Просто выводим полученные данные через выходные порты
	void TestFunction(string string_input,int int_input, Vec3 vec3_input)
	{
		// ActivateOutput(&m_actInfo, НАЗВАНИЕ_ПОРТА_ВЫВОДА, ДАННЫЕ);
		ActivateOutput(&m_actInfo, EOP_String, string_input);
		ActivateOutput(&m_actInfo, EOP_Int, int_input);
		ActivateOutput(&m_actInfo, EOP_Vec3, vec3_input);
	}
 
protected:
	SActivationInfo m_actInfo;
};
 
// Регистрируем наш нод
//REGISTER_FLOW_NODE("КАТЕГОРИЯ:НАЗВАНИЕ_НОДА",	CFlowNode_НАЗВАНИЕ_ВАШЕГО_НОДА);
REGISTER_FLOW_NODE("SimplesNodes:SimpleCryNode",	CFlowNode_SimpleCryNode);

Об этом примере

Название

Выбор сущности мышкой

Создатель

AfroStalin (chernecoff)

Описание

Данный код позволяет создать и зарегистрировать свой собственный flowgraph нод.

» Другие примеры C++

» Вернуться к примерам кода