diff --git a/source/SkyXEngine.h b/source/SkyXEngine.h
index 611fd8e28d901d07e88cfd7c784a6b82cb2b0778..8b2c18aceae7c9b0c9e07a2010fe6af67d58bbe1 100644
--- a/source/SkyXEngine.h
+++ b/source/SkyXEngine.h
@@ -1,572 +1,571 @@
-
-/***********************************************************
-Copyright © Vitaliy Buturlin, Evgeny Danilovich, 2017, 2018
-See the license in LICENSE
-***********************************************************/
-
-/*! 
-\file
-Заголовочный файл движка SkyXEngine, подключает все необходимые библиотеки
-*/
-
-/*!
-\mainpage Документация SkyXEngine
-Это документация API (интерфейса программирования приложения) 3D движка real-time рендера SkyXEngine. \n
-Для того чтобы понять что такое SkyXEngine рекомендуем Вам ознакомится с \ref info_engine "кратким описанием движка". \n
-Также было бы крайне полезным узнать \ref general_info_libs "об организации библиотек". \n
-Дальнейшее ознакомление с движком SkyXEngine можно по <a href="./modules.html">документации, которая представлена модулями/подмодулями</a>.
-*/
-
-/*! \page info_engine Информация о движке SkyXEngine
-\tableofcontents
-\section ie_common Общее
-\b SkyXEngine - движок для создания 3D игр с real-time рендером, использует технологии DirectX 9. \n
-<small>Сразу уточнение, DirectX 9 мы используем в связи с личными предпочтениями, так как на наш взгляд эта технология является одной из лучших, хоть и считается устаревшей. 
-Все новое это забытое старое)) И как нам кажется ... нет ничего такого, чего нельзя было бы сделать на DirectX 9, но что можно сделать на другом GAPI, для создания игр любого жанра с real-time рендером.
-Но это только точка зрения нашей команды и она может быть ошибочная. Однако в планах есть расширение поддерживаемых GAPI.</small>
-
-<b>Формирование уровня</b> осуществляется посредством:
- - загрузки статических моделей формата dse, с их автоматическим разбиением на "куски рендера" как quad или octo дерево, возможны сохранение/загрузка в бинарный файл всей геометрии уровня
- - генерации растительности по маске, возможны 2 вида: трава (чем дальше тем меньше размер объекта) и деревья (с возможностью загрузки лодов), возможны возможны сохранение/загрузка в бинарный файл всей растительности уровня. Ручная расстановка расстительности поддерживается. Редактирование поддерживается.
-
-<b>Освещение</b> представлено 3 видами источников света (опционально поддерживается генерация теней от каждого исчтоника света):
- - глобальный (солнце), тени - PSSM
- - локальный - точечный, тени - Cube Shadow Mapping
- - локальный - направленный, тени - Shadow Mapping. 
-
-HDR эффект присутсвует.
-
-<b>Система материалов</b> pbr, то есть построенная на физичеки корретных, но апроксимированных вычислениях. \n
-Для формирования данных для освещения используется техника Deferred shading, что позволяет обрабатывать неограниченное количество источников света. \n
-Поддерживаются отражения 2 видов:
- - плоские (планарные)
- - объемные (кубические). 
-
-Поддерживается до 3 полупрозрачных поверхностей в кадре (пока только тестовый режим, в планах улучшения качества). \n
-Поддерживаемые эффекты поверхностей:
- - микрорельеф
- - микрорельеф по маске (до 4 текстур)
- - детальность
- - детальность по маске (до 4 текстур)
- - комбинированный микрорельеф с детальностью по маске (до 4 текстур)
- - альфа тест
- - просвечиваемость (для освещения тонких поверхностей, к примеру листвы и травы).
-
- Вся система материалов является открытой и практически любой функционал системы доступен для собственной интерпретации, посредством шейдеров. Имеется встроенный набор данных.\n
- Поддерживаются различные пользовательские данные которые интерпретируются только создающим материалы.
- Настрока физического материала доступна.
-
-<b>Постпроцесс</b> состоит из эффектов:
- - черно-белое изображение
- - эффект сепия
- - коррекция изображения
- - рендер солнца
- - bloom
- - lens flare, эффект восприятия яркого света линзами
- - depth of field, глубина резкости
- - linear fog, линейный туман
- - space screen ambient occulusion, глобальное освещение (точнее затенение) в пространстве экрана
- - motion blur, размытие в движении
- - nfaa
- - dlaa.
-
-<b>Декали</b> - следы от пуль, взрывов, трещины. Рисуются поверх основной геометрии.
-
-<b>Физика</b> - для симуляции физики используется физический движок Bullet.
-
-<b>Звуковой движок</b> поддерживает воспроизведение в пространстве и в фоне. Поддерживаемые форматы ogg, wav. Доступно создание инстансов без возможности управления.
-
-<b>Партиклы</b> с необходимым набором логики и с многочисленными и простыми настроками.
-
-<b>AI сетка</b> для навигации живых игровых объектов.
-
-<b>Игровой движок</b> - основа для построения игровой логики. Предоставляет набор игровых объектов и обеспечивает их взаимодействие.
-
-<b>Эффекты окружения</b> представлены фоновыми ambient звуками, погодой, определяемой для каждого уровня, с различными погодными эффектами.
-
-<b>Real-time конфигурация (cvars)</b> позволяет в режиме реального времени через консоль изменять разного рода установки движка
-
-<b>Редакторы:</b> 
- - \link level_editor SXLevelEditor - редактор уровней \endlink \n
- - \link material_editor SXMaterialEditor - редактор материалов \endlink \n
- - \link particles_editor SXParticlesEditor - редактор партиклов \endlink \n
-
-\section dogma_engine Идеология движка
-Основной технической идеей при разработке движка была идея о том что программист должен иметь контроль над объектами которыми он оперирует, НО этот контроль должен быть в меру. \n
-Основной идеей предназначения служила и служит идея о том чтобы предоставляемый инструментарий мог полностью удовлетворять потребностям разработчика, без необходимости со стороны разработчика вникать в детали реализации, но чтобы этот инструментарий имел прозрачную, открытую, свободную, бесплатную лицензию, и разработчик мог спокойно податься в стихию сотворения своего мира. \n
-Также главенствовал принцип разделения функционала на логические блоки (библиотеки) и после окончания разработки очередного блока он бы выносился в dll (с глаз долой). 
-Однако существенным дополнением являлась идея о том что библиотеки не должны ничего значть о равнозначных себе библиотеках в общей иерархии.
-К примеру \ref sxgeom "библиотека статической геометрии и растительности" ничего не знает о \ref sxmtrl "библиотеке материалов", и последняя ничего не знает о первой, однако первая использует функции из второй посредством графического ядра, а вторая осуществляется настройку материалов перед рендером первой.\n
-Немаловажным моментом являлся ориентир на гибкость. К примеру  \ref sxgcore_redefinition_func "переопредляемые функции" в графическом ядре, позволяют настроить на свой лад рендер. \n
-Ну и пожалуй самая главная идея заключается в полноценной возможности разработки игр с видом от первого лица, с настройкой/перестройкой "под себя" всего рендера. Также к приправе к этому мы руководствовались мыслью о том что скриптеры (коих не мало) могли бы вести разработку игры на своем (доступном им) уровне, со всеми возможностями движка.
-
-\section struct_engine Структура движка
-Весь движок состоит из \ref general_info_libs "подсистем", которые в некоторых случаях являются ядрами. \n
-Иерархия подсистем:\n
-\- \ref sxcore\n
-\-- \ref sxgcore\n
-\--- \ref sxgeom\n
-\--- \ref sxanim\n
-\--- \ref sxlight\n
-\--- \ref sxmtrl\n
-\--- \ref sxpp\n
-\- \ref sxinput\n
-Все библиотеки представлены файлами dll, что позволяет разделить функционал и реализацию. Также в большинстве случаев библиотеки могут быть вычленены из самого движка и могут использоваться автономно.\n
-В большинстве случаев весь функционал библиотек предоставляется интерфейсом функций, а идентификация объектов числовая, по типу #ID.
-Это позволяет не беспокоится о типах и о существовании объектов - об этом заботятся сами библиотеки.
-*/
-
-/*! \page std_doc Стандарт документирования
-\tableofcontents
-\section std_doc_common Общее
-Дабы создать удобочитаемые комментрии, которые легко бы трансформировались в документацию был создан данный стандарт документирования, следование которому является обязательным.
-Так как для документирования был выбран Doxygen, то все что касается документирования будет в контексте именно этой программы. \n
-Для более чектого структурирования  необходимо разделять весь код на логические звенья, которые могут быть представлены модулями/подмодулями и группами как в модулях так и вне их. 
-
-\section style_doc Стиль документирования
-QT стиль документирования (!) и QT_AUTOBRIEF - короткая документация до точки в любом комментарии, а после точки идет подробное документирование если надо.\n
-Возможные виды:
-<pre>
-//! документирование того что идет за этой строкой 
-//!< документирование того что предшествовало данному комментарию
-/ *! документирование того что идет за этой строкой * /
-/ *!< документирование того что предшествовало данному комментарию * /
-</pre>
-<b>Примечание:</b> здесь и далее / * и * / комментарий без пробелов!
-
-\section style_desc_file Описание файла (обязательно для каждого документируемого файла)
-<pre>
-/ *!
-\\file
-Описание файла
-\* /
-</pre>
-
-\section style_modules Модули/подмодули
-<pre>
-/ *! \\defgroup имя_модуля описание модуля
-\@{
-\* /
-... код модуля
-//!\@} имя_модуля
-</pre>
-В случае если модуль является подмодулем другого модуля то после описания модуля необходимо добавить:
-<pre>
- \\ingroup имя_модуля_которому_будет_принадлежать_данный_модуль
-</pre>
-Окончание модуля может быть любым удобным, но только окончание модуля должно включать в себя имя модуля для которого написан конец.
-
-\section style_group Группа (вложенные группы не поддерживаются)
-<pre>
-/ *! \\name название группы, оно также будет размещено в документации
-а здесь пишем описание к группе если надо
-\* /
-//! \@{
-... все кроме классов
-//! \@}
-</pre>
-
-\section style_ref Ссылки
-Для лучшей навигации необходимо использовать ссылки, которые могут указывать на структурные единицы (модули/подмодули, страницы, секции) так и на код.
-Пример ссылки на структурные единицы:
-<pre>
-Весь движок состоит из \\ref general_info_libs "подсистем".
-</pre>
-Или без указания имени ссылки:
-<pre>
-\\ref sxcore
-</pre>
-
-Пример ссылки на код:
-<pre>
-\#SCore_Create
-</pre>
-
-\section style_page Страницы
-<pre>
-/ *! \\page идентификатор_только_латиница Заголовок страницы
-\\tableofcontents
-Для того чтобы разделить на разделы можно использовать секции:
-\\section style_page Создание страниц
-\* /
-</pre>
-
-\section style_list Списки
-<pre>
- \- первый элемент
- \- второй элемент
-</pre>
-
-\section style_extra Дополнительно
-\\n - для новой строки \n
-Также можно использовать html теги. \n
-\\note - заметка  \n
-\\warning - предупреждение  \n
-\\todo - пометка о том что надо сделать  \n
-*/
-
-//#############################################################################
-
-/*! \page engine_cvar Движковые квары
-\tableofcontents
-
-\section engine_cvar_naming Правила именования
-Все имена кваров пишутся только в нижнем регистре, в качестве пробела используется _ (нижний пробел).
-Если квар является дефолтным, относительно него буду происходит расчеты либо действия, то тогда prefix_default_cvar.
- - r_  - все, что связано с рендером непосредственно
- - cl_ - игрок управление
- - phy_ - физика
- - env_ - погода (от environment, не знаю, как сократить weather)
- - pp_ - постпроцесс
- - ai_ - ИИ
- - mtl_ - настройки материалов
- - ent_ - то, что связано  с системой объектов
- - lvl_ - то, что связано с уровнем
- - nav_ - навигация
- - snd_ - звуки
- - ed_ - для редакторов
- - pt_ - партиклы
-
- \section engine_cvar_camera Камера
- - \b r_default_fov дефолтный fov
- - \b r_near ближняя плоскость отсечения
- - \b r_far дальняя плоскость отсечения
-
-\section engine_cvar_window Окно
- - \b r_win_width размер окна по горизонтали (в пикселях)
- - \b r_win_height размер окна по вертикали (в пикселях)
- - \b r_win_windowed режим рендера true - оконный, false - полноэкранный
- - \b r_final_image тип финального (выводимого в окно рендера) изображения из перечисления DS_RT
- - \b r_resize тип изменения размеров окан рендера из перечисления RENDER_RESIZE
-
-\section engine_cvar_pp Post process
- - \b pp_ssao установка качества ssao (0 - не рисовать, 1 - среднее, 2 - хорошее, 3 - высокое)
- - \b pp_bloom рисовать ли эффект bloom (true/false)
- - \b pp_lensflare true рисовать ли эффект lens flare (true/false)
- - \b pp_lensflare_usebloom при рендере эффекта lens flare использовать ли данные от прохода эффекта bloom (true/false)
- - \b pp_dlaa рисовать ли эффект dlaa (true/false)
- - \b pp_nfaa рисовать ли эффект nfaa (true/false)
- - \b pp_fog_density коэфициент плотности тумана, чем больше тем больше все в тумане, имеет смысл [0,1]
- - \b pp_motionblur рисовать ли эффект motion blur (true/false)
- - \b pp_motionblur_coef коэфициент размытия эффекта motion blur [0.0, 1.0]
-
-\section engine_cvar_light Свет, освещение, тени
- - \b r_pssm_4or3 для рисования глобальных теней использовать 4 сплита (true) или 3 (false)
- - \b r_pssm_shadowed отрасывает ли глобальный источник света тени (true/false)
- - \b r_pssm_quality коэфициент увеличения карты глубины для глобальных теней относительно размеров окна рендера [0.5, 2]
- - \b r_lsm_quality коэфициент увеличения карты глубины для локальных теней относительно размеров окна рендера [0.5, 2]
- - \b r_shadow_soft качество сглаживания теней (0 - без сглаживания, 1 - один проход, 2 - двойное сглаживание)
- - \b r_hdr_adapted_coef коэфициент адаптации глаза к освещению (0,1] (медленно,быстро]
-
- \section engine_cvar_green Растительность
- - \b r_grass_freq плотность рендера травы (0, 100]
- - \b r_green_lod0 дистанция от наблюдателя на которой заканчивается нулевой лод растительности (он же лод травы), то есть дальность отрисовки травы (0,100)
- - \b r_green_lod1 дистанция от наблюдателя на которой заканчивается первый лод растительности (50,150)
- - \b r_green_less дистанция от наблюдателя c которой начнет уменьшаться трава (0,green_lod0)
-
- \section engine_cvar_texfilter Фильтрация текстур 
- - \b r_texfilter_type тип фильтрации текстур, 0 - точечная, 1 - линейная, 2 - анизотропная
- - \b r_texfilter_max_anisotropy максимальное значение анизотропной фильтрации (если включена) [1,16]
- - \b r_texfilter_max_miplevel какой mip уровень текстур использовать? 0 - самый высокий, 1 - ниже на один уровень и т.д.
- - \b r_stats показывать ли статистику? 0 - нет, 1 - fps и игровое время, 2 - показать полностью
-
-\section engine_cvar_env Окружение
-  - \b env_default_rain_density коэфициент плотности дождя (0,1]
-  - \b env_default_thunderbolt могут ли воспроизводится эффекты молнии?
-  - \b env_weather_snd_volume громкость звуков погоды [0,1]
-  - \b env_ambient_snd_volume громкость фоновых звуков на уровне [0,1]
-
-\section engine_cvar_game Игра
-  - \b g_time_run запущено ли игрвоое время?"
-  - \b g_time_speed скорость/соотношение течения игрового времени
-
-//##########################################################################
-
-\page editors Редакторы
-\link level_editor SXLevelEditor - редактор уровней \endlink \n
-\link material_editor SXMaterialEditor - редактор материалов \endlink \n 
-\link particles_editor SXParticlesEditor - редактор партиклов \endlink \n
-*/
-
-//#############################################################################
-
-#ifndef __SKYXENGINE_H
-#define __SKYXENGINE_H
-
-#define SKYXENGINE_VERSION "X.0.0"
-
-#define SKYXENGINE_VERSION4EDITORS "SkyXEngine version " ## SKYXENGINE_VERSION
-
-#define SKYXENGINE_PREVIEW_SIZE 256
-
-#define SKYXENGINE_PREVIEWBUF_SIZE (SKYXENGINE_PREVIEW_SIZE * SKYXENGINE_PREVIEW_SIZE * 4)
-
-#define SKYXENGINE_RELPATH_GAMESOURCE "gamesource"
-#define SKYXENGINE_RELPATH_EDITOR_CACHE "editors_cache"
-
-#ifdef ENABLE_VLD
-#include <vld.h>
-#endif
-#include <windows.h>
-#include <ctime>
-#include <gdefines.h>
-#include <common/array.h>
-#include <common/string.h>
-#include <common/file_utils.h>
-#include <fstream>
-
-//ЗАГРУЗКА БИБЛИОТЕК
-//{
-#if defined(_DEBUG)
-#pragma comment(lib, "sxcore_d.lib")
-#else
-#pragma comment(lib, "sxcore.lib")
-#endif
-#include <core/sxcore.h>
-
-#if defined(_DEBUG)
-#pragma comment(lib, "sxinput_d.lib")
-#else
-#pragma comment(lib, "sxinput.lib")
-#endif
-#include <input/sxinput.h>
-
-#if defined(_DEBUG)
-#pragma comment(lib, "sxscore_d.lib")
-#else
-#pragma comment(lib, "sxscore.lib")
-#endif
-#include <score/sxscore.h>
-
-#if defined(_DEBUG)
-#pragma comment(lib, "sxgcore_d.lib")
-#else
-#pragma comment(lib, "sxgcore.lib")
-#endif
-#include <gcore/sxgcore.h>
-
-#if defined(_DEBUG)
-#pragma comment(lib, "sxmtrl_d.lib")
-#else
-#pragma comment(lib, "sxmtrl.lib")
-#endif
-#include <mtrl/sxmtrl.h>
-
-#if defined(_DEBUG)
-#pragma comment(lib, "sxparticles_d.lib")
-#else
-#pragma comment(lib, "sxparticles.lib")
-#endif
-#include <particles/sxparticles.h>
-
-#if defined(_DEBUG)
-#pragma comment(lib, "sxpp_d.lib")
-#else
-#pragma comment(lib, "sxpp.lib")
-#endif
-#include <pp/sxpp.h>
-
-#if defined(_DEBUG)
-#pragma comment(lib, "sxphysics_d.lib")
-#else
-#pragma comment(lib, "sxphysics.lib")
-#endif
-#include <physics/sxphysics.h>
-
-#if defined(_DEBUG)
-#pragma comment(lib, "sxaigrid_d.lib")
-#else
-#pragma comment(lib, "sxaigrid.lib")
-#endif
-#include <aigrid/sxaigrid.h>
-
-#if defined(_DEBUG)
-#pragma comment(lib, "sxdecals_d.lib")
-#else
-#pragma comment(lib, "sxdecals.lib")
-#endif
-#include <decals/sxdecals.h>
-
-//#if defined(_DEBUG)
-//#pragma comment(lib, "sxlevel_d.lib")
-//#else
-//#pragma comment(lib, "sxlevel.lib")
-//#endif
-//#include <level/sxlevel.h>
-
-#if defined(_DEBUG)
-#pragma comment(lib, "sxgame_d.lib")
-#else
-#pragma comment(lib, "sxgame.lib")
-#endif
-#include <game/sxgame.h>
-
-#if !defined(SX_TERRAX) && (defined(SX_LEVEL_EDITOR) || defined(SX_MATERIAL_EDITOR) || defined(SX_PARTICLES_EDITOR))
-#if defined(_DEBUG)
-#pragma comment(lib, "sxguiwinapi_d.lib")
-#else
-#pragma comment(lib, "sxguiwinapi.lib")
-#endif
-#include <sxguiwinapi/sxgui.h>
-#endif
-
-#if defined(_DEBUG)
-#pragma comment(lib, "sxrender_d.lib")
-#else
-#pragma comment(lib, "sxrender.lib")
-#endif
-#include <render/sxrender.h>
-
-//}
-
-//#############################################################################
-
-#if defined(SX_GAME)
-#include <SkyXEngine_Build/resource.h>
-#endif
-
-#if defined(SX_LEVEL_EDITOR)
-#include <SXLevelEditor/resource.h>
-#include <SXLevelEditor/level_editor.h>
-#endif
-
-#if defined(SX_MATERIAL_EDITOR)
-#include <sxmaterialeditor/resource.h>
-#include <sxmaterialeditor/material_editor.h>
-#endif
-
-#if defined(SX_PARTICLES_EDITOR)
-#include <sxparticleseditor/resource.h>
-#include <sxparticleseditor/particles_editor.h>
-#endif
-
-//#############################################################################
-
-/*! \defgroup skyxengine Функции и данные движка
-@{*/
-
-//! инициализация движка
-// void SkyXEngine_Init(HWND hWnd3D = 0, HWND hWndParent3D = 0, const char * szCmdLine = NULL);
-
-//! инициализация путей в регистрах
-void SkyXEngine_InitPaths();
-
-//! создание кваров и загрузка файлов настроек
-void SkyXEngine_CreateLoadCVar();
-
-//! обработчик для окна рендера
-LRESULT CALLBACK SkyXEngine_WndProc(HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam);
-
-//! создание окна рендера
-HWND SkyXEngine_CreateWindow(const char *szName, const char *szCaption, int iWidth, int iHeight);
-
-//**************************************************************************
-
-//! перебор всех окон процесса для их сворачивания
-BOOL CALLBACK SkyXEngine_EnumWindowsProc(HWND hwnd, LPARAM lParam);
-
-//! обработка ошибки
-void SkyXEngine_HandlerError(const char *szFormat, ...);
-
-//! инициализация потока ведения лога
-void SkyXEngine_InitOutLog();
-
-//! функция ведения лога и обработки сообщений
-void SkyXEngine_PrintfLog(int level, const char *szLibName, const char *szFormat, ...);
-
-//**************************************************************************
-
-//! кадр
-void SkyXEngine_Frame(DWORD timeDelta);
-
-//! обновление данных кваром (реакция на обновление)
-void SkyXEngine_UpdateDataCVar();
-
-//! запуск основного цикла обработки
-int SkyXEngine_CycleMain();
-
-//! одна итерация основного цикла
-bool SkyXEngine_CycleMainIteration();
-
-//! уничтожение данных движка, освобождение памяти
-// void SkyXEngine_Kill();
-
-//**************************************************************************
-
-/*! \name skyxengine_preview_wnd preview_wnd - Функции превью окна движка
-@{*/
-
-#ifdef IDB_BITMAP_PREVIEW
-//! обработчик для превьюокна
-LRESULT CALLBACK SkyXEngine_PreviewWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
-
-//! создание превью окна
-void SkyXEngine_PreviewCreate();
-
-//! уничтожение превью окна
-void SkyXEngine_PreviewKill();
-
-#endif
-//!@} 
-
-//**************************************************************************
-
-/*! \name skyxengine_redefined_func redefined_func - Функции обертки, для передачи графическому ядру для замены стандартных
-@{*/
-
-//! просчет физики для квада аи сетки
-bool SkyXEngine_RFuncAIQuadPhyNavigate(float3_t * pos);
-
-//! просчет столкновения частицы с миром
-bool SkyXEngine_RFuncParticlesPhyCollision(const float3 * lastpos, const float3* nextpos, float3* coll_pos, float3* coll_nrm);
-
-//! просчет столкновения растительности с миром при генерации
-bool SkyXEngine_RFuncGreenIntersect(const float3 *pStart, const float3 *pFinish, float3 *pResult);
-
-//!@}
-
-//##########################################################################
-
-/*! \name skyxengine_preview_genload Генерация/загрузка превью игровых ресурсов
-@{*/
-
-//! загружает текстуру по указанному пути как превью изображение и возвращает
-IGXTexture2D* SkyXEngine_LoadAsPreviewData(const char *szPath);
-
-//! возвращает загруженную текстуру с превью, в szPath путь до оригинала
-IGXTexture2D* SkyXEngine_GetPreviewData(const char *szPath);
-
-//! запускает генератор создания превью для игровых ресурсов
-void SkyXEngine_RunGenPreview();
-
-//!@}
-
-//##########################################################################
-
-/*! \name skyxengine_preview_editor_handlers Данные и обработчики для превью игровых ресурсов
-@{*/
-
-//! буфер для превью
-extern BYTE *g_pPreviewBuffer;
-
-//! записывает в аргументы данные, если все прошло удачно возвращает true
-bool SkyXEngine_EditorHandlerGetPreviewData(
-	const char *szPath, //!< полный путь до оригинального файла
-	void **pOutBuf,		//!< указатель на буфер, сюда будет записан указатель на g_pPreviewBuffer
-	int *pOutSizeBuf,	//!< размер буфера в байтах
-	int *pOutWidth,		//!< ширина изображения в пикселях
-	int *pOutHeight		//!< высота изображения в пикселях
-	);
-
-//! в szBuf записывает информацию о текстуре szPath
-bool SkyXEngine_EditorHandlerGetTextureInfo(const char *szPath, char *szBuf);
-
-//! в szBuf записывает информацию о dse модели szPath
-bool SkyXEngine_EditorHandlerGetDSEinfo(const char *szPath, char *szBuf);
-
-//!@}
-
-
-//!@} skyxengine
-
+/***********************************************************
+Copyright © Vitaliy Buturlin, Evgeny Danilovich, 2017, 2018
+See the license in LICENSE
+***********************************************************/
+
+/*! 
+\file
+Заголовочный файл движка SkyXEngine, подключает все необходимые библиотеки
+*/
+
+/*!
+\mainpage Документация SkyXEngine
+Это документация API (интерфейса программирования приложения) 3D движка real-time рендера SkyXEngine. \n
+Для того чтобы понять что такое SkyXEngine рекомендуем Вам ознакомится с \ref info_engine "кратким описанием движка". \n
+Также было бы крайне полезным узнать \ref general_info_libs "об организации библиотек". \n
+Дальнейшее ознакомление с движком SkyXEngine можно по <a href="./modules.html">документации, которая представлена модулями/подмодулями</a>.
+*/
+
+/*! \page info_engine Информация о движке SkyXEngine
+\tableofcontents
+\section ie_common Общее
+\b SkyXEngine - движок для создания 3D игр с real-time рендером, использует технологии DirectX 9. \n
+<small>Сразу уточнение, DirectX 9 мы используем в связи с личными предпочтениями, так как на наш взгляд эта технология является одной из лучших, хоть и считается устаревшей. 
+Все новое это забытое старое)) И как нам кажется ... нет ничего такого, чего нельзя было бы сделать на DirectX 9, но что можно сделать на другом GAPI, для создания игр любого жанра с real-time рендером.
+Но это только точка зрения нашей команды и она может быть ошибочная. Однако в планах есть расширение поддерживаемых GAPI.</small>
+
+<b>Формирование уровня</b> осуществляется посредством:
+ - загрузки статических моделей формата dse, с их автоматическим разбиением на "куски рендера" как quad или octo дерево, возможны сохранение/загрузка в бинарный файл всей геометрии уровня
+ - генерации растительности по маске, возможны 2 вида: трава (чем дальше тем меньше размер объекта) и деревья (с возможностью загрузки лодов), возможны возможны сохранение/загрузка в бинарный файл всей растительности уровня. Ручная расстановка расстительности поддерживается. Редактирование поддерживается.
+
+<b>Освещение</b> представлено 3 видами источников света (опционально поддерживается генерация теней от каждого исчтоника света):
+ - глобальный (солнце), тени - PSSM
+ - локальный - точечный, тени - Cube Shadow Mapping
+ - локальный - направленный, тени - Shadow Mapping. 
+
+HDR эффект присутсвует.
+
+<b>Система материалов</b> pbr, то есть построенная на физичеки корретных, но апроксимированных вычислениях. \n
+Для формирования данных для освещения используется техника Deferred shading, что позволяет обрабатывать неограниченное количество источников света. \n
+Поддерживаются отражения 2 видов:
+ - плоские (планарные)
+ - объемные (кубические). 
+
+Поддерживается до 3 полупрозрачных поверхностей в кадре (пока только тестовый режим, в планах улучшения качества). \n
+Поддерживаемые эффекты поверхностей:
+ - микрорельеф
+ - микрорельеф по маске (до 4 текстур)
+ - детальность
+ - детальность по маске (до 4 текстур)
+ - комбинированный микрорельеф с детальностью по маске (до 4 текстур)
+ - альфа тест
+ - просвечиваемость (для освещения тонких поверхностей, к примеру листвы и травы).
+
+ Вся система материалов является открытой и практически любой функционал системы доступен для собственной интерпретации, посредством шейдеров. Имеется встроенный набор данных.\n
+ Поддерживаются различные пользовательские данные которые интерпретируются только создающим материалы.
+ Настрока физического материала доступна.
+
+<b>Постпроцесс</b> состоит из эффектов:
+ - черно-белое изображение
+ - эффект сепия
+ - коррекция изображения
+ - рендер солнца
+ - bloom
+ - lens flare, эффект восприятия яркого света линзами
+ - depth of field, глубина резкости
+ - linear fog, линейный туман
+ - space screen ambient occulusion, глобальное освещение (точнее затенение) в пространстве экрана
+ - motion blur, размытие в движении
+ - nfaa
+ - dlaa.
+
+<b>Декали</b> - следы от пуль, взрывов, трещины. Рисуются поверх основной геометрии.
+
+<b>Физика</b> - для симуляции физики используется физический движок Bullet.
+
+<b>Звуковой движок</b> поддерживает воспроизведение в пространстве и в фоне. Поддерживаемые форматы ogg, wav. Доступно создание инстансов без возможности управления.
+
+<b>Партиклы</b> с необходимым набором логики и с многочисленными и простыми настроками.
+
+<b>AI сетка</b> для навигации живых игровых объектов.
+
+<b>Игровой движок</b> - основа для построения игровой логики. Предоставляет набор игровых объектов и обеспечивает их взаимодействие.
+
+<b>Эффекты окружения</b> представлены фоновыми ambient звуками, погодой, определяемой для каждого уровня, с различными погодными эффектами.
+
+<b>Real-time конфигурация (cvars)</b> позволяет в режиме реального времени через консоль изменять разного рода установки движка
+
+<b>Редакторы:</b> 
+ - \link level_editor SXLevelEditor - редактор уровней \endlink \n
+ - \link material_editor SXMaterialEditor - редактор материалов \endlink \n
+ - \link particles_editor SXParticlesEditor - редактор партиклов \endlink \n
+
+\section dogma_engine Идеология движка
+Основной технической идеей при разработке движка была идея о том что программист должен иметь контроль над объектами которыми он оперирует, НО этот контроль должен быть в меру. \n
+Основной идеей предназначения служила и служит идея о том чтобы предоставляемый инструментарий мог полностью удовлетворять потребностям разработчика, без необходимости со стороны разработчика вникать в детали реализации, но чтобы этот инструментарий имел прозрачную, открытую, свободную, бесплатную лицензию, и разработчик мог спокойно податься в стихию сотворения своего мира. \n
+Также главенствовал принцип разделения функционала на логические блоки (библиотеки) и после окончания разработки очередного блока он бы выносился в dll (с глаз долой). 
+Однако существенным дополнением являлась идея о том что библиотеки не должны ничего значть о равнозначных себе библиотеках в общей иерархии.
+К примеру \ref sxgeom "библиотека статической геометрии и растительности" ничего не знает о \ref sxmtrl "библиотеке материалов", и последняя ничего не знает о первой, однако первая использует функции из второй посредством графического ядра, а вторая осуществляется настройку материалов перед рендером первой.\n
+Немаловажным моментом являлся ориентир на гибкость. К примеру  \ref sxgcore_redefinition_func "переопредляемые функции" в графическом ядре, позволяют настроить на свой лад рендер. \n
+Ну и пожалуй самая главная идея заключается в полноценной возможности разработки игр с видом от первого лица, с настройкой/перестройкой "под себя" всего рендера. Также к приправе к этому мы руководствовались мыслью о том что скриптеры (коих не мало) могли бы вести разработку игры на своем (доступном им) уровне, со всеми возможностями движка.
+
+\section struct_engine Структура движка
+Весь движок состоит из \ref general_info_libs "подсистем", которые в некоторых случаях являются ядрами. \n
+Иерархия подсистем:\n
+\- \ref sxcore\n
+\-- \ref sxgcore\n
+\--- \ref sxgeom\n
+\--- \ref sxanim\n
+\--- \ref sxlight\n
+\--- \ref sxmtrl\n
+\--- \ref sxpp\n
+\- \ref sxinput\n
+Все библиотеки представлены файлами dll, что позволяет разделить функционал и реализацию. Также в большинстве случаев библиотеки могут быть вычленены из самого движка и могут использоваться автономно.\n
+В большинстве случаев весь функционал библиотек предоставляется интерфейсом функций, а идентификация объектов числовая, по типу #ID.
+Это позволяет не беспокоится о типах и о существовании объектов - об этом заботятся сами библиотеки.
+*/
+
+/*! \page std_doc Стандарт документирования
+\tableofcontents
+\section std_doc_common Общее
+Дабы создать удобочитаемые комментрии, которые легко бы трансформировались в документацию был создан данный стандарт документирования, следование которому является обязательным.
+Так как для документирования был выбран Doxygen, то все что касается документирования будет в контексте именно этой программы. \n
+Для более чектого структурирования  необходимо разделять весь код на логические звенья, которые могут быть представлены модулями/подмодулями и группами как в модулях так и вне их. 
+
+\section style_doc Стиль документирования
+QT стиль документирования (!) и QT_AUTOBRIEF - короткая документация до точки в любом комментарии, а после точки идет подробное документирование если надо.\n
+Возможные виды:
+<pre>
+//! документирование того что идет за этой строкой 
+//!< документирование того что предшествовало данному комментарию
+/ *! документирование того что идет за этой строкой * /
+/ *!< документирование того что предшествовало данному комментарию * /
+</pre>
+<b>Примечание:</b> здесь и далее / * и * / комментарий без пробелов!
+
+\section style_desc_file Описание файла (обязательно для каждого документируемого файла)
+<pre>
+/ *!
+\\file
+Описание файла
+\* /
+</pre>
+
+\section style_modules Модули/подмодули
+<pre>
+/ *! \\defgroup имя_модуля описание модуля
+\@{
+\* /
+... код модуля
+//!\@} имя_модуля
+</pre>
+В случае если модуль является подмодулем другого модуля то после описания модуля необходимо добавить:
+<pre>
+ \\ingroup имя_модуля_которому_будет_принадлежать_данный_модуль
+</pre>
+Окончание модуля может быть любым удобным, но только окончание модуля должно включать в себя имя модуля для которого написан конец.
+
+\section style_group Группа (вложенные группы не поддерживаются)
+<pre>
+/ *! \\name название группы, оно также будет размещено в документации
+а здесь пишем описание к группе если надо
+\* /
+//! \@{
+... все кроме классов
+//! \@}
+</pre>
+
+\section style_ref Ссылки
+Для лучшей навигации необходимо использовать ссылки, которые могут указывать на структурные единицы (модули/подмодули, страницы, секции) так и на код.
+Пример ссылки на структурные единицы:
+<pre>
+Весь движок состоит из \\ref general_info_libs "подсистем".
+</pre>
+Или без указания имени ссылки:
+<pre>
+\\ref sxcore
+</pre>
+
+Пример ссылки на код:
+<pre>
+\#SCore_Create
+</pre>
+
+\section style_page Страницы
+<pre>
+/ *! \\page идентификатор_только_латиница Заголовок страницы
+\\tableofcontents
+Для того чтобы разделить на разделы можно использовать секции:
+\\section style_page Создание страниц
+\* /
+</pre>
+
+\section style_list Списки
+<pre>
+ \- первый элемент
+ \- второй элемент
+</pre>
+
+\section style_extra Дополнительно
+\\n - для новой строки \n
+Также можно использовать html теги. \n
+\\note - заметка  \n
+\\warning - предупреждение  \n
+\\todo - пометка о том что надо сделать  \n
+*/
+
+//#############################################################################
+
+/*! \page engine_cvar Движковые квары
+\tableofcontents
+
+\section engine_cvar_naming Правила именования
+Все имена кваров пишутся только в нижнем регистре, в качестве пробела используется _ (нижний пробел).
+Если квар является дефолтным, относительно него буду происходит расчеты либо действия, то тогда prefix_default_cvar.
+ - r_  - все, что связано с рендером непосредственно
+ - cl_ - игрок управление
+ - phy_ - физика
+ - env_ - погода (от environment, не знаю, как сократить weather)
+ - pp_ - постпроцесс
+ - ai_ - ИИ
+ - mtl_ - настройки материалов
+ - ent_ - то, что связано  с системой объектов
+ - lvl_ - то, что связано с уровнем
+ - nav_ - навигация
+ - snd_ - звуки
+ - ed_ - для редакторов
+ - pt_ - партиклы
+
+ \section engine_cvar_camera Камера
+ - \b r_default_fov дефолтный fov
+ - \b r_near ближняя плоскость отсечения
+ - \b r_far дальняя плоскость отсечения
+
+\section engine_cvar_window Окно
+ - \b r_win_width размер окна по горизонтали (в пикселях)
+ - \b r_win_height размер окна по вертикали (в пикселях)
+ - \b r_win_windowed режим рендера true - оконный, false - полноэкранный
+ - \b r_final_image тип финального (выводимого в окно рендера) изображения из перечисления DS_RT
+ - \b r_resize тип изменения размеров окан рендера из перечисления RENDER_RESIZE
+
+\section engine_cvar_pp Post process
+ - \b pp_ssao установка качества ssao (0 - не рисовать, 1 - среднее, 2 - хорошее, 3 - высокое)
+ - \b pp_bloom рисовать ли эффект bloom (true/false)
+ - \b pp_lensflare true рисовать ли эффект lens flare (true/false)
+ - \b pp_lensflare_usebloom при рендере эффекта lens flare использовать ли данные от прохода эффекта bloom (true/false)
+ - \b pp_dlaa рисовать ли эффект dlaa (true/false)
+ - \b pp_nfaa рисовать ли эффект nfaa (true/false)
+ - \b pp_fog_density коэфициент плотности тумана, чем больше тем больше все в тумане, имеет смысл [0,1]
+ - \b pp_motionblur рисовать ли эффект motion blur (true/false)
+ - \b pp_motionblur_coef коэфициент размытия эффекта motion blur [0.0, 1.0]
+
+\section engine_cvar_light Свет, освещение, тени
+ - \b r_pssm_4or3 для рисования глобальных теней использовать 4 сплита (true) или 3 (false)
+ - \b r_pssm_shadowed отрасывает ли глобальный источник света тени (true/false)
+ - \b r_pssm_quality коэфициент увеличения карты глубины для глобальных теней относительно размеров окна рендера [0.5, 2]
+ - \b r_lsm_quality коэфициент увеличения карты глубины для локальных теней относительно размеров окна рендера [0.5, 2]
+ - \b r_shadow_soft качество сглаживания теней (0 - без сглаживания, 1 - один проход, 2 - двойное сглаживание)
+ - \b r_hdr_adapted_coef коэфициент адаптации глаза к освещению (0,1] (медленно,быстро]
+
+ \section engine_cvar_green Растительность
+ - \b r_grass_freq плотность рендера травы (0, 100]
+ - \b r_green_lod0 дистанция от наблюдателя на которой заканчивается нулевой лод растительности (он же лод травы), то есть дальность отрисовки травы (0,100)
+ - \b r_green_lod1 дистанция от наблюдателя на которой заканчивается первый лод растительности (50,150)
+ - \b r_green_less дистанция от наблюдателя c которой начнет уменьшаться трава (0,green_lod0)
+
+ \section engine_cvar_texfilter Фильтрация текстур 
+ - \b r_texfilter_type тип фильтрации текстур, 0 - точечная, 1 - линейная, 2 - анизотропная
+ - \b r_texfilter_max_anisotropy максимальное значение анизотропной фильтрации (если включена) [1,16]
+ - \b r_texfilter_max_miplevel какой mip уровень текстур использовать? 0 - самый высокий, 1 - ниже на один уровень и т.д.
+ - \b r_stats показывать ли статистику? 0 - нет, 1 - fps и игровое время, 2 - показать полностью
+
+\section engine_cvar_env Окружение
+  - \b env_default_rain_density коэфициент плотности дождя (0,1]
+  - \b env_default_thunderbolt могут ли воспроизводится эффекты молнии?
+  - \b env_weather_snd_volume громкость звуков погоды [0,1]
+  - \b env_ambient_snd_volume громкость фоновых звуков на уровне [0,1]
+
+\section engine_cvar_game Игра
+  - \b g_time_run запущено ли игрвоое время?"
+  - \b g_time_speed скорость/соотношение течения игрового времени
+
+//##########################################################################
+
+\page editors Редакторы
+\link level_editor SXLevelEditor - редактор уровней \endlink \n
+\link material_editor SXMaterialEditor - редактор материалов \endlink \n 
+\link particles_editor SXParticlesEditor - редактор партиклов \endlink \n
+*/
+
+//#############################################################################
+
+#ifndef __SKYXENGINE_H
+#define __SKYXENGINE_H
+
+#define SKYXENGINE_VERSION "X.1.0-dev"
+
+#define SKYXENGINE_VERSION4EDITORS "SkyXEngine version " ## SKYXENGINE_VERSION
+
+#define SKYXENGINE_PREVIEW_SIZE 256
+
+#define SKYXENGINE_PREVIEWBUF_SIZE (SKYXENGINE_PREVIEW_SIZE * SKYXENGINE_PREVIEW_SIZE * 4)
+
+#define SKYXENGINE_RELPATH_GAMESOURCE "gamesource"
+#define SKYXENGINE_RELPATH_EDITOR_CACHE "editors_cache"
+
+#ifdef ENABLE_VLD
+#include <vld.h>
+#endif
+#include <windows.h>
+#include <ctime>
+#include <gdefines.h>
+#include <common/array.h>
+#include <common/string.h>
+#include <common/file_utils.h>
+#include <fstream>
+
+//ЗАГРУЗКА БИБЛИОТЕК
+//{
+#if defined(_DEBUG)
+#pragma comment(lib, "sxcore_d.lib")
+#else
+#pragma comment(lib, "sxcore.lib")
+#endif
+#include <core/sxcore.h>
+
+#if defined(_DEBUG)
+#pragma comment(lib, "sxinput_d.lib")
+#else
+#pragma comment(lib, "sxinput.lib")
+#endif
+#include <input/sxinput.h>
+
+#if defined(_DEBUG)
+#pragma comment(lib, "sxscore_d.lib")
+#else
+#pragma comment(lib, "sxscore.lib")
+#endif
+#include <score/sxscore.h>
+
+#if defined(_DEBUG)
+#pragma comment(lib, "sxgcore_d.lib")
+#else
+#pragma comment(lib, "sxgcore.lib")
+#endif
+#include <gcore/sxgcore.h>
+
+#if defined(_DEBUG)
+#pragma comment(lib, "sxmtrl_d.lib")
+#else
+#pragma comment(lib, "sxmtrl.lib")
+#endif
+#include <mtrl/sxmtrl.h>
+
+#if defined(_DEBUG)
+#pragma comment(lib, "sxparticles_d.lib")
+#else
+#pragma comment(lib, "sxparticles.lib")
+#endif
+#include <particles/sxparticles.h>
+
+#if defined(_DEBUG)
+#pragma comment(lib, "sxpp_d.lib")
+#else
+#pragma comment(lib, "sxpp.lib")
+#endif
+#include <pp/sxpp.h>
+
+#if defined(_DEBUG)
+#pragma comment(lib, "sxphysics_d.lib")
+#else
+#pragma comment(lib, "sxphysics.lib")
+#endif
+#include <physics/sxphysics.h>
+
+#if defined(_DEBUG)
+#pragma comment(lib, "sxaigrid_d.lib")
+#else
+#pragma comment(lib, "sxaigrid.lib")
+#endif
+#include <aigrid/sxaigrid.h>
+
+#if defined(_DEBUG)
+#pragma comment(lib, "sxdecals_d.lib")
+#else
+#pragma comment(lib, "sxdecals.lib")
+#endif
+#include <decals/sxdecals.h>
+
+//#if defined(_DEBUG)
+//#pragma comment(lib, "sxlevel_d.lib")
+//#else
+//#pragma comment(lib, "sxlevel.lib")
+//#endif
+//#include <level/sxlevel.h>
+
+#if defined(_DEBUG)
+#pragma comment(lib, "sxgame_d.lib")
+#else
+#pragma comment(lib, "sxgame.lib")
+#endif
+#include <game/sxgame.h>
+
+#if !defined(SX_TERRAX) && (defined(SX_LEVEL_EDITOR) || defined(SX_MATERIAL_EDITOR) || defined(SX_PARTICLES_EDITOR))
+#if defined(_DEBUG)
+#pragma comment(lib, "sxguiwinapi_d.lib")
+#else
+#pragma comment(lib, "sxguiwinapi.lib")
+#endif
+#include <sxguiwinapi/sxgui.h>
+#endif
+
+#if defined(_DEBUG)
+#pragma comment(lib, "sxrender_d.lib")
+#else
+#pragma comment(lib, "sxrender.lib")
+#endif
+#include <render/sxrender.h>
+
+//}
+
+//#############################################################################
+
+#if defined(SX_GAME)
+#include <SkyXEngine_Build/resource.h>
+#endif
+
+#if defined(SX_LEVEL_EDITOR)
+#include <SXLevelEditor/resource.h>
+#include <SXLevelEditor/level_editor.h>
+#endif
+
+#if defined(SX_MATERIAL_EDITOR)
+#include <sxmaterialeditor/resource.h>
+#include <sxmaterialeditor/material_editor.h>
+#endif
+
+#if defined(SX_PARTICLES_EDITOR)
+#include <sxparticleseditor/resource.h>
+#include <sxparticleseditor/particles_editor.h>
+#endif
+
+//#############################################################################
+
+/*! \defgroup skyxengine Функции и данные движка
+@{*/
+
+//! инициализация движка
+// void SkyXEngine_Init(HWND hWnd3D = 0, HWND hWndParent3D = 0, const char * szCmdLine = NULL);
+
+//! инициализация путей в регистрах
+void SkyXEngine_InitPaths();
+
+//! создание кваров и загрузка файлов настроек
+void SkyXEngine_CreateLoadCVar();
+
+//! обработчик для окна рендера
+LRESULT CALLBACK SkyXEngine_WndProc(HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam);
+
+//! создание окна рендера
+HWND SkyXEngine_CreateWindow(const char *szName, const char *szCaption, int iWidth, int iHeight);
+
+//**************************************************************************
+
+//! перебор всех окон процесса для их сворачивания
+BOOL CALLBACK SkyXEngine_EnumWindowsProc(HWND hwnd, LPARAM lParam);
+
+//! обработка ошибки
+void SkyXEngine_HandlerError(const char *szFormat, ...);
+
+//! инициализация потока ведения лога
+void SkyXEngine_InitOutLog();
+
+//! функция ведения лога и обработки сообщений
+void SkyXEngine_PrintfLog(int level, const char *szLibName, const char *szFormat, ...);
+
+//**************************************************************************
+
+//! кадр
+void SkyXEngine_Frame(DWORD timeDelta);
+
+//! обновление данных кваром (реакция на обновление)
+void SkyXEngine_UpdateDataCVar();
+
+//! запуск основного цикла обработки
+int SkyXEngine_CycleMain();
+
+//! одна итерация основного цикла
+bool SkyXEngine_CycleMainIteration();
+
+//! уничтожение данных движка, освобождение памяти
+// void SkyXEngine_Kill();
+
+//**************************************************************************
+
+/*! \name skyxengine_preview_wnd preview_wnd - Функции превью окна движка
+@{*/
+
+#ifdef IDB_BITMAP_PREVIEW
+//! обработчик для превьюокна
+LRESULT CALLBACK SkyXEngine_PreviewWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
+
+//! создание превью окна
+void SkyXEngine_PreviewCreate();
+
+//! уничтожение превью окна
+void SkyXEngine_PreviewKill();
+
+#endif
+//!@} 
+
+//**************************************************************************
+
+/*! \name skyxengine_redefined_func redefined_func - Функции обертки, для передачи графическому ядру для замены стандартных
+@{*/
+
+//! просчет физики для квада аи сетки
+bool SkyXEngine_RFuncAIQuadPhyNavigate(float3_t * pos);
+
+//! просчет столкновения частицы с миром
+bool SkyXEngine_RFuncParticlesPhyCollision(const float3 * lastpos, const float3* nextpos, float3* coll_pos, float3* coll_nrm);
+
+//! просчет столкновения растительности с миром при генерации
+bool SkyXEngine_RFuncGreenIntersect(const float3 *pStart, const float3 *pFinish, float3 *pResult);
+
+//!@}
+
+//##########################################################################
+
+/*! \name skyxengine_preview_genload Генерация/загрузка превью игровых ресурсов
+@{*/
+
+//! загружает текстуру по указанному пути как превью изображение и возвращает
+IGXTexture2D* SkyXEngine_LoadAsPreviewData(const char *szPath);
+
+//! возвращает загруженную текстуру с превью, в szPath путь до оригинала
+IGXTexture2D* SkyXEngine_GetPreviewData(const char *szPath);
+
+//! запускает генератор создания превью для игровых ресурсов
+void SkyXEngine_RunGenPreview();
+
+//!@}
+
+//##########################################################################
+
+/*! \name skyxengine_preview_editor_handlers Данные и обработчики для превью игровых ресурсов
+@{*/
+
+//! буфер для превью
+extern BYTE *g_pPreviewBuffer;
+
+//! записывает в аргументы данные, если все прошло удачно возвращает true
+bool SkyXEngine_EditorHandlerGetPreviewData(
+	const char *szPath, //!< полный путь до оригинального файла
+	void **pOutBuf,		//!< указатель на буфер, сюда будет записан указатель на g_pPreviewBuffer
+	int *pOutSizeBuf,	//!< размер буфера в байтах
+	int *pOutWidth,		//!< ширина изображения в пикселях
+	int *pOutHeight		//!< высота изображения в пикселях
+	);
+
+//! в szBuf записывает информацию о текстуре szPath
+bool SkyXEngine_EditorHandlerGetTextureInfo(const char *szPath, char *szBuf);
+
+//! в szBuf записывает информацию о dse модели szPath
+bool SkyXEngine_EditorHandlerGetDSEinfo(const char *szPath, char *szBuf);
+
+//!@}
+
+
+//!@} skyxengine
+
 #endif
\ No newline at end of file