<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.crymod.net/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.crymod.net/index.php?feed=atom&amp;target=Afrostalin&amp;title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F%3AContributions%2FAfrostalin</id>
		<title>CryWiki Russia - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.crymod.net/index.php?feed=atom&amp;target=Afrostalin&amp;title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F%3AContributions%2FAfrostalin"/>
		<link rel="alternate" type="text/html" href="http://wiki.crymod.net/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:Contributions/Afrostalin"/>
		<updated>2026-08-06T17:18:14Z</updated>
		<subtitle>Материал из CryWiki Russia</subtitle>
		<generator>MediaWiki 1.16.0</generator>

	<entry>
		<id>http://wiki.crymod.net/index.php/%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D1%81%D0%B2%D0%BE%D0%B5%D0%B3%D0%BE_flowgraph_%D0%BD%D0%BE%D0%B4%D0%B0</id>
		<title>Регистрация своего flowgraph нода</title>
		<link rel="alternate" type="text/html" href="http://wiki.crymod.net/index.php/%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D1%81%D0%B2%D0%BE%D0%B5%D0%B3%D0%BE_flowgraph_%D0%BD%D0%BE%D0%B4%D0%B0"/>
				<updated>2015-03-09T10:46:43Z</updated>
		
		<summary type="html">&lt;p&gt;Afrostalin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Введите информацию о вашем примере C++, в каждый&lt;br /&gt;
     раздел после знака равно. Информация будет&lt;br /&gt;
     переведена в форматируемый текст при сохранении.&lt;br /&gt;
&lt;br /&gt;
     Не все аргументы должны быть заполнены. Если у вас нет&lt;br /&gt;
     аргумента, оставьте его пустым!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Пример C++&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Название этого примера C++ --&amp;gt;&lt;br /&gt;
|название= Простой flowgraph нод на c++&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ваше имя --&amp;gt;&lt;br /&gt;
|автор= AfroStalin (chernecoff)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Дайте краткое описание того, что делает ваш код C++. --&amp;gt;&lt;br /&gt;
|описание= Данный код позволяет создать и зарегистрировать свой собственный flowgraph нод.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Введите ваш код C++ сюда! Можно описать ваш код и тут. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Для ввода кода C++ в специальное поле с подсветкой синтаксиса&lt;br /&gt;
     и номером строк, используйте следующий формат:&lt;br /&gt;
&lt;br /&gt;
     {{Код C++ | {аргументы} | [код] }}&lt;br /&gt;
&lt;br /&gt;
     где [код] — актуальный код C++ для отображения,&lt;br /&gt;
     и {аргументы} могут быть одним из следующего:&lt;br /&gt;
&lt;br /&gt;
     заголовок - название блока кода, например, имя файла. &lt;br /&gt;
     line - начальная строка (по умолчанию: 1). &lt;br /&gt;
&lt;br /&gt;
     Пример:&lt;br /&gt;
     {{Код C++ | заголовок=main.cpp | &amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
     int main(void)&lt;br /&gt;
     {&lt;br /&gt;
        return 0;&lt;br /&gt;
     }&lt;br /&gt;
     &amp;lt;/source&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|руководство= Создайте в своем проекте новый cpp файл (например &amp;quot;MyCryNode.cpp&amp;quot;), добавьте туда данный код, скомпилируйте проект. &lt;br /&gt;
&lt;br /&gt;
{{Код C++ | заголовок=SimpleCryNode.cpp | &amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
/*************************************************************************&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
History:&lt;br /&gt;
&lt;br /&gt;
- 08.02.2015   13:03 : Created by AfroStalin(chernecoff)&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
*************************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;StdAfx.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Nodes/G2FlowBaseNode.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// CFlowNode_Название_Вашего_Нода p.s. Можете любое имя использовать для класса, но лучше используйте что-то понятное&lt;br /&gt;
class CFlowNode_SimpleCryNode : public CFlowBaseNode&amp;lt;eNCT_Instanced&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	// Ввод&lt;br /&gt;
	enum INPUTS &lt;br /&gt;
	{&lt;br /&gt;
		EIP_Test = 0,&lt;br /&gt;
		EIP_String,&lt;br /&gt;
		EIP_Int,&lt;br /&gt;
		EIP_Vec3,&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// Вывод&lt;br /&gt;
	enum OUTPUTS&lt;br /&gt;
	{&lt;br /&gt;
		EOP_String = 0,&lt;br /&gt;
		EOP_Int,&lt;br /&gt;
		EOP_Vec3,&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
public:&lt;br /&gt;
	CFlowNode_SimpleCryNode( SActivationInfo * pActInfo )&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	~CFlowNode_SimpleCryNode()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	IFlowNodePtr Clone(SActivationInfo* pActInfo)&lt;br /&gt;
	{&lt;br /&gt;
		return new CFlowNode_SimpleCryNode(pActInfo);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	virtual void GetMemoryUsage(ICrySizer * s) const&lt;br /&gt;
	{&lt;br /&gt;
		s-&amp;gt;Add(*this);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void GetConfiguration( SFlowNodeConfig&amp;amp; config )&lt;br /&gt;
	{&lt;br /&gt;
		// Ввод&lt;br /&gt;
		static const SInputPortConfig in_ports[] = &lt;br /&gt;
		{&lt;br /&gt;
			// InputPortConfig&amp;lt;ТИП&amp;gt;(&amp;quot;НАЗВАНИЕ_ПОРТА&amp;quot;, _HELP(&amp;quot;ОПИСАНИЕ НОДА&amp;quot;))&lt;br /&gt;
			InputPortConfig_Void( &amp;quot;TestFunc&amp;quot;, _HELP(&amp;quot;Test function&amp;quot;)),&lt;br /&gt;
			InputPortConfig&amp;lt;string&amp;gt;(&amp;quot;String&amp;quot;, _HELP(&amp;quot;String input&amp;quot;)),&lt;br /&gt;
			InputPortConfig&amp;lt;int&amp;gt;(&amp;quot;Int&amp;quot;, _HELP(&amp;quot;Int input&amp;quot;)),&lt;br /&gt;
			InputPortConfig&amp;lt;Vec3&amp;gt;(&amp;quot;Vec3&amp;quot;, _HELP(&amp;quot;Vec3 input&amp;quot;)),&lt;br /&gt;
			{0}&lt;br /&gt;
		};&lt;br /&gt;
		// Вывод&lt;br /&gt;
		static const SOutputPortConfig out_ports[] = &lt;br /&gt;
		{&lt;br /&gt;
			// OutputPortConfig&amp;lt;ТИП&amp;gt;(&amp;quot;НАЗВАНИЕ_ПОРТА&amp;quot;, _HELP(&amp;quot;ОПИСАНИЕ НОДА&amp;quot;))&lt;br /&gt;
			OutputPortConfig&amp;lt;string&amp;gt;(&amp;quot;String&amp;quot;, _HELP(&amp;quot;String out&amp;quot;)),&lt;br /&gt;
			OutputPortConfig&amp;lt;int&amp;gt;(&amp;quot;Int&amp;quot;, _HELP(&amp;quot;Int out&amp;quot;)),&lt;br /&gt;
			OutputPortConfig&amp;lt;Vec3&amp;gt;(&amp;quot;Vec3&amp;quot;, _HELP(&amp;quot;Vec3 out&amp;quot;)),&lt;br /&gt;
			{0}&lt;br /&gt;
		};&lt;br /&gt;
		config.pInputPorts = in_ports;&lt;br /&gt;
		config.pOutputPorts = out_ports;&lt;br /&gt;
		config.sDescription = _HELP(&amp;quot;SimpleCryNode&amp;quot;); // Общее описание нода&lt;br /&gt;
		config.SetCategory(EFLN_APPROVED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void ProcessEvent( EFlowEvent event, SActivationInfo *pActInfo )&lt;br /&gt;
	{&lt;br /&gt;
		switch (event)&lt;br /&gt;
		{&lt;br /&gt;
		case eFE_Initialize:&lt;br /&gt;
			{&lt;br /&gt;
				m_actInfo = *pActInfo;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
		case eFE_Activate:&lt;br /&gt;
			{&lt;br /&gt;
				// Ecли активирован порт &amp;quot;Test&amp;quot; - получаем данные из входящих портов, вызываем функцию и выводим что то&lt;br /&gt;
				if(IsPortActive(pActInfo, EIP_Test))&lt;br /&gt;
				{&lt;br /&gt;
					// Получаем данные GetPortТип(pActInfo, номер порта входящих данных). Если у нас есть пустой вход без приема данных он не учитывается! &lt;br /&gt;
					const string&amp;amp; string_input = GetPortString(pActInfo, 1);&lt;br /&gt;
					const int&amp;amp; int_input = GetPortInt(pActInfo, 2);&lt;br /&gt;
					const Vec3&amp;amp; vec3_input = GetPortVec3(pActInfo,3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
					// Вызываем функцию, передаем полученные данные&lt;br /&gt;
					TestFunction(string_input,int_input,vec3_input);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Просто выводим полученные данные через выходные порты&lt;br /&gt;
	void TestFunction(string string_input,int int_input, Vec3 vec3_input)&lt;br /&gt;
	{&lt;br /&gt;
		// ActivateOutput(&amp;amp;m_actInfo, НАЗВАНИЕ_ПОРТА_ВЫВОДА, ДАННЫЕ);&lt;br /&gt;
		ActivateOutput(&amp;amp;m_actInfo, EOP_String, string_input);&lt;br /&gt;
		ActivateOutput(&amp;amp;m_actInfo, EOP_Int, int_input);&lt;br /&gt;
		ActivateOutput(&amp;amp;m_actInfo, EOP_Vec3, vec3_input);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
protected:&lt;br /&gt;
	SActivationInfo m_actInfo;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Регистрируем наш нод&lt;br /&gt;
//REGISTER_FLOW_NODE(&amp;quot;КАТЕГОРИЯ:НАЗВАНИЕ_НОДА&amp;quot;,	CFlowNode_НАЗВАНИЕ_ВАШЕГО_НОДА);&lt;br /&gt;
REGISTER_FLOW_NODE(&amp;quot;SimplesNodes:SimpleCryNode&amp;quot;,	CFlowNode_SimpleCryNode);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Afrostalin</name></author>	</entry>

	<entry>
		<id>http://wiki.crymod.net/index.php/%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D1%81%D0%B2%D0%BE%D0%B5%D0%B3%D0%BE_flowgraph_%D0%BD%D0%BE%D0%B4%D0%B0</id>
		<title>Регистрация своего flowgraph нода</title>
		<link rel="alternate" type="text/html" href="http://wiki.crymod.net/index.php/%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D1%81%D0%B2%D0%BE%D0%B5%D0%B3%D0%BE_flowgraph_%D0%BD%D0%BE%D0%B4%D0%B0"/>
				<updated>2015-03-09T08:47:32Z</updated>
		
		<summary type="html">&lt;p&gt;Afrostalin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Введите информацию о вашем примере C++, в каждый&lt;br /&gt;
     раздел после знака равно. Информация будет&lt;br /&gt;
     переведена в форматируемый текст при сохранении.&lt;br /&gt;
&lt;br /&gt;
     Не все аргументы должны быть заполнены. Если у вас нет&lt;br /&gt;
     аргумента, оставьте его пустым!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Пример C++&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Название этого примера C++ --&amp;gt;&lt;br /&gt;
|название= Выбор сущности мышкой&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ваше имя --&amp;gt;&lt;br /&gt;
|автор= AfroStalin (chernecoff)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Дайте краткое описание того, что делает ваш код C++. --&amp;gt;&lt;br /&gt;
|описание= Данный код позволяет создать и зарегистрировать свой собственный flowgraph нод.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Введите ваш код C++ сюда! Можно описать ваш код и тут. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Для ввода кода C++ в специальное поле с подсветкой синтаксиса&lt;br /&gt;
     и номером строк, используйте следующий формат:&lt;br /&gt;
&lt;br /&gt;
     {{Код C++ | {аргументы} | [код] }}&lt;br /&gt;
&lt;br /&gt;
     где [код] — актуальный код C++ для отображения,&lt;br /&gt;
     и {аргументы} могут быть одним из следующего:&lt;br /&gt;
&lt;br /&gt;
     заголовок - название блока кода, например, имя файла. &lt;br /&gt;
     line - начальная строка (по умолчанию: 1). &lt;br /&gt;
&lt;br /&gt;
     Пример:&lt;br /&gt;
     {{Код C++ | заголовок=main.cpp | &amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
     int main(void)&lt;br /&gt;
     {&lt;br /&gt;
        return 0;&lt;br /&gt;
     }&lt;br /&gt;
     &amp;lt;/source&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|руководство= Создайте в своем проекте новый cpp файл (например &amp;quot;MyCryNode.cpp&amp;quot;), добавьте туда данный код, скомпилируйте проект. &lt;br /&gt;
&lt;br /&gt;
{{Код C++ | заголовок=SimpleCryNode.cpp | &amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
/*************************************************************************&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
History:&lt;br /&gt;
&lt;br /&gt;
- 08.02.2015   13:03 : Created by AfroStalin(chernecoff)&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
*************************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;StdAfx.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Nodes/G2FlowBaseNode.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// CFlowNode_Название_Вашего_Нода p.s. Можете любое имя использовать для класса, но лучше используйте что-то понятное&lt;br /&gt;
class CFlowNode_SimpleCryNode : public CFlowBaseNode&amp;lt;eNCT_Instanced&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	// Ввод&lt;br /&gt;
	enum INPUTS &lt;br /&gt;
	{&lt;br /&gt;
		EIP_Test = 0,&lt;br /&gt;
		EIP_String,&lt;br /&gt;
		EIP_Int,&lt;br /&gt;
		EIP_Vec3,&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// Вывод&lt;br /&gt;
	enum OUTPUTS&lt;br /&gt;
	{&lt;br /&gt;
		EOP_String = 0,&lt;br /&gt;
		EOP_Int,&lt;br /&gt;
		EOP_Vec3,&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
public:&lt;br /&gt;
	CFlowNode_SimpleCryNode( SActivationInfo * pActInfo )&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	~CFlowNode_SimpleCryNode()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	IFlowNodePtr Clone(SActivationInfo* pActInfo)&lt;br /&gt;
	{&lt;br /&gt;
		return new CFlowNode_SimpleCryNode(pActInfo);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	virtual void GetMemoryUsage(ICrySizer * s) const&lt;br /&gt;
	{&lt;br /&gt;
		s-&amp;gt;Add(*this);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void GetConfiguration( SFlowNodeConfig&amp;amp; config )&lt;br /&gt;
	{&lt;br /&gt;
		// Ввод&lt;br /&gt;
		static const SInputPortConfig in_ports[] = &lt;br /&gt;
		{&lt;br /&gt;
			// InputPortConfig&amp;lt;ТИП&amp;gt;(&amp;quot;НАЗВАНИЕ_ПОРТА&amp;quot;, _HELP(&amp;quot;ОПИСАНИЕ НОДА&amp;quot;))&lt;br /&gt;
			InputPortConfig_Void( &amp;quot;TestFunc&amp;quot;, _HELP(&amp;quot;Test function&amp;quot;)),&lt;br /&gt;
			InputPortConfig&amp;lt;string&amp;gt;(&amp;quot;String&amp;quot;, _HELP(&amp;quot;String input&amp;quot;)),&lt;br /&gt;
			InputPortConfig&amp;lt;int&amp;gt;(&amp;quot;Int&amp;quot;, _HELP(&amp;quot;Int input&amp;quot;)),&lt;br /&gt;
			InputPortConfig&amp;lt;Vec3&amp;gt;(&amp;quot;Vec3&amp;quot;, _HELP(&amp;quot;Vec3 input&amp;quot;)),&lt;br /&gt;
			{0}&lt;br /&gt;
		};&lt;br /&gt;
		// Вывод&lt;br /&gt;
		static const SOutputPortConfig out_ports[] = &lt;br /&gt;
		{&lt;br /&gt;
			// OutputPortConfig&amp;lt;ТИП&amp;gt;(&amp;quot;НАЗВАНИЕ_ПОРТА&amp;quot;, _HELP(&amp;quot;ОПИСАНИЕ НОДА&amp;quot;))&lt;br /&gt;
			OutputPortConfig&amp;lt;string&amp;gt;(&amp;quot;String&amp;quot;, _HELP(&amp;quot;String out&amp;quot;)),&lt;br /&gt;
			OutputPortConfig&amp;lt;int&amp;gt;(&amp;quot;Int&amp;quot;, _HELP(&amp;quot;Int out&amp;quot;)),&lt;br /&gt;
			OutputPortConfig&amp;lt;Vec3&amp;gt;(&amp;quot;Vec3&amp;quot;, _HELP(&amp;quot;Vec3 out&amp;quot;)),&lt;br /&gt;
			{0}&lt;br /&gt;
		};&lt;br /&gt;
		config.pInputPorts = in_ports;&lt;br /&gt;
		config.pOutputPorts = out_ports;&lt;br /&gt;
		config.sDescription = _HELP(&amp;quot;SimpleCryNode&amp;quot;); // Общее описание нода&lt;br /&gt;
		config.SetCategory(EFLN_APPROVED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void ProcessEvent( EFlowEvent event, SActivationInfo *pActInfo )&lt;br /&gt;
	{&lt;br /&gt;
		switch (event)&lt;br /&gt;
		{&lt;br /&gt;
		case eFE_Initialize:&lt;br /&gt;
			{&lt;br /&gt;
				m_actInfo = *pActInfo;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
		case eFE_Activate:&lt;br /&gt;
			{&lt;br /&gt;
				// Ecли активирован порт &amp;quot;Test&amp;quot; - получаем данные из входящих портов, вызываем функцию и выводим что то&lt;br /&gt;
				if(IsPortActive(pActInfo, EIP_Test))&lt;br /&gt;
				{&lt;br /&gt;
					// Получаем данные GetPortТип(pActInfo, номер порта входящих данных). Если у нас есть пустой вход без приема данных он не учитывается! &lt;br /&gt;
					const string&amp;amp; string_input = GetPortString(pActInfo, 1);&lt;br /&gt;
					const int&amp;amp; int_input = GetPortInt(pActInfo, 2);&lt;br /&gt;
					const Vec3&amp;amp; vec3_input = GetPortVec3(pActInfo,3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
					// Вызываем функцию, передаем полученные данные&lt;br /&gt;
					TestFunction(string_input,int_input,vec3_input);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Просто выводим полученные данные через выходные порты&lt;br /&gt;
	void TestFunction(string string_input,int int_input, Vec3 vec3_input)&lt;br /&gt;
	{&lt;br /&gt;
		// ActivateOutput(&amp;amp;m_actInfo, НАЗВАНИЕ_ПОРТА_ВЫВОДА, ДАННЫЕ);&lt;br /&gt;
		ActivateOutput(&amp;amp;m_actInfo, EOP_String, string_input);&lt;br /&gt;
		ActivateOutput(&amp;amp;m_actInfo, EOP_Int, int_input);&lt;br /&gt;
		ActivateOutput(&amp;amp;m_actInfo, EOP_Vec3, vec3_input);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
protected:&lt;br /&gt;
	SActivationInfo m_actInfo;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Регистрируем наш нод&lt;br /&gt;
//REGISTER_FLOW_NODE(&amp;quot;КАТЕГОРИЯ:НАЗВАНИЕ_НОДА&amp;quot;,	CFlowNode_НАЗВАНИЕ_ВАШЕГО_НОДА);&lt;br /&gt;
REGISTER_FLOW_NODE(&amp;quot;SimplesNodes:SimpleCryNode&amp;quot;,	CFlowNode_SimpleCryNode);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Afrostalin</name></author>	</entry>

	<entry>
		<id>http://wiki.crymod.net/index.php/%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D1%81%D0%B2%D0%BE%D0%B5%D0%B3%D0%BE_flowgraph_%D0%BD%D0%BE%D0%B4%D0%B0</id>
		<title>Регистрация своего flowgraph нода</title>
		<link rel="alternate" type="text/html" href="http://wiki.crymod.net/index.php/%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D1%81%D0%B2%D0%BE%D0%B5%D0%B3%D0%BE_flowgraph_%D0%BD%D0%BE%D0%B4%D0%B0"/>
				<updated>2015-03-09T08:41:42Z</updated>
		
		<summary type="html">&lt;p&gt;Afrostalin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Введите информацию о вашем примере C++, в каждый&lt;br /&gt;
     раздел после знака равно. Информация будет&lt;br /&gt;
     переведена в форматируемый текст при сохранении.&lt;br /&gt;
&lt;br /&gt;
     Не все аргументы должны быть заполнены. Если у вас нет&lt;br /&gt;
     аргумента, оставьте его пустым!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Пример C++&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Название этого примера C++ --&amp;gt;&lt;br /&gt;
|название=Регистрация своего flowgraph node в c++&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ваше имя --&amp;gt;&lt;br /&gt;
|автор=AfroStalin(chernecoff)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Дайте краткое описание того, что делает ваш код C++. --&amp;gt;&lt;br /&gt;
|описание=Создание своего flowgraph node в с++&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Введите ваш код C++ сюда! --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Код C++ | заголовок=SimpleCryNode.cpp | &amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
/*************************************************************************&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
History:&lt;br /&gt;
&lt;br /&gt;
- 08.02.2015   13:03 : Created by AfroStalin(chernecoff)&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
*************************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;StdAfx.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Nodes/G2FlowBaseNode.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// CFlowNode_Название_Вашего_Нода p.s. Можете любое имя использовать для класса, но лучше используйте что-то понятное&lt;br /&gt;
class CFlowNode_SimpleCryNode : public CFlowBaseNode&amp;lt;eNCT_Instanced&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	// Ввод&lt;br /&gt;
	enum INPUTS &lt;br /&gt;
	{&lt;br /&gt;
		EIP_Test = 0,&lt;br /&gt;
		EIP_String,&lt;br /&gt;
		EIP_Int,&lt;br /&gt;
		EIP_Vec3,&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// Вывод&lt;br /&gt;
	enum OUTPUTS&lt;br /&gt;
	{&lt;br /&gt;
		EOP_String = 0,&lt;br /&gt;
		EOP_Int,&lt;br /&gt;
		EOP_Vec3,&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
public:&lt;br /&gt;
	CFlowNode_SimpleCryNode( SActivationInfo * pActInfo )&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	~CFlowNode_SimpleCryNode()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	IFlowNodePtr Clone(SActivationInfo* pActInfo)&lt;br /&gt;
	{&lt;br /&gt;
		return new CFlowNode_SimpleCryNode(pActInfo);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	virtual void GetMemoryUsage(ICrySizer * s) const&lt;br /&gt;
	{&lt;br /&gt;
		s-&amp;gt;Add(*this);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void GetConfiguration( SFlowNodeConfig&amp;amp; config )&lt;br /&gt;
	{&lt;br /&gt;
		// Ввод&lt;br /&gt;
		static const SInputPortConfig in_ports[] = &lt;br /&gt;
		{&lt;br /&gt;
			// InputPortConfig&amp;lt;ТИП&amp;gt;(&amp;quot;НАЗВАНИЕ_ПОРТА&amp;quot;, _HELP(&amp;quot;ОПИСАНИЕ НОДА&amp;quot;))&lt;br /&gt;
			InputPortConfig_Void( &amp;quot;TestFunc&amp;quot;, _HELP(&amp;quot;Test function&amp;quot;)),&lt;br /&gt;
			InputPortConfig&amp;lt;string&amp;gt;(&amp;quot;String&amp;quot;, _HELP(&amp;quot;String input&amp;quot;)),&lt;br /&gt;
			InputPortConfig&amp;lt;int&amp;gt;(&amp;quot;Int&amp;quot;, _HELP(&amp;quot;Int input&amp;quot;)),&lt;br /&gt;
			InputPortConfig&amp;lt;Vec3&amp;gt;(&amp;quot;Vec3&amp;quot;, _HELP(&amp;quot;Vec3 input&amp;quot;)),&lt;br /&gt;
			{0}&lt;br /&gt;
		};&lt;br /&gt;
		// Вывод&lt;br /&gt;
		static const SOutputPortConfig out_ports[] = &lt;br /&gt;
		{&lt;br /&gt;
			// OutputPortConfig&amp;lt;ТИП&amp;gt;(&amp;quot;НАЗВАНИЕ_ПОРТА&amp;quot;, _HELP(&amp;quot;ОПИСАНИЕ НОДА&amp;quot;))&lt;br /&gt;
			OutputPortConfig&amp;lt;string&amp;gt;(&amp;quot;String&amp;quot;, _HELP(&amp;quot;String out&amp;quot;)),&lt;br /&gt;
			OutputPortConfig&amp;lt;int&amp;gt;(&amp;quot;Int&amp;quot;, _HELP(&amp;quot;Int out&amp;quot;)),&lt;br /&gt;
			OutputPortConfig&amp;lt;Vec3&amp;gt;(&amp;quot;Vec3&amp;quot;, _HELP(&amp;quot;Vec3 out&amp;quot;)),&lt;br /&gt;
			{0}&lt;br /&gt;
		};&lt;br /&gt;
		config.pInputPorts = in_ports;&lt;br /&gt;
		config.pOutputPorts = out_ports;&lt;br /&gt;
		config.sDescription = _HELP(&amp;quot;SimpleCryNode&amp;quot;); // Общее описание нода&lt;br /&gt;
		config.SetCategory(EFLN_APPROVED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void ProcessEvent( EFlowEvent event, SActivationInfo *pActInfo )&lt;br /&gt;
	{&lt;br /&gt;
		switch (event)&lt;br /&gt;
		{&lt;br /&gt;
		case eFE_Initialize:&lt;br /&gt;
			{&lt;br /&gt;
				m_actInfo = *pActInfo;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
		case eFE_Activate:&lt;br /&gt;
			{&lt;br /&gt;
				// Ecли активирован порт &amp;quot;Test&amp;quot; - получаем данные из входящих портов, вызываем функцию и выводим что то&lt;br /&gt;
				if(IsPortActive(pActInfo, EIP_Test))&lt;br /&gt;
				{&lt;br /&gt;
					// Получаем данные GetPortТип(pActInfo, номер порта входящих данных). Если у нас есть пустой вход без приема данных он не учитывается! &lt;br /&gt;
					const string&amp;amp; string_input = GetPortString(pActInfo, 1);&lt;br /&gt;
					const int&amp;amp; int_input = GetPortInt(pActInfo, 2);&lt;br /&gt;
					const Vec3&amp;amp; vec3_input = GetPortVec3(pActInfo,3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
					// Вызываем функцию, передаем полученные данные&lt;br /&gt;
					TestFunction(string_input,int_input,vec3_input);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Просто выводим полученные данные через выходные порты&lt;br /&gt;
	void TestFunction(string string_input,int int_input, Vec3 vec3_input)&lt;br /&gt;
	{&lt;br /&gt;
		// ActivateOutput(&amp;amp;m_actInfo, НАЗВАНИЕ_ПОРТА_ВЫВОДА, ДАННЫЕ);&lt;br /&gt;
		ActivateOutput(&amp;amp;m_actInfo, EOP_String, string_input);&lt;br /&gt;
		ActivateOutput(&amp;amp;m_actInfo, EOP_Int, int_input);&lt;br /&gt;
		ActivateOutput(&amp;amp;m_actInfo, EOP_Vec3, vec3_input);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
protected:&lt;br /&gt;
	SActivationInfo m_actInfo;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Регистрируем наш нод&lt;br /&gt;
//REGISTER_FLOW_NODE(&amp;quot;КАТЕГОРИЯ:НАЗВАНИЕ_НОДА&amp;quot;,	CFlowNode_НАЗВАНИЕ_ВАШЕГО_НОДА);&lt;br /&gt;
REGISTER_FLOW_NODE(&amp;quot;SimplesNodes:SimpleCryNode&amp;quot;,	CFlowNode_SimpleCryNode);&lt;br /&gt;
     &amp;lt;/source&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|руководство=Создайте в вашем коде новый файл, например &amp;quot;MyCryNode.cpp&amp;quot;, вставьте туда данный код и скомпилируйте проект.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Категория:Шаблоны:Примеры кода]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Afrostalin</name></author>	</entry>

	<entry>
		<id>http://wiki.crymod.net/index.php/%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D1%81%D0%B2%D0%BE%D0%B5%D0%B3%D0%BE_flowgraph_%D0%BD%D0%BE%D0%B4%D0%B0</id>
		<title>Регистрация своего flowgraph нода</title>
		<link rel="alternate" type="text/html" href="http://wiki.crymod.net/index.php/%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D1%81%D0%B2%D0%BE%D0%B5%D0%B3%D0%BE_flowgraph_%D0%BD%D0%BE%D0%B4%D0%B0"/>
				<updated>2015-03-09T08:37:36Z</updated>
		
		<summary type="html">&lt;p&gt;Afrostalin: Новая страница: «&amp;lt;!-- Введите информацию о вашем примере C++, в каждый      раздел после знака равно. Информация ...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Введите информацию о вашем примере C++, в каждый&lt;br /&gt;
     раздел после знака равно. Информация будет&lt;br /&gt;
     переведена в форматируемый текст при сохранении.&lt;br /&gt;
&lt;br /&gt;
     Не все аргументы должны быть заполнены. Если у вас нет&lt;br /&gt;
     аргумента, оставьте его пустым!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Пример C++&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Название этого примера C++ --&amp;gt;&lt;br /&gt;
|название=Регистрация своего flowgraph node в c++&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Ваше имя --&amp;gt;&lt;br /&gt;
|автор=AfroStalin(chernecoff)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Дайте краткое описание того, что делает ваш код C++. --&amp;gt;&lt;br /&gt;
|описание=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Введите ваш код C++ сюда! --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Код C++ | заголовок=SimpleCryNode.cpp | &amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
/*************************************************************************&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
History:&lt;br /&gt;
&lt;br /&gt;
- 08.02.2015   13:03 : Created by AfroStalin(chernecoff)&lt;br /&gt;
-------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
*************************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;StdAfx.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Nodes/G2FlowBaseNode.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// CFlowNode_Название_Вашего_Нода p.s. Можете любое имя использовать для класса, но лучше используйте что-то понятное&lt;br /&gt;
class CFlowNode_SimpleCryNode : public CFlowBaseNode&amp;lt;eNCT_Instanced&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	// Ввод&lt;br /&gt;
	enum INPUTS &lt;br /&gt;
	{&lt;br /&gt;
		EIP_Test = 0,&lt;br /&gt;
		EIP_String,&lt;br /&gt;
		EIP_Int,&lt;br /&gt;
		EIP_Vec3,&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	// Вывод&lt;br /&gt;
	enum OUTPUTS&lt;br /&gt;
	{&lt;br /&gt;
		EOP_String = 0,&lt;br /&gt;
		EOP_Int,&lt;br /&gt;
		EOP_Vec3,&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
public:&lt;br /&gt;
	CFlowNode_SimpleCryNode( SActivationInfo * pActInfo )&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	~CFlowNode_SimpleCryNode()&lt;br /&gt;
	{&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	IFlowNodePtr Clone(SActivationInfo* pActInfo)&lt;br /&gt;
	{&lt;br /&gt;
		return new CFlowNode_SimpleCryNode(pActInfo);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	virtual void GetMemoryUsage(ICrySizer * s) const&lt;br /&gt;
	{&lt;br /&gt;
		s-&amp;gt;Add(*this);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void GetConfiguration( SFlowNodeConfig&amp;amp; config )&lt;br /&gt;
	{&lt;br /&gt;
		// Ввод&lt;br /&gt;
		static const SInputPortConfig in_ports[] = &lt;br /&gt;
		{&lt;br /&gt;
			// InputPortConfig&amp;lt;ТИП&amp;gt;(&amp;quot;НАЗВАНИЕ_ПОРТА&amp;quot;, _HELP(&amp;quot;ОПИСАНИЕ НОДА&amp;quot;))&lt;br /&gt;
			InputPortConfig_Void( &amp;quot;TestFunc&amp;quot;, _HELP(&amp;quot;Test function&amp;quot;)),&lt;br /&gt;
			InputPortConfig&amp;lt;string&amp;gt;(&amp;quot;String&amp;quot;, _HELP(&amp;quot;String input&amp;quot;)),&lt;br /&gt;
			InputPortConfig&amp;lt;int&amp;gt;(&amp;quot;Int&amp;quot;, _HELP(&amp;quot;Int input&amp;quot;)),&lt;br /&gt;
			InputPortConfig&amp;lt;Vec3&amp;gt;(&amp;quot;Vec3&amp;quot;, _HELP(&amp;quot;Vec3 input&amp;quot;)),&lt;br /&gt;
			{0}&lt;br /&gt;
		};&lt;br /&gt;
		// Вывод&lt;br /&gt;
		static const SOutputPortConfig out_ports[] = &lt;br /&gt;
		{&lt;br /&gt;
			// OutputPortConfig&amp;lt;ТИП&amp;gt;(&amp;quot;НАЗВАНИЕ_ПОРТА&amp;quot;, _HELP(&amp;quot;ОПИСАНИЕ НОДА&amp;quot;))&lt;br /&gt;
			OutputPortConfig&amp;lt;string&amp;gt;(&amp;quot;String&amp;quot;, _HELP(&amp;quot;String out&amp;quot;)),&lt;br /&gt;
			OutputPortConfig&amp;lt;int&amp;gt;(&amp;quot;Int&amp;quot;, _HELP(&amp;quot;Int out&amp;quot;)),&lt;br /&gt;
			OutputPortConfig&amp;lt;Vec3&amp;gt;(&amp;quot;Vec3&amp;quot;, _HELP(&amp;quot;Vec3 out&amp;quot;)),&lt;br /&gt;
			{0}&lt;br /&gt;
		};&lt;br /&gt;
		config.pInputPorts = in_ports;&lt;br /&gt;
		config.pOutputPorts = out_ports;&lt;br /&gt;
		config.sDescription = _HELP(&amp;quot;SimpleCryNode&amp;quot;); // Общее описание нода&lt;br /&gt;
		config.SetCategory(EFLN_APPROVED);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	void ProcessEvent( EFlowEvent event, SActivationInfo *pActInfo )&lt;br /&gt;
	{&lt;br /&gt;
		switch (event)&lt;br /&gt;
		{&lt;br /&gt;
		case eFE_Initialize:&lt;br /&gt;
			{&lt;br /&gt;
				m_actInfo = *pActInfo;&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
		case eFE_Activate:&lt;br /&gt;
			{&lt;br /&gt;
				// Ecли активирован порт &amp;quot;Test&amp;quot; - получаем данные из входящих портов, вызываем функцию и выводим что то&lt;br /&gt;
				if(IsPortActive(pActInfo, EIP_Test))&lt;br /&gt;
				{&lt;br /&gt;
					// Получаем данные GetPortТип(pActInfo, номер порта входящих данных). Если у нас есть пустой вход без приема данных он не учитывается! &lt;br /&gt;
					const string&amp;amp; string_input = GetPortString(pActInfo, 1);&lt;br /&gt;
					const int&amp;amp; int_input = GetPortInt(pActInfo, 2);&lt;br /&gt;
					const Vec3&amp;amp; vec3_input = GetPortVec3(pActInfo,3);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
					// Вызываем функцию, передаем полученные данные&lt;br /&gt;
					TestFunction(string_input,int_input,vec3_input);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Просто выводим полученные данные через выходные порты&lt;br /&gt;
	void TestFunction(string string_input,int int_input, Vec3 vec3_input)&lt;br /&gt;
	{&lt;br /&gt;
		// ActivateOutput(&amp;amp;m_actInfo, НАЗВАНИЕ_ПОРТА_ВЫВОДА, ДАННЫЕ);&lt;br /&gt;
		ActivateOutput(&amp;amp;m_actInfo, EOP_String, string_input);&lt;br /&gt;
		ActivateOutput(&amp;amp;m_actInfo, EOP_Int, int_input);&lt;br /&gt;
		ActivateOutput(&amp;amp;m_actInfo, EOP_Vec3, vec3_input);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
protected:&lt;br /&gt;
	SActivationInfo m_actInfo;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Регистрируем наш нод&lt;br /&gt;
//REGISTER_FLOW_NODE(&amp;quot;КАТЕГОРИЯ:НАЗВАНИЕ_НОДА&amp;quot;,	CFlowNode_НАЗВАНИЕ_ВАШЕГО_НОДА);&lt;br /&gt;
REGISTER_FLOW_NODE(&amp;quot;SimplesNodes:SimpleCryNode&amp;quot;,	CFlowNode_SimpleCryNode);&lt;br /&gt;
     &amp;lt;/source&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
|руководство=&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Категория:Шаблоны:Примеры кода]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Afrostalin</name></author>	</entry>

	</feed>