Commit 7442bd1c authored by D-AIRY's avatar D-AIRY

[TerraX] option to create objects with random scale and rotation; bump up version

parent 30fd0731
sxlevel:
расформировать. Погоду в sxweather, рандомные звуки передать в sxgame
sxgame:
реализовать IEditable, IEditorObject. Работу с моделями перевести на IXModel и провайдеры. Работу со звуком перенести на новые интерфейсы. Реализовать геттеры свойств объекта (рассмотреть вариант форсированной работы только через геттеры/сеттеры при сериализации/десериализации свойств). Убрать жесткие зависимости от sxscore, sxaigrid, sxphysics, sxmtrl, sxgeom, sxgreen, sxdecals, sxanum, sxparticles
Работу со звуком перенести на новые интерфейсы. Реализовать геттеры свойств объекта (рассмотреть вариант форсированной работы только через геттеры/сеттеры при сериализации/десериализации свойств). Убрать жесткие зависимости от sxscore, sxaigrid, sxphysics, sxmtrl, sxgreen, sxdecals, sxparticles
sxrender:
реализовать forward проход рендера для партиклов и прочих ппп (сортировка на уровне пайплайна). Реализовать рендер постпроцесса на основе пайплайна. Убрать устаревший код. Убрать жесткие зависимости от sxmtrl, sxgeom, sxgreen, sxdecals, sxanim, sxparticles, sxpp. Реализовать OC с репроекцией глубины на GPU
sxgui:
перевести на новое API шейдерных констант
sxscore:
разработать интерфейсы API, оформить в виде плагина, обработку вынести в собственный поток, звуки грузить асинхронно через API ФС
sxaigrid:
рассмотреть подробнее позже
sxinput:
нет замечаний
sxphysics:
убрать экспорт классов bullet за пределы библиотеки. Для необходимых объектов создать интерфейсы-обертки. Убрать зависимость от sxgeom, sxgreen (эти подсистемы сами создают объекты физики)
убрать экспорт классов bullet за пределы библиотеки. Для необходимых объектов создать интерфейсы-обертки. Убрать зависимость sxgreen (эти подсистемы сами создают объекты физики)
sxmtrl:
реализовать поддержку IXShaderVariant. Убрать устаревший код
sxgeom:
доработать реализацию IEditorObject. Реализовать IXStaticModel, IXDynamicModel, IXStaticModelProvider, IXDynamicModelProvider. Грузить уровень по соответствующему сообщению. Объекты сами себе загружают физику. Рефакторинг кода (в т.ч. убрать дублирование). Реализовать рендер инстансингом. Убрать прямую зависимость от sxcore. Оформить в виде плагина
Убрать устаревший код
sxgreen:
реализовать IEditable, IEditorObject. Рефакторинг кода (в т.ч. убрать дублирование). Работа с материалами через IXMaterialSystem. Убрать жесткие зависимости от других либ. Оформить в виде плагина.
sxdecals:
убрать жесткие зависимости от других либ. Оформить в виде плагина. Разработать и предоставить контрольный интерфейс.
sxanim:
реализовать IXAnimatedModel, IXAnimatedModelProvider. Перевести на новое API шейдерных констант. Работа с материалами через IXMaterialSystem. Убрать жесткие зависимости от других либ. Оформить в виде плагина.
Убрать жесткие зависимости от других либ.
sxlight:
провести полное тестирование. Оптимизировать алгоритмы кэша теней. Рефакторинг, убрать устаревший код.
sxparticles:
......@@ -34,12 +28,8 @@ sxcore:
реализовать IXFileSystem.
sxgcore:
убрать работу с моделями. Вынести небо в sxweather. Загрузку текстур сделать асинхронно. Убрать менеджер рендертаргетов. Убрать код OC.
Engine:
рассмотреть подробнее позже
TerraX:
доделать редактор свойств объекта. Сделать рендер через расширение пайплайна. Реализовать привязку к сетке. Сдеоать возможность создавать объекты сразу со случайным масштабом/поворотом. Реализовать загрузку/сохранение уровня. Разработать модель расширения интерфейса плагинами.
Реализовать привязку к сетке. Сдеоать возможность создавать объекты сразу со случайным масштабом/поворотом. Разработать модель расширения интерфейса плагинами.
sxweather:
забрать из sxlevel. Оформить в виде плагина
dseplugin:
реализовать интерфейс загрузчика моделей.
\ No newline at end of file
......@@ -292,7 +292,7 @@ QT стиль документирования (!) и QT_AUTOBRIEF - корот
#ifndef __SKYXENGINE_H
#define __SKYXENGINE_H
#define SKYXENGINE_VERSION "X.1.3"
#define SKYXENGINE_VERSION "X.2.0-dev"
#define SKYXENGINE_VERSION4EDITORS "SkyXEngine version " ## SKYXENGINE_VERSION
......
......@@ -3,11 +3,17 @@
extern AssotiativeArray<AAString, IXEditable*> g_mEditableSystems;
CCommandCreate::CCommandCreate(const float3_t vPos, const char *szTypeName, const char *szClassName)
CCommandCreate::CCommandCreate(const float3_t vPos, const char *szTypeName, const char *szClassName, bool useRandomScaleYaw)
{
m_vPos = vPos;
m_sClassName = szClassName;
if(useRandomScaleYaw)
{
m_fScale = randf(0.7, 1.3);
m_qOrient = SMQuaternion(randf(0, SM_2PI), 'y');
}
const AssotiativeArray<AAString, IXEditable*>::Node *pNode;
if(!g_mEditableSystems.KeyExists(AAString(szTypeName), &pNode))
{
......@@ -30,6 +36,8 @@ bool CCommandCreate::exec()
m_pObject = m_pEditable->newObject(m_sClassName.c_str());
}
m_pObject->setPos(m_vPos);
m_pObject->setScale(float3(m_fScale));
m_pObject->setOrient(m_qOrient);
m_pObject->setSelected(true);
m_pObject->create();
......
......@@ -11,7 +11,7 @@
class CCommandCreate: public CCommand
{
public:
CCommandCreate(const float3_t vPos, const char *szTypeName, const char *szClassName);
CCommandCreate(const float3_t vPos, const char *szTypeName, const char *szClassName, bool useRandomScaleYaw=false);
~CCommandCreate();
bool exec();
......@@ -24,6 +24,8 @@ public:
protected:
float3_t m_vPos;
SMQuaternion m_qOrient;
float m_fScale = 1.0f;
String m_sClassName;
IXEditable *m_pEditable = NULL;
IXEditorObject *m_pObject = NULL;
......
......@@ -57,6 +57,7 @@ HWND g_hComboTypesWnd = NULL;
HWND g_hStaticTypesWnd = NULL;
HWND g_hComboClassesWnd = NULL;
HWND g_hStaticClassesWnd = NULL;
HWND g_hCheckboxRandomScaleYawWnd = NULL;
HWND g_hABArrowButton = NULL;
HWND g_hABCameraButton = NULL;
......@@ -522,6 +523,12 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
SetWindowLongPtr(g_hComboClassesWnd, GWLP_WNDPROC, (LONG_PTR)ClassesComboWndProc);
}
//g_hCheckboxRandomScaleYawWnd
g_hCheckboxRandomScaleYawWnd = CreateWindowExA(0, WC_BUTTON, "Random scale and yaw", WS_VISIBLE | WS_CHILD | BS_AUTOCHECKBOX, rect.right, rect.top + OBJECT_TREE_HEIGHT + 15 + 15 + 25 + 25, MARGIN_RIGHT, 15, hWnd, (HMENU)0, hInst, NULL);
{
SetWindowFont(g_hCheckboxRandomScaleYawWnd, GetStockObject(DEFAULT_GUI_FONT), FALSE);
}
{
TV_INSERTSTRUCT tvis;
memset(&tvis, 0, sizeof(tvis));
......@@ -610,7 +617,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
MoveWindow(g_hComboTypesWnd, rect.right, rect.top + OBJECT_TREE_HEIGHT + 15, MARGIN_RIGHT, OBJECT_TREE_HEIGHT, FALSE);
MoveWindow(g_hStaticClassesWnd, rect.right, rect.top + OBJECT_TREE_HEIGHT + 15 + 25, MARGIN_RIGHT, 15, FALSE);
MoveWindow(g_hComboClassesWnd, rect.right, rect.top + OBJECT_TREE_HEIGHT + 15 + 15 + 25, MARGIN_RIGHT, OBJECT_TREE_HEIGHT, FALSE);
MoveWindow(g_hCheckboxRandomScaleYawWnd, rect.right, rect.top + OBJECT_TREE_HEIGHT + 15 + 15 + 25 + 25, MARGIN_RIGHT, 15, FALSE);
InvalidateRect(hWnd, &rect, TRUE);
if(g_pEngine)
......@@ -977,7 +985,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
g_pUndoManager->execCommand(pCmdUnselect);
}
CCommandCreate *pCmd = new CCommandCreate(g_xState.vCreateOrigin, szTypeName, szClassName);
CCommandCreate *pCmd = new CCommandCreate(g_xState.vCreateOrigin, szTypeName, szClassName, Button_GetCheck(g_hCheckboxRandomScaleYawWnd));
g_pUndoManager->execCommand(pCmd);
g_xState.bCreateMode = false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment