diff --git a/source/SXGUIWinApi/dialog_select_file.cpp b/source/SXGUIWinApi/dialog_select_file.cpp index 0b771430b56341f465d6baeb35d7b70568871a58..0dec976197ea611741f7aa84b544c7db721f37d4 100644 --- a/source/SXGUIWinApi/dialog_select_file.cpp +++ b/source/SXGUIWinApi/dialog_select_file.cpp @@ -251,7 +251,8 @@ LRESULT SelFile_ButtonSelect_Click(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM l if (iSel < 0) { - MessageBox(hWnd, "No select file", 0, 0); + if (hWnd == dialog_selfile::ButtonSelect->getHWND()) + MessageBox(hWnd, "No select file", 0, 0); return 0; } @@ -372,6 +373,7 @@ void dialog_selfile::InitAllElements() dialog_selfile::ListBoxFiles->setTransparentTextBk(true); dialog_selfile::ListBoxFiles->setColorBrush(RGB(255, 255, 255)); dialog_selfile::ListBoxFiles->addHandler(SelFile_ListBoxFiles_Click, WM_LBUTTONUP); + dialog_selfile::ListBoxFiles->addHandler(SelFile_ButtonSelect_Click, WM_LBUTTONDBLCLK); dialog_selfile::StaticPreview = SXGUICrStatic("Preview:", 470, 5, 50, 15, dialog_selfile::SelectFile->getHWND(), 0, 0); dialog_selfile::StaticPreview->setFont("MS Shell Dlg", -11, 0, 400, 0, 0, 0); diff --git a/source/SkyXEngine_Build/SkyXEngine_Build.cpp b/source/SkyXEngine_Build/SkyXEngine_Build.cpp index 076d1509f23143c0534d9b62d94988e99bf3332e..0d974e5c565532c9b3cf54de86d5d9b380f293d3 100644 --- a/source/SkyXEngine_Build/SkyXEngine_Build.cpp +++ b/source/SkyXEngine_Build/SkyXEngine_Build.cpp @@ -15,8 +15,8 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLin SkyXEngine_Init(); SkyXEngine_PreviewKill(); - SGCore_SkyBoxLoadTex("sky/sky_2_cube.dds"); - SGCore_SkyCloudsLoadTex("sky/sky_oblaka.dds"); + SGCore_SkyBoxLoadTex("sky_2_cube.dds"); + SGCore_SkyCloudsLoadTex("sky_oblaka.dds"); SGCore_SkyCloudsSetWidthHeightPos(2000, 2000, &float3(0, 0, 0)); SLevel_Load("stalker_atp", true); diff --git a/source/aigrid/aigrid.cpp b/source/aigrid/aigrid.cpp index 2c8b5e9b7dd8371ed792ce134355bac576a228df..2e175dace5bb47f6853073b054d71aa952ecdc4d 100644 --- a/source/aigrid/aigrid.cpp +++ b/source/aigrid/aigrid.cpp @@ -2343,7 +2343,7 @@ bool CAIGrid::quadGetPos(ID id, float3* pos) const ID CAIGrid::gridTraceBeam(const float3* start, const float3* dir) const { ID idf = -1; - SXTriangle tmptri; + CTriangle tmptri; float3 ip; float3 res; float3 ildir; @@ -2366,9 +2366,9 @@ ID CAIGrid::gridTraceBeam(const float3* start, const float3* dir) const for (int k = 0, kl = bound->m_aIdsQuads.size(); k < kl; ++k) { posquad = (float3)m_aQuads[bound->m_aIdsQuads[k]]->m_vPos; - tmptri.a = (float3_t)(posquad + float3(-AIGRID_QUAD_SIZEDIV2, 0, -AIGRID_QUAD_SIZEDIV2)); - tmptri.b = (float3_t)(posquad + float3(AIGRID_QUAD_SIZEDIV2, 0, AIGRID_QUAD_SIZEDIV2)); - tmptri.c = (float3_t)(posquad + float3(AIGRID_QUAD_SIZEDIV2, 0, -AIGRID_QUAD_SIZEDIV2)); + tmptri.m_vA = (float3_t)(posquad + float3(-AIGRID_QUAD_SIZEDIV2, 0, -AIGRID_QUAD_SIZEDIV2)); + tmptri.m_vB = (float3_t)(posquad + float3(AIGRID_QUAD_SIZEDIV2, 0, AIGRID_QUAD_SIZEDIV2)); + tmptri.m_vC = (float3_t)(posquad + float3(AIGRID_QUAD_SIZEDIV2, 0, -AIGRID_QUAD_SIZEDIV2)); if (tmptri.IntersectLine((*start), ildir, &ip)) { if (SMVector3Length2((*start) - res) > SMVector3Length2((*start) - ip)) @@ -2378,9 +2378,9 @@ ID CAIGrid::gridTraceBeam(const float3* start, const float3* dir) const } } - tmptri.a = (float3_t)(posquad + float3(-AIGRID_QUAD_SIZEDIV2, 0, -AIGRID_QUAD_SIZEDIV2)); - tmptri.b = (float3_t)(posquad + float3(-AIGRID_QUAD_SIZEDIV2, 0, AIGRID_QUAD_SIZEDIV2)); - tmptri.c = (float3_t)(posquad + float3(AIGRID_QUAD_SIZEDIV2, 0, AIGRID_QUAD_SIZEDIV2)); + tmptri.m_vA = (float3_t)(posquad + float3(-AIGRID_QUAD_SIZEDIV2, 0, -AIGRID_QUAD_SIZEDIV2)); + tmptri.m_vB = (float3_t)(posquad + float3(-AIGRID_QUAD_SIZEDIV2, 0, AIGRID_QUAD_SIZEDIV2)); + tmptri.m_vC = (float3_t)(posquad + float3(AIGRID_QUAD_SIZEDIV2, 0, AIGRID_QUAD_SIZEDIV2)); if (tmptri.IntersectLine((*start), ildir, &ip)) { if (SMVector3Length2((*start) - res) > SMVector3Length2((*start) - ip)) @@ -2510,7 +2510,7 @@ void CAIGrid::renderBB() m_pBoundBox->DrawSubset(0); } -void CAIGrid::renderQuads(const ISXFrustum * frustum, const float3 * viewpos, float dist) +void CAIGrid::renderQuads(const IFrustum * frustum, const float3 * viewpos, float dist) { if (!m_useGraphics) return; diff --git a/source/aigrid/aigrid.h b/source/aigrid/aigrid.h index 3d0edfb328d01580c587b39d0910cdbd27949ecf..ba4dda39e10190558f9a4a7cb14dc0a5b8c90209 100644 --- a/source/aigrid/aigrid.h +++ b/source/aigrid/aigrid.h @@ -386,7 +386,7 @@ public: //{ //! отрисовка сетки - void renderQuads(const ISXFrustum *pFrustum, const float3 *pViewPos, float fDist); + void renderQuads(const IFrustum *pFrustum, const float3 *pViewPos, float fDist); //! отрисовка графпоинтов void renderGraphPoints(const float3 *pViewPos, float fDist); diff --git a/source/aigrid/sxaigrid.cpp b/source/aigrid/sxaigrid.cpp index 84b520cbb97efa92c95dc457c505facef273330f..d7a276c9f2dbe365acabe7e6ca454dc998a5b6bc 100644 --- a/source/aigrid/sxaigrid.cpp +++ b/source/aigrid/sxaigrid.cpp @@ -429,7 +429,7 @@ SX_LIB_API ID SAIG_GraphPointGetNear(ID idBegin, ID idEnd) } -SX_LIB_API void SAIG_RenderQuads(const ISXFrustum *pFrustum, const float3 *pViewPos, float fDist) +SX_LIB_API void SAIG_RenderQuads(const IFrustum *pFrustum, const float3 *pViewPos, float fDist) { AIG_PRECOND(_VOID); diff --git a/source/aigrid/sxaigrid.h b/source/aigrid/sxaigrid.h index 6b3b1a319dfa4529f754c48e5edb0b1ea978cead..e748e691633c27e927ca533745f51b73ffdbe7a1 100644 --- a/source/aigrid/sxaigrid.h +++ b/source/aigrid/sxaigrid.h @@ -350,7 +350,7 @@ SX_LIB_API ID SAIG_GraphPointGetNear(ID idBegin, ID idEnd); @{*/ //! отрисовка сетки -SX_LIB_API void SAIG_RenderQuads(const ISXFrustum *pFrustum, const float3 *pViewPos, float fDist); +SX_LIB_API void SAIG_RenderQuads(const IFrustum *pFrustum, const float3 *pViewPos, float fDist); //! отрисовка графпоинтов SX_LIB_API void SAIG_RenderGraphPoints(const float3 *pViewPos, float fDist); diff --git a/source/anim/animated.cpp b/source/anim/animated.cpp index 2e47a2491fda244a13452843f9a1e4d2827c5fe1..b5d06857dafd17853f12df29df3caa508e077c9b 100644 --- a/source/anim/animated.cpp +++ b/source/anim/animated.cpp @@ -2506,7 +2506,7 @@ UINT AnimationManager::getMaterial(const char * mat, bool bStatic) return(SGCore_MtlLoad(tmp, bStatic ? MTL_TYPE_GEOM : MTL_TYPE_SKIN)); } -void AnimationManager::computeVis(const ISXFrustum * frustum, const float3 * viewpos, ID id_arr) +void AnimationManager::computeVis(const IFrustum * frustum, const float3 * viewpos, ID id_arr) { float3 jcenter; float3 jradius; diff --git a/source/anim/animated.h b/source/anim/animated.h index 41df6124b560845300348c68a5e1767def5292c2..b15aeeef671fe78929223d39117f588f7c68f85e 100644 --- a/source/anim/animated.h +++ b/source/anim/animated.h @@ -332,7 +332,7 @@ public: UINT getMaterial(const char * mat, bool bStatic = false); - void computeVis(const ISXFrustum * frustum, const float3 * viewpos, ID id_arr); + void computeVis(const IFrustum * frustum, const float3 * viewpos, ID id_arr); ID getNextVisId(); void freeVisID(ID id); diff --git a/source/anim/sxanim.h b/source/anim/sxanim.h index 92aca21b1955eb371c1fdc1c346f18c35da4d2a7..3d392fc3f346a2147ecaadf74f80ef736e109553 100644 --- a/source/anim/sxanim.h +++ b/source/anim/sxanim.h @@ -327,7 +327,7 @@ SX_LIB_API IAnimPlayer * SXAnim_CreatePlayer(const char * mdl = NULL); //! просчитать видимость всех моделей для фрустума SX_LIB_API void SXAnim_ModelsComVisible( - const ISXFrustum * frustum, //!< фрустум для которого считаем видимость моделей + const IFrustum * frustum, //!< фрустум для которого считаем видимость моделей const float3 * viewpos, //!< позиция источника фрустума чтобы просчитать дистанцию ID id_arr = 0 //!< идентификатор массива информации о видимости для фрустума, создается через SXAnim_ModelsAddArrForCom, если 0 то считаем в дефолтный ); diff --git a/source/anim/sxanim_dll.cpp b/source/anim/sxanim_dll.cpp index 442acbabbfa418463c77b9ec9ad19ff30a5655d7..6f60d8e849f2d9bc820ab46a6e3ce5b42f9a6607 100644 --- a/source/anim/sxanim_dll.cpp +++ b/source/anim/sxanim_dll.cpp @@ -83,7 +83,7 @@ SX_LIB_API IAnimPlayer * SXAnim_CreatePlayer(const char * mdl) return(anim); } -SX_LIB_API void SXAnim_ModelsComVisible(const ISXFrustum * frustum, const float3 * viewpos, ID id_arr) +SX_LIB_API void SXAnim_ModelsComVisible(const IFrustum * frustum, const float3 * viewpos, ID id_arr) { SA_PRECOND(_VOID); g_mgr->computeVis(frustum, viewpos, id_arr); diff --git a/source/common b/source/common index 817245b1612ce3b347067f6f40f915b62652cde4..586727e022d85f3ab1552b93e69b1f7e3ff297cd 160000 --- a/source/common +++ b/source/common @@ -1 +1 @@ -Subproject commit 817245b1612ce3b347067f6f40f915b62652cde4 +Subproject commit 586727e022d85f3ab1552b93e69b1f7e3ff297cd diff --git a/source/game/PointCamera.cpp b/source/game/PointCamera.cpp index 8aa714eae512aefdbcda523901fb426146d58b56..fd1f95fdc7dce756ec0a291c0625b51ebadefc48 100644 --- a/source/game/PointCamera.cpp +++ b/source/game/PointCamera.cpp @@ -29,7 +29,7 @@ CPointCamera::~CPointCamera() mem_release(m_pSXC); } -ISXCamera * CPointCamera::getCamera() +ICamera * CPointCamera::getCamera() { return(m_pSXC); } diff --git a/source/game/PointCamera.h b/source/game/PointCamera.h index f8682e810cf3bc679e69a17dd573c0320c1a82b5..ed21f4fb31be8cf9964d554c2bbdc8728f41ffd3 100644 --- a/source/game/PointCamera.h +++ b/source/game/PointCamera.h @@ -30,10 +30,10 @@ public: ~CPointCamera(); //! Возвращает объект камеры из графической либы - ISXCamera * getCamera(); + ICamera * getCamera(); protected: - ISXCamera * m_pSXC; + ICamera * m_pSXC; void onSync(); }; diff --git a/source/game/sxgame.h b/source/game/sxgame.h index e8104bdb4781b242fe0b612a3f754e1a8bc842b1..ab66fb3529bb38d6040eeac91cac9914071e885f 100644 --- a/source/game/sxgame.h +++ b/source/game/sxgame.h @@ -215,7 +215,7 @@ SX_LIB_API void SXGame_RenderHUD(); SX_LIB_API void SXGame_EditorRender(ID id, ID id_sel_tex); -SX_LIB_API ISXCamera * SXGame_GetActiveCamera(); +SX_LIB_API ICamera * SXGame_GetActiveCamera(); /*! Получает количество зарегистрированных классов entity */ diff --git a/source/game/sxgame_dll.cpp b/source/game/sxgame_dll.cpp index 637fd1bc5228b5facdec3a85cdbe923baf626348..0d6b49a119e1d0c35bc3869269fcdfac645c5620 100644 --- a/source/game/sxgame_dll.cpp +++ b/source/game/sxgame_dll.cpp @@ -96,7 +96,7 @@ void ccmd_save_as(int argc, const char ** argv) } } -SX_LIB_API ISXCamera * SXGame_GetActiveCamera() +SX_LIB_API ICamera * SXGame_GetActiveCamera() { SG_PRECOND(NULL); return(GameData::m_pActiveCamera->getCamera()); diff --git a/source/gcore/LoaderTextures.cpp b/source/gcore/LoaderTextures.cpp index a3dbba57ad95567091458ab0b988f6621a21332e..3f485f092fc9d3e4aca29d6eacb7575e4859b1b6 100644 --- a/source/gcore/LoaderTextures.cpp +++ b/source/gcore/LoaderTextures.cpp @@ -6,27 +6,27 @@ See the license in LICENSE #include "LoaderTextures.h" -LoaderTextures::LoaderTextures() +�LoaderTextures::�LoaderTextures() { CurrFirstFree = -1; } -LoaderTextures::~LoaderTextures() +�LoaderTextures::~�LoaderTextures() { - for (int i = 0; i < ArrTextures.size(); i++) + for (int i = 0; i < m_aTextures.size(); i++) { - mem_delete(ArrTextures[i]); + mem_delete(m_aTextures[i]); } - ArrTextures.clear(); + m_aTextures.clear(); - for (int i = 0; i < Arr.size(); i++) + for (int i = 0; i < m_aPathes.size(); i++) { - mem_delete(Arr[i]); + mem_delete(m_aPathes[i]); } - Arr.clear(); + m_aPathes.clear(); } -bool LoaderTextures::FileExists(const char* name) +bool �LoaderTextures::fileExists(const char* name) { char tmppath[SXGC_LOADTEX_MAX_SIZE_FULLPATH]; char tmp_path[SXGC_LOADTEX_MAX_SIZE_DIR]; @@ -48,30 +48,31 @@ bool LoaderTextures::FileExists(const char* name) if (!IsTruePath) { - LibReport(REPORT_MSG_LEVEL_ERROR, "%s - wrong texture name [%s]!!!", GEN_MSG_LOCATION, name); + //LibReport(REPORT_MSG_LEVEL_ERROR, "%s - wrong texture name [%s]!!!", GEN_MSG_LOCATION, name); return false; } - sprintf(tmppath, "%s%s\\%s", Core_RStringGet(G_RI_STRING_PATH_GS_SHADERS), tmp_path, name); + sprintf(tmppath, "%s%s\\%s", Core_RStringGet(G_RI_STRING_PATH_GS_TEXTURES), tmp_path, name); return FileExistsFile(tmppath); } -void LoaderTextures::ClearLoaded() +void �LoaderTextures::clearLoaded() { int tmpcountdel = 0; - for (int i = 0; i < Arr.size(); ++i) + for (int i = 0; i < m_aPathes.size(); ++i) { - for (int k = 0; k < Arr[i]->ArrTex.size(); ++k) + for (int k = 0; k < m_aPathes[i]->m_aTextures.size(); ++k) { - if (Arr[i]->ArrTex[k]->type == LOAD_TEXTURE_TYPE_LOAD) + if (m_aPathes[i]->m_aTextures[k]->m_type == LOAD_TEXTURE_TYPE_LOAD) { - mem_release_del(ArrTextures[Arr[i]->ArrTex[k]->id]->tex); + mem_release_del(m_aTextures[m_aPathes[i]->m_aTextures[k]->m_id]->m_pTex2d); + mem_release_del(m_aTextures[m_aPathes[i]->m_aTextures[k]->m_id]->m_pTexCube); ++tmpcountdel; - if (CurrFirstFree > Arr[i]->ArrTex[k]->id) - CurrFirstFree = Arr[i]->ArrTex[k]->id; + if (CurrFirstFree > m_aPathes[i]->m_aTextures[k]->m_id) + CurrFirstFree = m_aPathes[i]->m_aTextures[k]->m_id; - mem_delete(Arr[i]->ArrTex[k]); - Arr[i]->ArrTex.erase(k); + mem_delete(m_aPathes[i]->m_aTextures[k]); + m_aPathes[i]->m_aTextures.erase(k); --k; } } @@ -80,33 +81,34 @@ void LoaderTextures::ClearLoaded() int qwert = 0; } -void LoaderTextures::Delete(ID id) +void �LoaderTextures::deleteTexture(ID id) { - if (!(id < ArrTextures.size() && id >= 0)) + if (!(id < m_aTextures.size() && id >= 0)) return; - if (ArrTextures[id]->tex == 0) + if (m_aTextures[id]->m_pTex2d == 0 || m_aTextures[id]->m_pTexCube == 0) return; - mem_release_del(ArrTextures[id]->tex); + mem_release_del(m_aTextures[id]->m_pTex2d); + mem_release_del(m_aTextures[id]->m_pTexCube); if (CurrFirstFree > id) CurrFirstFree = id; - TLPath* tmpp = Arr[ArrTextures[id]->IDDir]; + CPath* tmpp = m_aPathes[m_aTextures[id]->m_idDir]; - for (int i = 0; i < tmpp->ArrTex.size(); ++i) + for (int i = 0; i < tmpp->m_aTextures.size(); ++i) { - if (tmpp->ArrTex[i] && tmpp->ArrTex[i]->id == id) + if (tmpp->m_aTextures[i] && tmpp->m_aTextures[i]->m_id == id) { - mem_delete(tmpp->ArrTex[i]); - tmpp->ArrTex.erase(i); + mem_delete(tmpp->m_aTextures[i]); + tmpp->m_aTextures.erase(i); break; } } } -ID LoaderTextures::AddName(const char* name, LOAD_TEXTURE_TYPE type, ID* iddir, ID* idname) +ID �LoaderTextures::addName(const char* name, LOAD_TEXTURE_TYPE type, ID* iddir, ID* idname) { char tmp_path[SXGC_LOADTEX_MAX_SIZE_DIR];//����� char tmp_name[SXGC_LOADTEX_MAX_SIZE_NAME];//���� ��� ������� � ����������� @@ -132,9 +134,9 @@ ID LoaderTextures::AddName(const char* name, LOAD_TEXTURE_TYPE type, ID* iddir, int tmpkey = -1; //���������� � ������� ������ ���� �� ������� � ������� ���������� - for (int i = 0; i<Arr.size(); i++) + for (int i = 0; i<m_aPathes.size(); i++) { - if(strcmp(Arr[i]->Path.c_str(),tmp_path) == 0) + if (strcmp(m_aPathes[i]->m_sPath.c_str(), tmp_path) == 0) { tmpkey = i; break; @@ -144,20 +146,20 @@ ID LoaderTextures::AddName(const char* name, LOAD_TEXTURE_TYPE type, ID* iddir, //���� �� �� ����� ���������� ������ ���� �������� ... if(tmpkey == -1) { - tmpkey = Arr.size(); - Arr.push_back(new TLPath()); - Arr[tmpkey]->Path = tmp_path; + tmpkey = m_aPathes.size(); + m_aPathes.push_back(new CPath()); + m_aPathes[tmpkey]->m_sPath = tmp_path; } bool isunic = true; //��������� �������� �� ��� ��� �������� - for(int i=0;i<Arr[tmpkey]->ArrTex.size();i++) + for(int i=0;i<m_aPathes[tmpkey]->m_aTextures.size();i++) { - if(strcmp(Arr[tmpkey]->ArrTex[i]->name.c_str(),tmp_name) == 0) + if(strcmp(m_aPathes[tmpkey]->m_aTextures[i]->m_sName.c_str(),tmp_name) == 0) { isunic = false; - id = Arr[tmpkey]->ArrTex[i]->id; + id = m_aPathes[tmpkey]->m_aTextures[i]->m_id; if (idname) *idname = i; break; @@ -170,21 +172,21 @@ ID LoaderTextures::AddName(const char* name, LOAD_TEXTURE_TYPE type, ID* iddir, //���� ���������� �� ���������� if(isunic) { - if (CurrFirstFree + 1 == ArrTextures.size()) + if (CurrFirstFree + 1 == m_aTextures.size()) { - ArrTextures.push_back(new TexAndName()); - CurrFirstFree = id = ArrTextures.size() - 1; + m_aTextures.push_back(new CTexture()); + CurrFirstFree = id = m_aTextures.size() - 1; } else { - if (CurrFirstFree < 0 || ArrTextures[CurrFirstFree] != 0) + if (CurrFirstFree < 0 || m_aTextures[CurrFirstFree] != 0) { if (CurrFirstFree < 0) CurrFirstFree = 0; - for (int i = CurrFirstFree; i < ArrTextures.size(); ++i) + for (int i = CurrFirstFree; i < m_aTextures.size(); ++i) { - if (ArrTextures[i] == 0) + if (m_aTextures[i] == 0) { CurrFirstFree = i; break; @@ -200,22 +202,22 @@ ID LoaderTextures::AddName(const char* name, LOAD_TEXTURE_TYPE type, ID* iddir, if (type == LOAD_TEXTURE_TYPE_SELF) type = LOAD_TEXTURE_TYPE_LOAD; - Arr[tmpkey]->ArrTex.push_back(new TLPath::TLTex(id, tmp_name, type)); + m_aPathes[tmpkey]->m_aTextures.push_back(new CPath::CTex(id, tmp_name, type)); if (idname) - *idname = Arr[tmpkey]->ArrTex.size() - 1; + *idname = m_aPathes[tmpkey]->m_aTextures.size() - 1; - ArrTextures[id]->name = name; - ArrTextures[id]->IDDir = tmpkey; + m_aTextures[id]->m_sName = name; + m_aTextures[id]->m_idDir = tmpkey; if (type != LOAD_TEXTURE_TYPE_CUSTOM) - ArrIDsLoad.push_back(id); + m_aQueueToLoadIDs.push_back(id); } return id; } -ID LoaderTextures::GetID(const char* name) +ID �LoaderTextures::getID(const char* name) { char tmp_path[SXGC_LOADTEX_MAX_SIZE_DIR];//����� char tmp_name[SXGC_LOADTEX_MAX_SIZE_NAME];//���� ��� �������� � ����������� @@ -232,16 +234,16 @@ ID LoaderTextures::GetID(const char* name) } } - for (int i = 0; i<Arr.size(); i++) + for (int i = 0; i<m_aPathes.size(); i++) { - if(strcmp(Arr[i]->Path.c_str(),tmp_path) == 0) + if(strcmp(m_aPathes[i]->m_sPath.c_str(),tmp_path) == 0) { - for(int k=0;k<Arr[i]->ArrTex.size();k++) + for(int k=0;k<m_aPathes[i]->m_aTextures.size();k++) { - if(strcmp(Arr[i]->ArrTex[k]->name.c_str(),tmp_name) == 0) + if(strcmp(m_aPathes[i]->m_aTextures[k]->m_sName.c_str(),tmp_name) == 0) { - id = Arr[i]->ArrTex[k]->id; - i = Arr.size(); + id = m_aPathes[i]->m_aTextures[k]->m_id; + i = m_aPathes.size(); break; } } @@ -250,120 +252,192 @@ ID LoaderTextures::GetID(const char* name) return id; } -void LoaderTextures::GetName(ID id, char* name) +void �LoaderTextures::getName(ID id, char* name) { - if(id < ArrTextures.size()) + if(id < m_aTextures.size()) { - String tmpname = ArrTextures[id]->name; + String tmpname = m_aTextures[id]->m_sName; sprintf(name,"%s",tmpname.c_str()); } } -ID LoaderTextures::Create(const char* name, IDirect3DTexture9* tex) +ID �LoaderTextures::create(const char* name, IDirect3DTexture9* tex) { ID tmpkey, tmpKeyName; - ID id = this->AddName(name, LOAD_TEXTURE_TYPE_CUSTOM, &tmpkey, &tmpKeyName); - ArrTextures[id]->tex = tex; + ID id = addName(name, LOAD_TEXTURE_TYPE_CUSTOM, &tmpkey, &tmpKeyName); + m_aTextures[id]->m_pTex2d = tex; return id; } -void LoaderTextures::Update(ID id) +void �LoaderTextures::update(ID id) { - if(id < ArrTextures.size()) + if(id < m_aTextures.size()) { - Update(ArrTextures[id]->name.c_str(), LOAD_TEXTURE_TYPE_SELF); + update(m_aTextures[id]->m_sName.c_str(), LOAD_TEXTURE_TYPE_SELF); } } -ID LoaderTextures::Update(const char* name, LOAD_TEXTURE_TYPE type) +ID �LoaderTextures::update(const char* name, LOAD_TEXTURE_TYPE type) { ID tmpkey, tmpKeyName; - ID id = AddName(name, type, &tmpkey, &tmpKeyName); + ID id = addName(name, type, &tmpkey, &tmpKeyName); //LibReport(0,"update texture [%s] ...",name); char tmpPath[SXGC_LOADTEX_MAX_SIZE_FULLPATH]; - sprintf(tmpPath, "%s%s%s%s%s%s", Core_RStringGet(G_RI_STRING_PATH_GS_TEXTURES), Arr[tmpkey]->Path.c_str(), "\\", Arr[tmpkey]->Path.c_str(), "_", Arr[tmpkey]->ArrTex[tmpKeyName]->name.c_str()); - IDirect3DTexture9* tex=0; - if(FAILED(D3DXCreateTextureFromFileEx( - g_pDXDevice, - tmpPath, - D3DX_DEFAULT, - D3DX_DEFAULT, - SXGC_LOADTEX_COUNT_MIPMAP, - 0, - SXGC_LOADTEX_FORMAT_TEX, - D3DPOOL_MANAGED, - D3DX_FILTER_BOX, - D3DX_FILTER_BOX, 0, 0, 0, &tex - ) - ) - ) - { + sprintf(tmpPath, "%s%s%s%s%s%s", Core_RStringGet(G_RI_STRING_PATH_GS_TEXTURES), m_aPathes[tmpkey]->m_sPath.c_str(), "\\", m_aPathes[tmpkey]->m_sPath.c_str(), "_", m_aPathes[tmpkey]->m_aTextures[tmpKeyName]->m_sName.c_str()); + + if (getTypeFileTex(tmpPath) == D3DRTYPE_TEXTURE) + { + IDirect3DTexture9 *pTex = loadTexture2d(tmpPath); + + if (pTex == 0) LibReport(REPORT_MSG_LEVEL_ERROR, "%s - not found texture [%s]", GEN_MSG_LOCATION, tmpPath); - } else - { - ArrTextures[Arr[tmpkey]->ArrTex[tmpKeyName]->id]->tex = tex; - //LibReport(0, "is ok\n"); - } + m_aTextures[m_aPathes[tmpkey]->m_aTextures[tmpKeyName]->m_id]->m_pTex2d = pTex; + } + else if (getTypeFileTex(tmpPath) == D3DRTYPE_CUBETEXTURE) + { + IDirect3DCubeTexture9 *pTex = loadTextureCube(tmpPath); + + if (pTex == 0) + LibReport(REPORT_MSG_LEVEL_ERROR, "%s - not found texture [%s]", GEN_MSG_LOCATION, tmpPath); + else + m_aTextures[m_aPathes[tmpkey]->m_aTextures[tmpKeyName]->m_id]->m_pTexCube = pTex; + } return id; } -void LoaderTextures::LoadTextures() +void �LoaderTextures::loadTextures() { - if (ArrIDsLoad.size() <= 0) + if (m_aQueueToLoadIDs.size() <= 0) return; LibReport(REPORT_MSG_LEVEL_NOTICE, "load textures ...\n"); char tmpPath[SXGC_LOADTEX_MAX_SIZE_FULLPATH]; ID tmpiddir; int iCountLoaded = 0; - for (int i = 0; i<ArrIDsLoad.size(); i++) + for (int i = 0; i<m_aQueueToLoadIDs.size(); i++) { - tmpiddir = ArrTextures[ArrIDsLoad[i]]->IDDir; - TLPath* tmpdir = Arr[tmpiddir]; - sprintf(tmpPath, "%s%s%s%s", Core_RStringGet(G_RI_STRING_PATH_GS_TEXTURES), Arr[tmpiddir]->Path.c_str(), "\\", ArrTextures[ArrIDsLoad[i]]->name.c_str()); - IDirect3DTexture9* tex = 0; + tmpiddir = m_aTextures[m_aQueueToLoadIDs[i]]->m_idDir; + CPath* tmpdir = m_aPathes[tmpiddir]; + sprintf(tmpPath, "%s%s%s%s", Core_RStringGet(G_RI_STRING_PATH_GS_TEXTURES), m_aPathes[tmpiddir]->m_sPath.c_str(), "\\", m_aTextures[m_aQueueToLoadIDs[i]]->m_sName.c_str()); - if (FAILED(D3DXCreateTextureFromFileEx( - g_pDXDevice, - tmpPath, - D3DX_DEFAULT, - D3DX_DEFAULT, - SXGC_LOADTEX_COUNT_MIPMAP, - 0, - SXGC_LOADTEX_FORMAT_TEX, - D3DPOOL_MANAGED, - D3DX_FILTER_BOX, - D3DX_FILTER_BOX, 0, 0, 0, &tex - ))) + if (getTypeFileTex(tmpPath) == D3DRTYPE_TEXTURE) { - ArrTextures[ArrIDsLoad[i]]->tex = 0; - LibReport(REPORT_MSG_LEVEL_WARNING, " not found [%s]\n", ArrTextures[ArrIDsLoad[i]]->name.c_str()); + IDirect3DTexture9 *pTex = loadTexture2d(tmpPath); + + if (pTex == 0) + { + m_aTextures[m_aQueueToLoadIDs[i]]->m_pTex2d = 0; + LibReport(REPORT_MSG_LEVEL_WARNING, " not found [%s]\n", m_aTextures[m_aQueueToLoadIDs[i]]->m_sName.c_str()); + } + else + { + m_aTextures[m_aQueueToLoadIDs[i]]->m_pTex2d = pTex; + LibReport(REPORT_MSG_LEVEL_NOTICE, " texture id [%d], [%s]\n", m_aQueueToLoadIDs[i], m_aTextures[m_aQueueToLoadIDs[i]]->m_sName.c_str()); + ++iCountLoaded; + } } - else + else if (getTypeFileTex(tmpPath) == D3DRTYPE_CUBETEXTURE) { - ArrTextures[ArrIDsLoad[i]]->tex = tex; - LibReport(REPORT_MSG_LEVEL_NOTICE, " texture id [%d], [%s]\n", ArrIDsLoad[i], ArrTextures[ArrIDsLoad[i]]->name.c_str()); - ++iCountLoaded; + IDirect3DCubeTexture9 *pTex = loadTextureCube(tmpPath); + + if (pTex == 0) + { + m_aTextures[m_aQueueToLoadIDs[i]]->m_pTex2d = 0; + LibReport(REPORT_MSG_LEVEL_WARNING, " not found [%s]\n", m_aTextures[m_aQueueToLoadIDs[i]]->m_sName.c_str()); + } + else + { + m_aTextures[m_aQueueToLoadIDs[i]]->m_pTexCube = pTex; + LibReport(REPORT_MSG_LEVEL_NOTICE, " texture id [%d], [%s]\n", m_aQueueToLoadIDs[i], m_aTextures[m_aQueueToLoadIDs[i]]->m_sName.c_str()); + ++iCountLoaded; + } } } - ArrIDsLoad.clear(); - LibReport(REPORT_MSG_LEVEL_NOTICE, "all loaded textures [%d]\n", ArrTextures.size()); + m_aQueueToLoadIDs.clear(); + LibReport(REPORT_MSG_LEVEL_NOTICE, "all loaded textures [%d]\n", m_aTextures.size()); } -IDirect3DTexture9* LoaderTextures::GetTexture(ID id) +IDirect3DTexture9* �LoaderTextures::getTexture2d(ID id) { - if(id < ArrTextures.size()) + if(id < m_aTextures.size()) { - /*IDirect3DTexture9* tex = ArrTextures[id]->tex; - if (tex == 0) - int qwert = 0;*/ - return ArrTextures[id]->tex; + return m_aTextures[id]->m_pTex2d; } else return 0; +} + +IDirect3DCubeTexture9* �LoaderTextures::getTextureCube(ID id) +{ + if (id < m_aTextures.size()) + { + return m_aTextures[id]->m_pTexCube; + } + else + return 0; +} + +bool �LoaderTextures::addConstAllInDir(const char *szDir) +{ + Array<String> aPathes = FileGetListFiles((String(Core_RStringGet(G_RI_STRING_PATH_GS_TEXTURES)) + szDir + "/*.dds").c_str()); + + for (int i = 0, il = aPathes.size(); i < il; ++i) + { + addName(aPathes[i].c_str(), LOAD_TEXTURE_TYPE_CONST); + } + + return (aPathes.size() > 0); +} + +//########################################################################## + +IDirect3DTexture9* �LoaderTextures::loadTexture2d(const char *szPath) +{ + IDirect3DTexture9 *pTex = 0; + D3DXCreateTextureFromFileEx( + g_pDXDevice, + szPath, + D3DX_DEFAULT, + D3DX_DEFAULT, + SXGC_LOADTEX_COUNT_MIPMAP, + 0, + SXGC_LOADTEX_FORMAT_TEX, + D3DPOOL_MANAGED, + D3DX_FILTER_BOX, + D3DX_FILTER_BOX, 0, 0, 0, &pTex + ); + + return pTex; +} + +IDirect3DCubeTexture9* �LoaderTextures::loadTextureCube(const char *szPath) +{ + IDirect3DCubeTexture9 *pTex = 0; + D3DXCreateCubeTextureFromFileEx( + g_pDXDevice, + szPath, + D3DX_DEFAULT, + SXGC_LOADTEX_COUNT_MIPMAP, + 0, + SXGC_LOADTEX_FORMAT_TEX, + D3DPOOL_MANAGED, + D3DX_FILTER_BOX, + D3DX_FILTER_BOX, 0, 0, 0, &pTex + ); + + return pTex; +} + +D3DRESOURCETYPE �LoaderTextures::getTypeFileTex(const char *szPath) +{ + D3DXIMAGE_INFO oTexInfo; + memset(&oTexInfo, 0, sizeof(D3DXIMAGE_INFO)); + + D3DXGetImageInfoFromFile(szPath, &oTexInfo); + return oTexInfo.ResourceType; } \ No newline at end of file diff --git a/source/gcore/LoaderTextures.h b/source/gcore/LoaderTextures.h index 10619669de54a507933871a945b05c178a12f93c..b2c432ad54aa60b071309b31cae0fb95eba388d3 100644 --- a/source/gcore/LoaderTextures.h +++ b/source/gcore/LoaderTextures.h @@ -18,74 +18,131 @@ void LibReport(int iLevel, const char *szFormat, ...); extern IDirect3DDevice9 *g_pDXDevice; extern D3DPRESENT_PARAMETERS g_oD3DAPP; -class LoaderTextures +//! ��������� ������� +class �LoaderTextures { public: - LoaderTextures(); - ~LoaderTextures(); + �LoaderTextures(); + ~�LoaderTextures(); - bool FileExists(const char* name); + //! ���������� �� �������� �� ����� + bool fileExists(const char *szName); - void ClearLoaded(); + //! ������� ��� ����������� �������� + void clearLoaded(); - void Delete(ID id); //������� �������� id + //! ������� �������� id + void deleteTexture(ID id); - ID AddName(const char* name, LOAD_TEXTURE_TYPE type, ID* iddir = 0, ID* idname = 0); //��������� ��� ��������, ������ �������� �� ��� ID (��������� � �������) - ID GetID(const char* name); //�������� id �� ����� - void GetName(ID id, char* name);//�������� ��� �� id + //! ��������� ��� ��������, ������ �������� �� ��� ID (��������� � �������) + ID addName(const char *szName, LOAD_TEXTURE_TYPE type, ID *pIDdir = 0, ID *pIDname = 0); - ID Create(const char* name, IDirect3DTexture9* tex); //������� ����� ��� �������� tex - ID Update(const char* name, LOAD_TEXTURE_TYPE type); //������������� �������� name - void Update(ID id); + //! �������� id �� ����� + ID getID(const char *szName); - void LoadTextures(); //�������� ���� ������� ������������ � ������� + //�������� ��� �� id + void getName(ID id, char *szName); - IDirect3DTexture9* GetTexture(ID id);//�������� �������� �� id + //! ������� ����� ��� �������� tex + ID create(const char *szName, IDirect3DTexture9 *pTex); + + //! ������������� �������� name + ID update(const char *szName, LOAD_TEXTURE_TYPE type); + + //! ������������� �������� �� id + void update(ID id); + + //! �������� ���� ������� ������������ � ������� + void loadTextures(); + + //! �������� �������� �� id + IDirect3DTexture9* getTexture2d(ID id); + + //! �������� �������� �� id + IDirect3DCubeTexture9* getTextureCube(ID id); + + //! ��������� ��� �������� �� ���������� szDir (������������ ���������� �������) � ��������� �� ������ ����������� + bool addConstAllInDir(const char *szDir); private: - //��������� ����������� ����� � ��� �������� � ���, � ������ ���� id ��� ������� - struct TLPath + //! ��������� ����������� ����� � ��� �������� � ���, � ������ ���� id ��� ������� + struct CPath { - TLPath(){} - ~TLPath() + CPath(){} + ~CPath() { - for (int i = 0; i < ArrTex.size(); ++i) + for (int i = 0; i < m_aTextures.size(); ++i) { - mem_delete(ArrTex[i]); + mem_delete(m_aTextures[i]); } + m_aTextures.clear(); } - String Path; //��� ����� + //! ��� ����� + String m_sPath; - struct TLTex + //! ������� ������������� �������� + struct CTex { - TLTex(){ id = -1; type = LOAD_TEXTURE_TYPE_LOAD; } - TLTex(ID _id, const char* _name, LOAD_TEXTURE_TYPE _type){ id = _id; name = _name; type = _type; } + CTex(){ m_id = -1; m_type = LOAD_TEXTURE_TYPE_LOAD; } + CTex(ID id, const char *szNname, LOAD_TEXTURE_TYPE type){ m_id = id; m_sName = szNname; m_type = type; } - ID id; - String name; - LOAD_TEXTURE_TYPE type; + //! ���������� ������������� + ID m_id; + + //! ��� �������� + String m_sName; + + //! ��� #LOAD_TEXTURE_TYPE + LOAD_TEXTURE_TYPE m_type; }; - Array<TLTex*> ArrTex; + Array<CTex*> m_aTextures; }; - struct TexAndName + //! ������������� �������� + struct CTexture { - TexAndName(){ tex = 0; IDDir = -1; } - ~TexAndName(){ mem_release(tex); } - String name; - IDirect3DTexture9* tex; - ID IDDir; - + CTexture(){ m_pTex2d = 0; m_pTexCube = 0; m_idDir = -1; } + ~CTexture(){ mem_release(m_pTex2d); mem_release(m_pTexCube); } + + //! ��� + String m_sName; + + //! 2� �������� + IDirect3DTexture9 *m_pTex2d; + + //! ���������� �������� + IDirect3DCubeTexture9 *m_pTexCube; + + //! ���������� id ���������� + ID m_idDir; }; - Array<TLPath*> Arr; + //********************************************************************** + + //! ������ ����� � ���������� + Array<CPath*> m_aPathes; + int CurrFirstFree; - Array<TexAndName*> ArrTextures; - Array<ID> ArrIDsLoad; + //! ������ �������, ���� == ������������� + Array<CTexture*> m_aTextures; + + //! ������ id ������� �� �������� + Array<ID> m_aQueueToLoadIDs; + + //********************************************************************** + + //! �������� 2d �������� + IDirect3DTexture9* loadTexture2d(const char *szPath); + + //! �������� ���������� �������� + IDirect3DCubeTexture9* loadTextureCube(const char *szPath); + + //! ���������� ��� ����� �������� + D3DRESOURCETYPE getTypeFileTex(const char *szPath); }; #endif \ No newline at end of file diff --git a/source/gcore/bound.cpp b/source/gcore/bound.cpp index 751bf1c43e20061996a191eaff4e7dd2943af76f..968f387b1ccd08dac20fd8613cfec0c6e1761393 100644 --- a/source/gcore/bound.cpp +++ b/source/gcore/bound.cpp @@ -424,7 +424,7 @@ void ComputeBoundingBoxArr4(ISXBound* bound, ISXBound** bound_arr) //########################################################################## -bool InPosition2D(float3* min,float3* max,float3* pos) +bool InPosition2D(const float3* min, const float3* max, const float3* pos) { if((max->x >= pos->x && min->x <= pos->x) && (max->z >= pos->z && min->z <= pos->z)) return true; @@ -554,7 +554,7 @@ bool InPositionPoints3D(float3* min,float3* max,float3* p1,float3* p2,float3* p3 //########################################################################## -void CreateBoundingBoxMesh(float3* min, float3* max, ID3DXMesh** bbmesh, IDirect3DDevice9* device) +void CreateBoundingBoxMesh(const float3* min, const float3* max, ID3DXMesh** bbmesh, IDirect3DDevice9* device) { float dist_x = abs(max->x - min->x); float dist_y = abs(max->y - min->y); diff --git a/source/gcore/bound.h b/source/gcore/bound.h index 7cd66b7d17ecbfd62215310c9de0ae508c5a744c..917f6185a2282efffba3ee91224372fed62ad171 100644 --- a/source/gcore/bound.h +++ b/source/gcore/bound.h @@ -16,7 +16,7 @@ void CreateCone(float fTopRadius, float fBottomRadius, float fHeight, ID3DXMesh void ComputeBoundingBox(IDirect3DVertexBuffer9* vertex_buffer,ISXBound** bound,DWORD count_vert,DWORD bytepervert); void ComputeBoundingBox2(IDirect3DVertexBuffer9* vertex_buffer,ISXBound* bound,DWORD count_vert,DWORD bytepervert); -bool InPosition2D(float3* min,float3* max,float3* pos); +bool InPosition2D(const float3* min, const float3* max, const float3* pos); bool InPositionAbs2D(float3* min,float3* max,float3* pos); int CountPositionPoints2D(float3* min,float3* max,float3* p1,float3* p2,float3* p3); @@ -33,7 +33,7 @@ bool InPositionPoints3D(float3* min,float3* max,float3* p1,float3* p2,float3* p3 void ComputeBoundingBoxArr8(ISXBound* bound,ISXBound** bound_arr); void ComputeBoundingBoxArr4(ISXBound* bound,ISXBound** bound_arr); -void CreateBoundingBoxMesh(float3* min, float3* max, ID3DXMesh** bbmesh, IDirect3DDevice9* device); +void CreateBoundingBoxMesh(const float3* min, const float3* max, ID3DXMesh** bbmesh, IDirect3DDevice9* device); //������� ������ � ����������� ��������� //��� ����������� ������������� ���������� ������� ���������� �������/�������/������� ����� ���� CalculateWorld diff --git a/source/gcore/camera.cpp b/source/gcore/camera.cpp index 2532e2c2b23e4d87e4a3db06468e0e873294ff37..32764f242c70db044ef274fccd6f133ceb840392 100644 --- a/source/gcore/camera.cpp +++ b/source/gcore/camera.cpp @@ -337,7 +337,7 @@ void CCamera::updateFrustum(const float4x4 *pProjection) m_oFrustum.update(&m_mView, pProjection); } -const ISXFrustum* CCamera::getFrustum() +const IFrustum* CCamera::getFrustum() { return &m_oFrustum; } \ No newline at end of file diff --git a/source/gcore/camera.h b/source/gcore/camera.h index be7842ec5a1e3cf9a5c7ef6e51cc127363b090a7..955639825ce4120240566c930a7a0fe4547e9946 100644 --- a/source/gcore/camera.h +++ b/source/gcore/camera.h @@ -10,7 +10,7 @@ See the license in LICENSE #include "sxgcore.h" //����� ����������� ������� -class CFrustum : public virtual ISXFrustum +class CFrustum : public virtual IFrustum { public: CFrustum(); @@ -38,7 +38,7 @@ public: private: - CSXFrustumPlane m_aFrustumPlanes[6]; + CFrustumPlane m_aFrustumPlanes[6]; float3 m_aPoints[8]; float3 m_vCenter; @@ -46,7 +46,7 @@ private: //************************************************************************** -class CCamera : public virtual ISXCamera +class CCamera : public virtual ICamera { public: CCamera (); @@ -86,7 +86,7 @@ public: void updateView(); void updateFrustum(const float4x4 *pmProjection); - const ISXFrustum* getFrustum(); + const IFrustum* getFrustum(); protected: CFrustum m_oFrustum; //!< ������� ���� ������ diff --git a/source/gcore/sky.cpp b/source/gcore/sky.cpp index bf211490c4004eec8b1abb5bba082b2f4197cddf..9c978cc97c2867316d53986f67581df01614e959 100644 --- a/source/gcore/sky.cpp +++ b/source/gcore/sky.cpp @@ -8,9 +8,6 @@ See the license in LICENSE CSkyBox::CSkyBox() { - m_szTexActive[0] = 0; - m_szTexSecond[0] = 0; - D3DVERTEXELEMENT9 layoutskybox[] = { { 0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 }, @@ -93,11 +90,11 @@ CSkyBox::CSkyBox() m_pIndeces->Unlock(); - m_pTexture = 0; - m_pTexture2 = 0; + m_idTex1 = -1; + m_idTex2 = -1; m_isChange = false; - m_isChangeMainTex = false; + //m_isChangeMainTex = false; m_fFactorBlend = 0.0f; }; @@ -106,62 +103,64 @@ CSkyBox::~CSkyBox() mem_release_del(m_pVertices); mem_release_del(m_pIndeces); - mem_release_del(m_pTexture); - mem_release_del(m_pTexture2); - mem_release_del(m_pVertexDeclarationSkyBox); } -void CSkyBox::loadTextures(const char *texture) +void CSkyBox::loadTexture(const char *texture) { - mem_release_del(m_pTexture); + m_idTex1 = 0; if (!texture) { - mem_release_del(m_pTexture2); + m_idTex2 = 0; m_isChange = false; - m_isChangeMainTex = false; + //m_isChangeMainTex = false; m_fFactorBlend = 0.0f; return; } - char tmppath[1024]; - sprintf(tmppath, "%s%s", Core_RStringGet(G_RI_STRING_PATH_GS_TEXTURES), texture); - if (FAILED(D3DXCreateCubeTextureFromFile(g_pDXDevice, tmppath, &m_pTexture))) - { - LibReport(REPORT_MSG_LEVEL_ERROR, "%s - failed load cube texture '%s'", GEN_MSG_LOCATION, tmppath); - } + m_idTex1 = SGCore_LoadTexAddName(texture, LOAD_TEXTURE_TYPE_CONST); + + if (m_idTex1 == -1) + LibReport(REPORT_MSG_LEVEL_ERROR, "%s - failed load texture '%s'", GEN_MSG_LOCATION, texture); } bool CSkyBox::isLoadTex() { - return (m_pTexture != 0 || m_pTexture2 != 0); + return (m_idTex1 != -1 || m_idTex2 != -1); } void CSkyBox::changeTexture(const char *texture) { - mem_release_del((m_isChangeMainTex ? m_pTexture : m_pTexture2)); - char tmpsb1[1024]; - sprintf(tmpsb1, "%s%s", Core_RStringGet(G_RI_STRING_PATH_GS_TEXTURES), texture); - if (!FAILED(D3DXCreateCubeTextureFromFile(g_pDXDevice, tmpsb1, (m_isChangeMainTex ? &m_pTexture : &m_pTexture2)))) - m_isChange = true; - else - { - LibReport(REPORT_MSG_LEVEL_ERROR, "%s - failed load cube texture '%s'", GEN_MSG_LOCATION, tmpsb1); - } + ID idNew = -1; + if (/*m_isChangeMainTex*/m_isChange) + { + m_idTex1 = SGCore_LoadTexAddName(texture, LOAD_TEXTURE_TYPE_CONST); + idNew = m_idTex1; + } + else + { + m_idTex2 = SGCore_LoadTexAddName(texture, LOAD_TEXTURE_TYPE_CONST); + idNew = m_idTex2; + } + + if (idNew != -1) + m_isChange = true; + else + LibReport(REPORT_MSG_LEVEL_ERROR, "%s - failed load texture '%s'", GEN_MSG_LOCATION, texture); } void CSkyBox::getActiveTexture(char *texture) { if (texture) - strcpy(texture, m_szTexActive); + SGCore_LoadTexGetName((/*m_isChangeMainTex*/m_isChange ? m_idTex2 : m_idTex1), texture); } void CSkyBox::getSecondTexture(char *texture) { if (texture) - strcpy(texture, m_szTexSecond); + SGCore_LoadTexGetName((/*m_isChangeMainTex*/m_isChange ? m_idTex1 : m_idTex2), texture); } void CSkyBox::setRotation(float angle) @@ -192,11 +191,8 @@ void CSkyBox::render(float timeDelta, const float3* pos,bool is_shadow) float4x4 World = m_mMatRotation * SMMatrixTranslation(pos->x, pos->y, pos->z); - //D3DXMATRIX tmpdxView, tmpdxProjection; - //g_pDXDevice->GetTransform(D3DTS_PROJECTION, &tmpdxProjection); - //g_pDXDevice->GetTransform(D3DTS_VIEW, &tmpdxView); - float4x4 View;// = float4x4(tmpdxView); - float4x4 Proj;// = float4x4(tmpdxProjection); + float4x4 View; + float4x4 Proj; Core_RMatrixGet(G_RI_MATRIX_VIEW, &View); Core_RMatrixGet(G_RI_MATRIX_PROJECTION, &Proj); @@ -208,19 +204,19 @@ void CSkyBox::render(float timeDelta, const float3* pos,bool is_shadow) if (m_isChange && m_fFactorBlend >= 1.0) { m_fFactorBlend = 0.0; - m_isChangeMainTex = !m_isChangeMainTex; + //m_isChangeMainTex = !m_isChangeMainTex; m_isChange = false; } - if (m_isChangeMainTex) + if (/*m_isChangeMainTex*/m_isChange) { - g_pDXDevice->SetTexture(0, m_pTexture2); - g_pDXDevice->SetTexture(1, m_pTexture); + g_pDXDevice->SetTexture(0, SGCore_LoadTexGetTexCube(m_idTex2)); + g_pDXDevice->SetTexture(1, SGCore_LoadTexGetTexCube(m_idTex1)); } else { - g_pDXDevice->SetTexture(0, m_pTexture); - g_pDXDevice->SetTexture(1, m_pTexture2); + g_pDXDevice->SetTexture(0, SGCore_LoadTexGetTexCube(m_idTex1)); + g_pDXDevice->SetTexture(1, SGCore_LoadTexGetTexCube(m_idTex2)); } SGCore_ShaderSetVRF(SHADER_TYPE_VERTEX, m_idVS, "WorldViewProjection", &WVP); @@ -265,7 +261,7 @@ CSkyClouds::CSkyClouds() 0, 0, D3DPOOL_MANAGED, - &m_pSkyCloudsVertices, + &m_pVertices, 0 ); @@ -274,21 +270,22 @@ CSkyClouds::CSkyClouds() 0, D3DFMT_INDEX16, D3DPOOL_MANAGED, - &m_pSkyCloudsIndeces, + &m_pIndeces, 0); float X = 800; float Y = 0; float Z = 800; - m_pSkyCloudsVertices->Lock(0, 0, (void**)&m_pVertices, 0); + CSkyCloudsVertex *pVertices; + m_pVertices->Lock(0, 0, (void**)&pVertices, 0); - m_pVertices[3] = CSkyCloudsVertex(-X, Y, -Z, 0.0f, 2.0f); - m_pVertices[2] = CSkyCloudsVertex(-X, Y, Z, 0.0f, 0.0f); - m_pVertices[1] = CSkyCloudsVertex(X, Y, Z, 2.0f, 0.0f); - m_pVertices[0] = CSkyCloudsVertex(X, Y, -Z, 2.0f, 2.0f); + pVertices[3] = CSkyCloudsVertex(-X, Y, -Z, 0.0f, 2.0f); + pVertices[2] = CSkyCloudsVertex(-X, Y, Z, 0.0f, 0.0f); + pVertices[1] = CSkyCloudsVertex(X, Y, Z, 2.0f, 0.0f); + pVertices[0] = CSkyCloudsVertex(X, Y, -Z, 2.0f, 2.0f); - m_pSkyCloudsVertices->Unlock(); + m_pVertices->Unlock(); WORD indices_tmp[] = @@ -299,50 +296,55 @@ CSkyClouds::CSkyClouds() WORD* indices = 0; - m_pSkyCloudsIndeces->Lock(0, 0, (void**)&indices, 0); + m_pIndeces->Lock(0, 0, (void**)&indices, 0); memcpy(indices,indices_tmp,6 * sizeof(WORD)); - m_pSkyCloudsIndeces->Unlock(); + m_pIndeces->Unlock(); m_fBias = 0.f; m_fSpeed = 0.01f; - m_pSkyCloudsTex = 0; - m_pSkyCloudsTex2 = 0; + m_idTex1 = -1; + m_idTex1 = -1; m_isChange = false; - m_isChangeMainTex = false; + //m_isChangeMainTex = false; m_fFactorBlend = 0.0f; } CSkyClouds::~CSkyClouds() { - mem_release_del(m_pSkyCloudsTex); - mem_release_del(m_pSkyCloudsTex2); - - mem_release_del(m_pSkyCloudsVertices); - mem_release_del(m_pSkyCloudsIndeces); + mem_release_del(m_pVertices); + mem_release_del(m_pIndeces); mem_release_del(m_pVertexDeclarationClouds); } void CSkyClouds::changeTexture(const char *texture) { - mem_release_del((m_isChangeMainTex ? m_pSkyCloudsTex : m_pSkyCloudsTex2)); - char tmpsb1[1024]; - sprintf(tmpsb1, "%s%s", Core_RStringGet(G_RI_STRING_PATH_GS_TEXTURES), texture); - if (!FAILED(D3DXCreateTextureFromFile(g_pDXDevice, tmpsb1, (m_isChangeMainTex ? &m_pSkyCloudsTex : &m_pSkyCloudsTex2)))) - m_isChange = true; - else - { - LibReport(REPORT_MSG_LEVEL_ERROR, "%s - failed load texture '%s'", GEN_MSG_LOCATION, tmpsb1); - } + ID idNew; + if (/*m_isChangeMainTex*/m_isChange) + { + m_idTex1 = SGCore_LoadTexAddName(texture, LOAD_TEXTURE_TYPE_CONST); + idNew = m_idTex1; + } + else + { + m_idTex2 = SGCore_LoadTexAddName(texture, LOAD_TEXTURE_TYPE_CONST); + idNew = m_idTex2; + } + + if (idNew != -1) + m_isChange = true; + else + LibReport(REPORT_MSG_LEVEL_ERROR, "%s - failed load texture '%s'", GEN_MSG_LOCATION, texture); } void CSkyClouds::setWidthHeightPos(float width,float height, const float3* pos) { - m_pSkyCloudsVertices->Lock(0, 0, (void**)&m_pVertices, 0); + CSkyCloudsVertex *pVertices; + m_pVertices->Lock(0, 0, (void**)&pVertices, 0); float X = pos->x + (width*0.5f); float Y = pos->y; @@ -353,12 +355,12 @@ void CSkyClouds::setWidthHeightPos(float width,float height, const float3* pos) //float2_t tmpwh = float2_t(width*0.5f,height*0.5f); - m_pVertices[3] = CSkyCloudsVertex(-X, Y, -Z, 0.0f, 2.0f); - m_pVertices[2] = CSkyCloudsVertex(-X, Y, Z, 0.0f, 0.0f); - m_pVertices[1] = CSkyCloudsVertex(X, Y, Z, 2.0f, 0.0f); - m_pVertices[0] = CSkyCloudsVertex(X, Y, -Z, 2.0f, 2.0f); + pVertices[3] = CSkyCloudsVertex(-X, Y, -Z, 0.0f, 2.0f); + pVertices[2] = CSkyCloudsVertex(-X, Y, Z, 0.0f, 0.0f); + pVertices[1] = CSkyCloudsVertex(X, Y, Z, 2.0f, 0.0f); + pVertices[0] = CSkyCloudsVertex(X, Y, -Z, 2.0f, 2.0f); - m_pSkyCloudsVertices->Unlock(); + m_pVertices->Unlock(); } void CSkyClouds::setRotation(float angle) @@ -402,31 +404,29 @@ float CSkyClouds::getSpeed() return m_fSpeed; } -void CSkyClouds::loadTextures(const char *texture) +void CSkyClouds::loadTexture(const char *texture) { - mem_release_del(m_pSkyCloudsTex); + m_idTex1 = 0; if (!texture) { - mem_release_del(m_pSkyCloudsTex2); + m_idTex2 = 0; m_isChange = false; - m_isChangeMainTex = false; + //m_isChangeMainTex = false; m_fFactorBlend = 0.0f; return; } - char tmppath[1024]; - sprintf(tmppath, "%s%s", Core_RStringGet(G_RI_STRING_PATH_GS_TEXTURES), texture); - if (FAILED(D3DXCreateTextureFromFile(g_pDXDevice, tmppath, &m_pSkyCloudsTex))) - { - LibReport(REPORT_MSG_LEVEL_ERROR, "%s - failed load texture '%s'", GEN_MSG_LOCATION, tmppath); - } + m_idTex1 = SGCore_LoadTexAddName(texture, LOAD_TEXTURE_TYPE_CONST); + + if (m_idTex1 == -1) + LibReport(REPORT_MSG_LEVEL_ERROR, "%s - failed load texture '%s'", GEN_MSG_LOCATION, texture); } bool CSkyClouds::isLoadTex() { - return (m_pSkyCloudsTex != 0 || m_pSkyCloudsTex2 != 0); + return (m_idTex1 != -1 || m_idTex2 != -1); } void CSkyClouds::render(DWORD timeDelta, const float3* pos,bool is_shadow) @@ -439,32 +439,30 @@ void CSkyClouds::render(DWORD timeDelta, const float3* pos,bool is_shadow) if (m_fBias >= 2.f) m_fBias = 0.f; - //float4x4 World = SMMatrixTranslation(Core::Data::ConstCurrentCameraPosition.x, Core::Data::ConstCurrentCameraPosition.y+50, Core::Data::ConstCurrentCameraPosition.z); - //float4x4 World = SMMatrixTranslation(pos->x, pos->y+50, pos->z); float4x4 World = SMMatrixTranslation(0, pos->y, 0); if (m_isChange && m_fFactorBlend >= 1.0) - { + { m_fFactorBlend = 0.0; - m_isChangeMainTex = !m_isChangeMainTex; - m_isChange = false; - } + //m_isChangeMainTex = !m_isChangeMainTex; + m_isChange = false; + } - if (m_isChangeMainTex) + if (/*m_isChangeMainTex*/m_isChange) { - g_pDXDevice->SetTexture(0, m_pSkyCloudsTex2); - g_pDXDevice->SetTexture(1, m_pSkyCloudsTex); + g_pDXDevice->SetTexture(0, SGCore_LoadTexGetTex(m_idTex2)); + g_pDXDevice->SetTexture(1, SGCore_LoadTexGetTex(m_idTex1)); } else { - g_pDXDevice->SetTexture(0, m_pSkyCloudsTex); - g_pDXDevice->SetTexture(1, m_pSkyCloudsTex2); + g_pDXDevice->SetTexture(0, SGCore_LoadTexGetTex(m_idTex1)); + g_pDXDevice->SetTexture(1, SGCore_LoadTexGetTex(m_idTex2)); } if(!is_shadow) { - float4x4 View;// = float4x4(tmpdxView); - float4x4 Proj;// = float4x4(tmpdxProjection); + float4x4 View; + float4x4 Proj; Core_RMatrixGet(G_RI_MATRIX_VIEW, &View); Core_RMatrixGet(G_RI_MATRIX_PROJECTION, &Proj); @@ -482,7 +480,7 @@ void CSkyClouds::render(DWORD timeDelta, const float3* pos,bool is_shadow) } else { - float4x4 ViewProj;// = float4x4(tmpdxViewProj); + float4x4 ViewProj; Core_RMatrixGet(G_RI_MATRIX_VIEWPROJ, &ViewProj); float4x4 WVP = (m_mMatRotation * World) * ViewProj; @@ -490,14 +488,13 @@ void CSkyClouds::render(DWORD timeDelta, const float3* pos,bool is_shadow) SGCore_ShaderSetVRF(SHADER_TYPE_VERTEX, m_idVS, "WorldViewProjection", &WVP); SGCore_ShaderSetVRF(SHADER_TYPE_PIXEL, m_idPS_Shadow, "BlendFactorBias", &float2(m_fFactorBlend, m_fBias)); - //SGCore_ShaderSetVRF(1, PS_RenderSkyCloudsShadow, "Color", &Color); SGCore_ShaderSetVRF(SHADER_TYPE_PIXEL, m_idPS_Shadow, "Alpha", &m_fAlpha); SGCore_ShaderBind(SHADER_TYPE_VERTEX, m_idVS); SGCore_ShaderBind(SHADER_TYPE_PIXEL, m_idPS_Shadow); } - g_pDXDevice->SetStreamSource(0, m_pSkyCloudsVertices, 0, sizeof(CSkyCloudsVertex)); - g_pDXDevice->SetIndices(m_pSkyCloudsIndeces); + g_pDXDevice->SetStreamSource(0, m_pVertices, 0, sizeof(CSkyCloudsVertex)); + g_pDXDevice->SetIndices(m_pIndeces); g_pDXDevice->SetVertexDeclaration(m_pVertexDeclarationClouds); g_pDXDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 4, 0, 2); diff --git a/source/gcore/sky.h b/source/gcore/sky.h index 0f273680bb8b69121aa28ff2dafdad96d7744c5a..b650063dc01732dbe1bed4482b7bdfe73ab37563 100644 --- a/source/gcore/sky.h +++ b/source/gcore/sky.h @@ -18,125 +18,216 @@ extern D3DPRESENT_PARAMETERS g_oD3DAPP; //########################################################################## +//! ��������� ������ ��� ��������� struct CSkyBoxVertex { - CSkyBoxVertex(float x,float y,float z,float u,float v,float w) + CSkyBoxVertex(float fX,float fY,float fZ,float fU,float fV,float fW) { - _x = x; _y = y; _z = z; _u = u; _v = v; _w = w; + x = fX; y = fY; z = fZ; u = fU; v = fV; w = fW; } - float _x, _y, _z; - float _u, _v, _w; + float x, y, z; + float u, v, w; }; //************************************************************************** +//! ��������, ���, �� ������� ������������� ���������� �������� � ������������ ���� class CSkyBox { public: CSkyBox(); ~CSkyBox(); - void loadTextures(const char *szTexture); + + SX_ALIGNED_OP_MEM + + //! �������� �������� + void loadTexture(const char *szTexture); + + //! ��������� �� �������� bool isLoadTex(); + + //! ������ �������� void changeTexture(const char *szTexture); + + //! � szTexture ������� ��� ������� �������� �������� void getActiveTexture(char *szTexture); + + //! � szTexture ������� ��� ��������� �������� void getSecondTexture(char *szTexture); + + //! ���������� ���� �������� void setRotation(float fAngle); + + //! ���������� ���� �������� float getRotation(); + + //! ���������� ����, w ���������� ��� ����������� ����� [0,1] void setColor(const float4_t *pColor); + + //! � pColor ���������� ���� void getColor(float4_t *pColor); - void render(float timeDelta, const float3 *pPos,bool isShadow); - - SX_ALIGNED_OP_MEM + //! ������ + void render(float timeDelta, const float3 *pPos,bool isShadow); protected: + //! ���������� ������ IDirect3DVertexDeclaration9* m_pVertexDeclarationSkyBox; - char m_szTexActive[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; - char m_szTexSecond[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + //! ���� �������� float m_fRotaionY; + + //! ������� �������� float4x4 m_mMatRotation; + + //! ���� float4_t m_vColor; + + //! ���������� ���������� ������� float m_fFactorBlend; + //! ���������� �� ����� ������� bool m_isChange; - bool m_isChangeMainTex; - IDirect3DCubeTexture9 *m_pTexture; - IDirect3DCubeTexture9 *m_pTexture2; + + //bool m_isChangeMainTex; + + //! ������ (�������� ��������) + ID m_idTex1; + + //! ������ (�������� ������ ��� #changeTexture) + ID m_idTex2; + + //! ��������� ����� IDirect3DVertexBuffer9 *m_pVertices; + + //! ��������� ����� IDirect3DIndexBuffer9 *m_pIndeces; + //! ��������� ������ ID m_idVS; + + //! ���������� ������ ID m_idPS; }; //########################################################################## +//! ��������� ������ ������� struct CSkyCloudsVertex { - CSkyCloudsVertex(float x,float y,float z,float u,float v) + CSkyCloudsVertex(float fX,float fY,float fZ,float fU,float fV) { - _x = x; _y = y; _z = z; _u = u; _v = v; + x = fX; y = fY; z = fZ; u = fU; v = fV; } - float _x, _y, _z; - float _u, _v; + float x, y, z; + float u, v; }; //************************************************************************** +//! ������ class CSkyClouds { public: CSkyClouds(); ~CSkyClouds(); - //���������� ��������� ������� - //���� ������ ����������� ����, �� ���� ���� ������ ��������� ����� ���� ������� + SX_ALIGNED_OP_MEM + + //! ���������� ��������� ������� void setWidthHeightPos(float iWidth,float iHeight, const float3 *pPos); - void loadTextures(const char *szTexture); + + //! �������� �������� + void loadTexture(const char *szTexture); + + //! ��������� �� �������� bool isLoadTex(); + + //! �������� �������� void changeTexture(const char *szTexture); + //���������� ������� void setRotation(float fAngle); + + //! ���������� ������� float getRotation(); + + //! ������������� ������������ void setAlpha(float fAngle); + + //! ���������� ������������ float getAlpha(); + + //! ����������� ����, w ���������� ��� ����������� ����� [0,1] void setColor(const float4_t *pColor); + + //! � pColor ���������� ���� void getColor(float4_t *pColor); + //! ���������� �������� �������� void setSpeed(float fSpeed); + + //! ���������� �������� �������� float getSpeed(); - void render(DWORD timeDetlta, const float3 *pPos,bool isShadow); + //! ������ + void render(DWORD timeDetlta, const float3 *pPos, bool isShadow); - SX_ALIGNED_OP_MEM private: + //! ���������� ������ IDirect3DVertexDeclaration9 *m_pVertexDeclarationClouds; + + //! ���������� ������������ float m_fAlpha; + + //! ������� �� ��� Y float m_fRotaionY; + + //! ������� �������� float4x4 m_mMatRotation; + + //! ���� ������� float4_t m_vColor; + //! ���������� ���������� ���������� �������� � ����� float m_fFactorBlend; + + //! ������� ����� ������� float2_t m_vWidthHeight; + + //! ���������� �� ������ ����� ������� bool m_isChange; - bool m_isChangeMainTex; + //bool m_isChangeMainTex; + + //! �������� �������� ������� float m_fSpeed; + + //! ������� �������� � ���������� ����������� float m_fBias; - CSkyCloudsVertex *m_pVertices; - IDirect3DVertexBuffer9 *m_pSkyCloudsVertices; - IDirect3DIndexBuffer9 *m_pSkyCloudsIndeces; - IDirect3DTexture9 *m_pSkyCloudsTex; - IDirect3DTexture9 *m_pSkyCloudsTex2; + //! ��������� ����� + IDirect3DVertexBuffer9 *m_pVertices; + + //! ��������� ����� + IDirect3DIndexBuffer9 *m_pIndeces; + //! ������ (�������� ��������) + ID m_idTex1; + + //! ������ (�������� ������ ��� #changeTexture) + ID m_idTex2; + + //! ��������� ������ ID m_idVS; + + //! ���������� ������ (��������� ��� ������) ID m_idPS; + //! ���������� ������ (��������� ��� �����) ID m_idPS_Shadow; }; diff --git a/source/gcore/sxgcore.cpp b/source/gcore/sxgcore.cpp index ecd001b144d15be7442d66f489cbdf14a3460db8..001de58d50105729150dfd123357eabca8b3be10 100644 --- a/source/gcore/sxgcore.cpp +++ b/source/gcore/sxgcore.cpp @@ -75,15 +75,15 @@ void StdDrawIndexedPrimitive(UINT type_primitive, long base_vertexIndex, UINT mi g_pDXDevice->DrawIndexedPrimitive((D3DPRIMITIVETYPE)type_primitive, base_vertexIndex, min_vertex_index, num_vertices, start_index, prim_count); } -void StdMtlSet(ID id, float4x4* world) +void StdMtlSet(ID id, float4x4 *pWorld) { g_pDXDevice->SetTexture(0, SGCore_LoadTexGetTex(id)); } -ID StdMtlLoad(const char* name, int mtl_type) +ID StdMtlLoad(const char *szName, int iMtlType) { - return SGCore_LoadTexAddName(name, LOAD_TEXTURE_TYPE_LOAD); + return SGCore_LoadTexAddName(szName, LOAD_TEXTURE_TYPE_LOAD); } int StdMtlGetSort(ID id) @@ -117,7 +117,7 @@ IDirect3DVertexDeclaration9 *g_pStaticVertexDecl = 0; CShaderManager *g_pManagerShaders = 0; CreatorTextures *g_pManagerRenderTargets = 0; -LoaderTextures *g_pManagerTextures = 0; +�LoaderTextures *g_pManagerTextures = 0; ID3DXMesh *g_pScreenTexture = 0; CSkyBox *g_pSkyBox = 0; CSkyClouds *g_pSkyClouds = 0; @@ -175,7 +175,7 @@ void GCoreInit(HWND hWnd, int iWidth, int iHeight, bool isWindowed, DWORD dwFlag D3DXCreateFontIndirect(g_pDXDevice, &LF, &g_pFPStext); - D3DVERTEXELEMENT9 layoutquad[] = + D3DVERTEXELEMENT9 oLayoutQuad[] = { { 0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 }, { 0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 }, @@ -185,45 +185,40 @@ void GCoreInit(HWND hWnd, int iWidth, int iHeight, bool isWindowed, DWORD dwFlag //IDirect3DVertexDeclaration9* VertexDeclarationQuad; //GData::g_pDXDevice->CreateVertexDeclaration(layoutquad, &VertexDeclarationQuad); - D3DXCreateMesh(2, 4, D3DXMESH_MANAGED, layoutquad, g_pDXDevice, &g_pScreenTexture); + D3DXCreateMesh(2, 4, D3DXMESH_MANAGED, oLayoutQuad, g_pDXDevice, &g_pScreenTexture); - struct VERTEX_SCREEN_TEXTURE { float x, y, z, tx, ty, tz; }; + struct VERTEX_SCREEN_TEXTURE { float x, y, z, tx, ty, tz; }; - const float offset_pixel_x = 1.0f / float(g_oD3DAPP.BackBufferWidth); - const float offset_pixel_y = 1.0f / float(g_oD3DAPP.BackBufferHeight); + const float fOffsetPixelX = 1.0f / float(g_oD3DAPP.BackBufferWidth); + const float fOffsetPixelY = 1.0f / float(g_oD3DAPP.BackBufferHeight); - VERTEX_SCREEN_TEXTURE AddVertices[] = + VERTEX_SCREEN_TEXTURE aVertices[] = { - { -1.0f - offset_pixel_x, -1.0f + offset_pixel_y, 1.0f, 0.0f, 1.0f, 0 }, - { -1.0f - offset_pixel_x, 1.0f + offset_pixel_y, 1.0f, 0.0f, 0.0f, 1 }, - { 1.0f - offset_pixel_x, 1.0f + offset_pixel_y, 1.0f, 1.0f, 0.0f, 2 }, - { 1.0f - offset_pixel_x, -1.0f + offset_pixel_y, 1.0f, 1.0f, 1.0f, 3 }, + { -1.0f - fOffsetPixelX, -1.0f + fOffsetPixelY, 1.0f, 0.0f, 1.0f, 0 }, + { -1.0f - fOffsetPixelX, 1.0f + fOffsetPixelY, 1.0f, 0.0f, 0.0f, 1 }, + { 1.0f - fOffsetPixelX, 1.0f + fOffsetPixelY, 1.0f, 1.0f, 0.0f, 2 }, + { 1.0f - fOffsetPixelX, -1.0f + fOffsetPixelY, 1.0f, 1.0f, 1.0f, 3 }, }; - void* Vertices; - if (!FAILED(g_pScreenTexture->LockVertexBuffer(0, (void**)&Vertices))) + void * pVertices; + if (!FAILED(g_pScreenTexture->LockVertexBuffer(0, (void**)&pVertices))) { - memcpy(Vertices, AddVertices, sizeof(AddVertices)); + memcpy(pVertices, aVertices, sizeof(aVertices)); g_pScreenTexture->UnlockVertexBuffer(); } - WORD* i = 0; - g_pScreenTexture->LockIndexBuffer(0, (void**)&i); - i[0] = 0; i[1] = 1; i[2] = 2; - i[3] = 0; i[4] = 2; i[5] = 3; + WORD *pIndeces = 0; + g_pScreenTexture->LockIndexBuffer(0, (void**)&pIndeces); + pIndeces[0] = 0; pIndeces[1] = 1; pIndeces[2] = 2; + pIndeces[3] = 0; pIndeces[4] = 2; pIndeces[5] = 3; g_pScreenTexture->UnlockIndexBuffer(); - //������������� ������ � �������� - /*Core_RFloatSet(G_RI_FLOAT_WINSIZE_WIDTH, (float)width); - Core_RFloatSet(G_RI_FLOAT_WINSIZE_HEIGHT, (float)heigth); - Core_RBoolSet(G_RI_BOOL_RENDER_WINDOWED, windowed);*/ - g_pManagerShaders = new CShaderManager(); g_pManagerRenderTargets = new CreatorTextures(); - g_pManagerTextures = new LoaderTextures(); + g_pManagerTextures = new �LoaderTextures(); - D3DVERTEXELEMENT9 layoutstatic[] = + D3DVERTEXELEMENT9 oLayoutStatic[] = { { 0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 }, { 0, 12, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0 }, @@ -231,21 +226,21 @@ void GCoreInit(HWND hWnd, int iWidth, int iHeight, bool isWindowed, DWORD dwFlag D3DDECL_END() }; - g_pDXDevice->CreateVertexDeclaration(layoutstatic, &g_pStaticVertexDecl); + g_pDXDevice->CreateVertexDeclaration(oLayoutStatic, &g_pStaticVertexDecl); //��������� ���� ��������� ���������� �������� - DEVMODE dm; + DEVMODE oDevMode; int iNum = 0; - while (EnumDisplaySettings(NULL, iNum, &dm)) + while (EnumDisplaySettings(NULL, iNum, &oDevMode)) { iNum++; - if (dm.dmBitsPerPel >= 32 && dm.dmPelsWidth >= 800 && dm.dmPelsHeight >= 600) + if (oDevMode.dmBitsPerPel >= 32 && oDevMode.dmPelsWidth >= 800 && oDevMode.dmPelsHeight >= 600) { bool isUnic = true; for (int i = 0, il = g_aArrModes.size(); i < il; ++i) { - if (g_aArrModes[i].dmPelsWidth == dm.dmPelsWidth && g_aArrModes[i].dmPelsHeight == dm.dmPelsHeight) + if (g_aArrModes[i].dmPelsWidth == oDevMode.dmPelsWidth && g_aArrModes[i].dmPelsHeight == oDevMode.dmPelsHeight) { isUnic = false; break; @@ -253,7 +248,7 @@ void GCoreInit(HWND hWnd, int iWidth, int iHeight, bool isWindowed, DWORD dwFlag } if (isUnic) - g_aArrModes.push_back(dm); + g_aArrModes.push_back(oDevMode); } } @@ -310,12 +305,12 @@ SX_LIB_API void SGCore_0Create(const char *szName, HWND hWnd, int iWidth, int iH LibReport(REPORT_MSG_LEVEL_ERROR, "%s - not init argument [name], sxgcore", GEN_MSG_LOCATION); } -SX_LIB_API const DEVMODE* SGCore_GetModes(int *iCount) +SX_LIB_API const DEVMODE* SGCore_GetModes(int *pCount) { SG_PRECOND(0); - if (iCount) - *iCount = g_aArrModes.size(); + if (pCount) + *pCount = g_aArrModes.size(); return &(g_aArrModes[0]); } @@ -388,7 +383,7 @@ SX_LIB_API void SGCore_OnLostDevice() g_pManagerRenderTargets->OnLostDevice(); } -SX_LIB_API bool SGCore_OnDeviceReset(int iWidth, int iHeight, bool windowed) +SX_LIB_API bool SGCore_OnDeviceReset(int iWidth, int iHeight, bool isWindowed) { SG_PRECOND(false); @@ -406,11 +401,7 @@ SX_LIB_API bool SGCore_OnDeviceReset(int iWidth, int iHeight, bool windowed) g_oD3DAPP.BackBufferWidth = iWidth; g_oD3DAPP.BackBufferHeight = iHeight; - g_oD3DAPP.Windowed = windowed; - - /*Core_RFloatSet(G_RI_FLOAT_WINSIZE_WIDTH, (float)width); - Core_RFloatSet(G_RI_FLOAT_WINSIZE_HEIGHT, (float)heigth); - Core_RBoolSet(G_RI_BOOL_RENDER_WINDOWED, windowed);*/ + g_oD3DAPP.Windowed = isWindowed; return (FAILED(g_pDXDevice->Reset(&g_oD3DAPP))); } @@ -424,21 +415,21 @@ SX_LIB_API void SGCore_OnResetDevice() struct VERTEX_SCREEN_TEXTURE { float x, y, z, tx, ty, tz; }; - const float offset_pixel_x = 1.0f / float(g_oD3DAPP.BackBufferWidth); - const float offset_pixel_y = 1.0f / float(g_oD3DAPP.BackBufferHeight); + const float fOffsetPixelX = 1.0f / float(g_oD3DAPP.BackBufferWidth); + const float fOffsetPixelY = 1.0f / float(g_oD3DAPP.BackBufferHeight); - VERTEX_SCREEN_TEXTURE AddVertices[] = + VERTEX_SCREEN_TEXTURE aVertices[] = { - { -1.0f - offset_pixel_x, -1.0f + offset_pixel_y, 1.0f, 0.0f, 1.0f, 0 }, - { -1.0f - offset_pixel_x, 1.0f + offset_pixel_y, 1.0f, 0.0f, 0.0f, 1 }, - { 1.0f - offset_pixel_x, 1.0f + offset_pixel_y, 1.0f, 1.0f, 0.0f, 2 }, - { 1.0f - offset_pixel_x, -1.0f + offset_pixel_y, 1.0f, 1.0f, 1.0f, 3 }, + { -1.0f - fOffsetPixelX, -1.0f + fOffsetPixelY, 1.0f, 0.0f, 1.0f, 0 }, + { -1.0f - fOffsetPixelX, 1.0f + fOffsetPixelY, 1.0f, 0.0f, 0.0f, 1 }, + { 1.0f - fOffsetPixelX, 1.0f + fOffsetPixelY, 1.0f, 1.0f, 0.0f, 2 }, + { 1.0f - fOffsetPixelX, -1.0f + fOffsetPixelY, 1.0f, 1.0f, 1.0f, 3 }, }; - void* Vertices; - if (!FAILED(g_pScreenTexture->LockVertexBuffer(0, (void**)&Vertices))) + void * pVertices; + if (!FAILED(g_pScreenTexture->LockVertexBuffer(0, (void**)&pVertices))) { - memcpy(Vertices, AddVertices, sizeof(AddVertices)); + memcpy(pVertices, aVertices, sizeof(aVertices)); g_pScreenTexture->UnlockVertexBuffer(); } } @@ -535,11 +526,11 @@ SX_LIB_API void SGCore_OC_SetEnable(bool isEnable) g_isOCenable = isEnable; } -const ISXFrustum *g_pFrustum = 0; +const IFrustum *g_pFrustum = 0; int g_iOCcountFC = 0; int g_iOCcountFCfail = 0; -SX_LIB_API void SGCore_OC_Update(ID idDepthMap, const ISXFrustum *pFrustum) +SX_LIB_API void SGCore_OC_Update(ID idDepthMap, const IFrustum *pFrustum) { SG_PRECOND(_VOID); @@ -549,8 +540,7 @@ SX_LIB_API void SGCore_OC_Update(ID idDepthMap, const ISXFrustum *pFrustum) g_pFrustum = pFrustum; g_iOCcountFC = 0; g_iOCcountFCfail = 0; - - + static const float *r_near = GET_PCVAR_FLOAT("r_near"); static const float *r_far = GET_PCVAR_FLOAT("r_far"); @@ -1436,198 +1426,212 @@ SX_LIB_API void SGCore_ShaderUnBind() return g_pManagerShaders->unbind(); } -SX_LIB_API void SGCore_ShaderSetVRFN(SHADER_TYPE type_shader, const char* name_shader, const char* name_var, void* data, int count_float4) +SX_LIB_API void SGCore_ShaderSetVRFN(SHADER_TYPE type_shader, const char *szNameShader, const char *szNameVar, void *pData, int iCountFloat4) { SG_PRECOND(_VOID); - return g_pManagerShaders->setValueRegisterF(type_shader, name_shader, name_var, data, count_float4); + return g_pManagerShaders->setValueRegisterF(type_shader, szNameShader, szNameVar, pData, iCountFloat4); } -SX_LIB_API void SGCore_ShaderSetVRF(SHADER_TYPE type_shader, ID num_shader, const char* name_var, void* data, int count_float4) +SX_LIB_API void SGCore_ShaderSetVRF(SHADER_TYPE type_shader, ID idShader, const char *szNameVar, void *pData, int iCountFloat4) { SG_PRECOND(_VOID); - return g_pManagerShaders->setValueRegisterF(type_shader, num_shader, name_var, data, count_float4); + return g_pManagerShaders->setValueRegisterF(type_shader, idShader, szNameVar, pData, iCountFloat4); } -SX_LIB_API void SGCore_ShaderSetVRIN(SHADER_TYPE type_shader, const char* name_shader, const char* name_var, void* data, int count_int4) +SX_LIB_API void SGCore_ShaderSetVRIN(SHADER_TYPE type_shader, const char *szNameShader, const char *szNameVar, void *pData, int iCountInt4) { SG_PRECOND(_VOID); - return g_pManagerShaders->setValueRegisterI(type_shader, name_shader, name_var, data, count_int4); + return g_pManagerShaders->setValueRegisterI(type_shader, szNameShader, szNameVar, pData, iCountInt4); } -SX_LIB_API void SGCore_ShaderSetVRI(SHADER_TYPE type_shader, ID num_shader, const char* name_var, void* data, int count_int4) +SX_LIB_API void SGCore_ShaderSetVRI(SHADER_TYPE type_shader, ID idShader, const char* szNameVar, void *pData, int iCountInt4) { SG_PRECOND(_VOID); - return g_pManagerShaders->setValueRegisterI(type_shader, num_shader, name_var, data, count_int4); + return g_pManagerShaders->setValueRegisterI(type_shader, idShader, szNameVar, pData, iCountInt4); } -SX_LIB_API ID SGCore_ShaderExistsName(SHADER_TYPE type_shader, const char* name) +SX_LIB_API ID SGCore_ShaderExistsName(SHADER_TYPE type_shader, const char *szName) { SG_PRECOND(-1); - return g_pManagerShaders->existsName(type_shader, name); + return g_pManagerShaders->existsName(type_shader, szName); } -SX_LIB_API ID SGCore_ShaderExistsPath(SHADER_TYPE type_shader, const char* name) +SX_LIB_API ID SGCore_ShaderExistsPath(SHADER_TYPE type_shader, const char *szName) { SG_PRECOND(-1); - return g_pManagerShaders->existsName(type_shader, name); + return g_pManagerShaders->existsName(type_shader, szName); } -SX_LIB_API bool SGCore_ShaderIsValidated(SHADER_TYPE type_shader, ID id) +SX_LIB_API bool SGCore_ShaderIsValidated(SHADER_TYPE type_shader, ID idShader) { SG_PRECOND(0); - return g_pManagerShaders->isValidated(type_shader, id); + return g_pManagerShaders->isValidated(type_shader, idShader); } -SX_LIB_API void SGCore_ShaderGetPath(SHADER_TYPE type_shader, ID id, char* path) +SX_LIB_API void SGCore_ShaderGetPath(SHADER_TYPE type_shader, ID idShader, char *szPath) { SG_PRECOND(_VOID); - g_pManagerShaders->getPath(type_shader, id, path); + g_pManagerShaders->getPath(type_shader, idShader, szPath); } -SX_LIB_API void SGCore_ShaderGetName(SHADER_TYPE type_shader, ID id, char* name) +SX_LIB_API void SGCore_ShaderGetName(SHADER_TYPE type_shader, ID idShader, char *szName) { SG_PRECOND(_VOID); - g_pManagerShaders->getName(type_shader, id, name); + g_pManagerShaders->getName(type_shader, idShader, szName); } -SX_LIB_API bool SGCore_ShaderFileExists(const char* name) +SX_LIB_API bool SGCore_ShaderFileExists(const char *szName) { SG_PRECOND(false); - return g_pManagerShaders->existsFile(name); + return g_pManagerShaders->existsFile(szName); } //########################################################################## -SX_LIB_API bool SGCore_LoadTexFileExists(const char* name) +SX_LIB_API bool SGCore_LoadTexFileExists(const char *szName) { SG_PRECOND(false); - return g_pManagerTextures->FileExists(name); + return g_pManagerTextures->fileExists(szName); } SX_LIB_API void SGCore_LoadTexClearLoaded() { SG_PRECOND(_VOID); - g_pManagerTextures->ClearLoaded(); + g_pManagerTextures->clearLoaded(); } SX_LIB_API void SGCore_LoadTexDelete(ID id) { SG_PRECOND(_VOID); - g_pManagerTextures->Delete(id); + g_pManagerTextures->deleteTexture(id); } -SX_LIB_API ID SGCore_LoadTexAddName(const char* name, LOAD_TEXTURE_TYPE type) +SX_LIB_API ID SGCore_LoadTexAddName(const char *szName, LOAD_TEXTURE_TYPE type) { SG_PRECOND(-1); - return g_pManagerTextures->AddName(name, type); + return g_pManagerTextures->addName(szName, type); } -SX_LIB_API ID SGCore_LoadTexGetID(const char* name) +SX_LIB_API ID SGCore_LoadTexAddConstAllInDir(const char *szDir) +{ + SG_PRECOND(false); + + return g_pManagerTextures->addConstAllInDir(szDir); +} + +SX_LIB_API ID SGCore_LoadTexGetID(const char *szName) { SG_PRECOND(-1); - return g_pManagerTextures->GetID(name); + return g_pManagerTextures->getID(szName); } -SX_LIB_API void SGCore_LoadTexGetName(ID id, char* name) +SX_LIB_API void SGCore_LoadTexGetName(ID id, char *szName) { SG_PRECOND(_VOID); - return g_pManagerTextures->GetName(id, name); + return g_pManagerTextures->getName(id, szName); } -SX_LIB_API ID SGCore_LoadTexCreate(const char* name, IDirect3DTexture9* tex) +SX_LIB_API ID SGCore_LoadTexCreate(const char *szName, IDirect3DTexture9 *pTex) { SG_PRECOND(-1); - return g_pManagerTextures->Create(name, tex); + return g_pManagerTextures->create(szName, pTex); } -SX_LIB_API ID SGCore_LoadTexUpdateN(const char* name, LOAD_TEXTURE_TYPE type) +SX_LIB_API ID SGCore_LoadTexUpdateN(const char *szName, LOAD_TEXTURE_TYPE type) { SG_PRECOND(-1); - return g_pManagerTextures->Update(name, type); + return g_pManagerTextures->update(szName, type); } SX_LIB_API void SGCore_LoadTexUpdate(ID id) { SG_PRECOND(_VOID); - return g_pManagerTextures->Update(id); + return g_pManagerTextures->update(id); +} + +SX_LIB_API IDirect3DTexture9* SGCore_LoadTexGetTex(ID idTexture) +{ + SG_PRECOND(0); + + return g_pManagerTextures->getTexture2d(idTexture); } -SX_LIB_API IDirect3DTexture9* SGCore_LoadTexGetTex(ID id) +SX_LIB_API IDirect3DCubeTexture9* SGCore_LoadTexGetTexCube(ID idTexture) { SG_PRECOND(0); - return g_pManagerTextures->GetTexture(id); + return g_pManagerTextures->getTextureCube(idTexture); } SX_LIB_API void SGCore_LoadTexAllLoad() { SG_PRECOND(_VOID); - return g_pManagerTextures->LoadTextures(); + return g_pManagerTextures->loadTextures(); } //########################################################################## -SX_LIB_API ID SGCore_RTAdd(UINT width, UINT height, UINT levels, DWORD usage, D3DFORMAT format, D3DPOOL pool, const char* name, float coeffullscreen) +SX_LIB_API ID SGCore_RTAdd(UINT uiWidth, UINT uiHeight, UINT uiLevels, DWORD dwUsage, D3DFORMAT format, D3DPOOL pool, const char *szName, float fCoefFullScreen) { SG_PRECOND(-1); - return g_pManagerRenderTargets->Add(width, height, levels, usage, format, pool, name, coeffullscreen); + return g_pManagerRenderTargets->Add(uiWidth, uiHeight, uiLevels, dwUsage, format, pool, szName, fCoefFullScreen); } -SX_LIB_API void SGCore_RTDeleteN(const char* text) +SX_LIB_API void SGCore_RTDeleteN(const char *szName) { SG_PRECOND(_VOID); - return g_pManagerRenderTargets->Delete(text); + return g_pManagerRenderTargets->Delete(szName); } -SX_LIB_API void SGCore_RTDelete(ID num) +SX_LIB_API void SGCore_RTDelete(ID id) { SG_PRECOND(_VOID); - return g_pManagerRenderTargets->Delete(num); + return g_pManagerRenderTargets->Delete(id); } -SX_LIB_API ID SGCore_RTGetNum(const char* text) +SX_LIB_API ID SGCore_RTGetId(const char *szName) { SG_PRECOND(-1); - return g_pManagerRenderTargets->GetNum(text); + return g_pManagerRenderTargets->GetNum(szName); } -SX_LIB_API IDirect3DTexture9* SGCore_RTGetTextureN(const char* text) +SX_LIB_API IDirect3DTexture9* SGCore_RTGetTextureN(const char *szName) { SG_PRECOND(0); - return g_pManagerRenderTargets->GetTexture(text); + return g_pManagerRenderTargets->GetTexture(szName); } -SX_LIB_API IDirect3DTexture9* SGCore_RTGetTexture(ID num) +SX_LIB_API IDirect3DTexture9* SGCore_RTGetTexture(ID id) { SG_PRECOND(0); - return g_pManagerRenderTargets->GetTexture(num); + return g_pManagerRenderTargets->GetTexture(id); } //########################################################################## @@ -1639,44 +1643,44 @@ SX_LIB_API void SGCore_FCreateCone(float fTopRadius, float fBottomRadius, float CreateCone(fTopRadius, fBottomRadius, fHeight, ppMesh, g_pDXDevice, iSideCount); } -SX_LIB_API void SGCore_FCompBoundBox(IDirect3DVertexBuffer9* vertex_buffer, ISXBound** bound, DWORD count_vert, DWORD bytepervert) +SX_LIB_API void SGCore_FCompBoundBox(IDirect3DVertexBuffer9 *pVertexBuffer, ISXBound **ppBound, DWORD dwCountVertices, DWORD dwBytesPerVertex) { SG_PRECOND(_VOID); - ComputeBoundingBox(vertex_buffer, bound, count_vert, bytepervert); + ComputeBoundingBox(pVertexBuffer, ppBound, dwCountVertices, dwBytesPerVertex); } -SX_LIB_API void SGCore_FCompBoundBox2(IDirect3DVertexBuffer9* vertex_buffer, ISXBound* bound, DWORD count_vert, DWORD bytepervert) +SX_LIB_API void SGCore_FCompBoundBox2(IDirect3DVertexBuffer9 *pVertexBuffer, ISXBound *pBound, DWORD dwCountVertices, DWORD dwBytesPerVertex) { SG_PRECOND(_VOID); - ComputeBoundingBox2(vertex_buffer, bound, count_vert, bytepervert); + ComputeBoundingBox2(pVertexBuffer, pBound, dwCountVertices, dwBytesPerVertex); } -SX_LIB_API void SGCore_FCreateBoundingBoxMesh(float3* min, float3* max, ID3DXMesh** bbmesh) +SX_LIB_API void SGCore_FCreateBoundingBoxMesh(const float3 *pMin, const float3 *pMax, ID3DXMesh **ppBBmesh) { SG_PRECOND(_VOID); - CreateBoundingBoxMesh(min, max, bbmesh,g_pDXDevice); + CreateBoundingBoxMesh(pMin, pMax, ppBBmesh, g_pDXDevice); } -SX_LIB_API void SGCore_OptimizeIndecesInSubsetUint16(uint16_t* ib, uint16_t numFaces, uint16_t numVerts) +SX_LIB_API void SGCore_OptimizeIndecesInSubsetUint16(uint16_t *pIndecesBuffer, uint16_t numFaces, uint16_t numVerts) { SG_PRECOND(_VOID); - OptimizeIndecesInSubsetUint16(ib, numFaces, numVerts); + OptimizeIndecesInSubsetUint16(pIndecesBuffer, numFaces, numVerts); } -SX_LIB_API void SGCore_OptimizeIndecesInSubsetUint32(uint32_t* ib, uint32_t numFaces, uint32_t numVerts) +SX_LIB_API void SGCore_OptimizeIndecesInSubsetUint32(uint32_t *pIndecesBuffer, uint32_t numFaces, uint32_t numVerts) { SG_PRECOND(_VOID); - OptimizeIndecesInSubsetUint32(ib, numFaces, numVerts); + OptimizeIndecesInSubsetUint32(pIndecesBuffer, numFaces, numVerts); } //########################################################################## -SX_LIB_API bool SGCore_0InPos2D(float3* min, float3* max, float3* pos) +SX_LIB_API bool SGCore_0InPos2D(const float3* min, const float3* max, const float3* pos) { return InPosition2D(min, max, pos); } @@ -1761,12 +1765,12 @@ SX_LIB_API bool SGCore_0InretsectBox(const float3 * min1, const float3 * max1, c //########################################################################## -SX_LIB_API ISXFrustum* SGCore_CrFrustum() +SX_LIB_API IFrustum* SGCore_CrFrustum() { return new CFrustum(); } -SX_LIB_API ISXCamera* SGCore_CrCamera() +SX_LIB_API ICamera* SGCore_CrCamera() { return new CCamera(); } @@ -1850,7 +1854,7 @@ SX_LIB_API bool SGCore_SkyBoxIsLoadTex() SX_LIB_API void SGCore_SkyBoxLoadTex(const char *texture) { SG_PRECOND_SKY_BOX(_VOID); - g_pSkyBox->loadTextures(texture); + g_pSkyBox->loadTexture(texture); } SX_LIB_API void SGCore_SkyBoxChangeTex(const char *texture) @@ -1936,7 +1940,7 @@ SX_LIB_API void SGCore_SkyCloudsSetWidthHeightPos(float width, float height, con SX_LIB_API void SGCore_SkyCloudsLoadTex(const char *texture) { SG_PRECOND_SKY_CLOUDS(_VOID); - g_pSkyClouds->loadTextures(texture); + g_pSkyClouds->loadTexture(texture); } SX_LIB_API void SGCore_SkyCloudsChangeTex(const char *texture) diff --git a/source/gcore/sxgcore.h b/source/gcore/sxgcore.h index 6c55acb29408aa5615b35051b72744dac35eae5c..47b1b1f420b3af7299f1da0dd828abeee1e853d8 100644 --- a/source/gcore/sxgcore.h +++ b/source/gcore/sxgcore.h @@ -59,7 +59,7 @@ See the license in LICENSE #define SXGC_ERR_NON_DETECTED_D3D -1 #define SXGC_ERR_FAILED_INIT_D3D -2 -class ISXFrustum; +class IFrustum; //! \name Базовые функции библиотеки //!@{ @@ -260,7 +260,7 @@ SX_LIB_API void SGCore_SetFunc_MtlGroupRenderIsSingly(g_func_mtl_group_render_is SX_LIB_API void SGCore_OC_SetEnable(bool isEnable); //! обновление буфера глубины для теста, должна вызываться в старом кадре, к примеру после всего рендера (глубина и матрицы для текущего) -SX_LIB_API void SGCore_OC_Update(ID idDepthMap, const ISXFrustum *pFrustum); +SX_LIB_API void SGCore_OC_Update(ID idDepthMap, const IFrustum *pFrustum); //! репроекция глубины, должна вызываться в новом кадре до основного рендера всего того, что подвергается тесту на загороженность, матрицы должны быть от нового кадра SX_LIB_API void SGCore_OC_Reprojection(); @@ -319,16 +319,24 @@ SX_LIB_API bool SGCore_OC_IsVisible(const float3 *pMax, const float3 *pMin); //! типы шейдеров (int type_shader) enum SHADER_TYPE { - SHADER_TYPE_VERTEX, //!< вершинный - SHADER_TYPE_PIXEL //!< пиксельный + //! вершинный + SHADER_TYPE_VERTEX, + + //! пиксельный + SHADER_TYPE_PIXEL }; //! типы проверок дубликатов шейдеров enum SHADER_CHECKDOUBLE { - SHADER_CHECKDOUBLE_NONE, //!< нет проверки - SHADER_CHECKDOUBLE_PATH, //!< проверка по пути (имени шейдера с расширением) - SHADER_CHECKDOUBLE_NAME //!< проверка по пользовательскому имени + //! нет проверки + SHADER_CHECKDOUBLE_NONE, + + //! проверка по пути (имени шейдера с расширением) + SHADER_CHECKDOUBLE_PATH, + + //! проверка по пользовательскому имени + SHADER_CHECKDOUBLE_NAME }; //************************************************************************** @@ -474,10 +482,18 @@ SX_LIB_API void SGCore_ShaderSetVRI( /*! \name Типы материалов !@{*/ -#define MTL_TYPE_GEOM 0 /*!< статическая геометрия */ -#define MTL_TYPE_GRASS 1 /*!< растительность - трава */ -#define MTL_TYPE_TREE 2 /*!< растительность - деревья */ -#define MTL_TYPE_SKIN 3 /*!< скелетная модель */ +//! статическая геометрия +#define MTL_TYPE_GEOM 0 + +//! растительность - трава +#define MTL_TYPE_GRASS 1 + +//! растительность - деревья +#define MTL_TYPE_TREE 2 + +//! скелетная модель +#define MTL_TYPE_SKIN 3 + //#define MTL_LIGHT 4 //!@} @@ -485,9 +501,14 @@ SX_LIB_API void SGCore_ShaderSetVRI( //! типы текстур enum LOAD_TEXTURE_TYPE { - LOAD_TEXTURE_TYPE_LOAD, //!< загружаемая - LOAD_TEXTURE_TYPE_CONST, //!< неудаляемая загружаемая - LOAD_TEXTURE_TYPE_CUSTOM, //!< созданная пользователем + //! загружаемая + LOAD_TEXTURE_TYPE_LOAD, + + //! неудаляемая загружаемая + LOAD_TEXTURE_TYPE_CONST, + + //! созданная пользователем + LOAD_TEXTURE_TYPE_CUSTOM, /*! самоопределение типа, на тот случай когда обновляем текстуру которая точно есть. Если определить этот тип, а внутри у текстуры на самом деле нет типа (скорее всего нет текстуры) @@ -510,6 +531,8 @@ SX_LIB_API void SGCore_LoadTexDelete(ID idTexture); //! добавляем имя текстуры, взамен получаем на нее ID (поставить в очередь) SX_LIB_API ID SGCore_LoadTexAddName(const char *szName, LOAD_TEXTURE_TYPE type); +SX_LIB_API ID SGCore_LoadTexAddConstAllInDir(const char *szDir); + //! получить id по имени SX_LIB_API ID SGCore_LoadTexGetID(const char *szName); @@ -534,6 +557,9 @@ SX_LIB_API void SGCore_LoadTexUpdate(ID idTexture); //! возвращает текстуру по id SX_LIB_API IDirect3DTexture9* SGCore_LoadTexGetTex(ID idTexture); +//! возвращает текстуру по id +SX_LIB_API IDirect3DCubeTexture9* SGCore_LoadTexGetTexCube(ID idTexture); + //! загрузка всех текстур поставленных в очередь, если есть очередь SX_LIB_API void SGCore_LoadTexAllLoad(); @@ -569,7 +595,7 @@ SX_LIB_API void SGCore_RTDeleteN(const char *szName); SX_LIB_API void SGCore_RTDelete(ID id); //! возвращает id по имени -SX_LIB_API ID SGCore_RTGetNum(const char *szName); +SX_LIB_API ID SGCore_RTGetId(const char *szName); //! возвращает текстуру по имени SX_LIB_API IDirect3DTexture9* SGCore_RTGetTextureN(const char *szName); @@ -806,7 +832,7 @@ SX_LIB_API void SGCore_FCompBoundBox( ); //! создание меша (ID3DXMesh) ограничивающего объема -SX_LIB_API void SGCore_FCreateBoundingBoxMesh(float3* min, float3* max, ID3DXMesh** bbmesh); +SX_LIB_API void SGCore_FCreateBoundingBoxMesh(const float3* min, const float3* max, ID3DXMesh** bbmesh); /*! \name Оптимизация индексных буферов @{*/ @@ -839,37 +865,37 @@ Abs - абсолютное нахождение внутри, не на гран @{*/ //! находится ли точка pos в пределах [min,max] по осям x z -SX_LIB_API bool SGCore_0InPos2D(float3* min, float3* max, float3* pos); +SX_LIB_API bool SGCore_0InPos2D(const float3 *pMin, const float3 *pMax, const float3 *pPos); //! находится ли точка pos в пределах (min,max) по осям x z -SX_LIB_API bool SGCore_0InPosAbs2D(float3* min, float3* max, float3* pos); +SX_LIB_API bool SGCore_0InPosAbs2D(float3 *pMin, float3 *pMax, float3 *pPos); //! возвращает количество точек (p1,p2,p3) лежащих в пределах [min,max] по осям x z -SX_LIB_API int SGCore_0CountPosPoints2D(float3* min, float3* max, float3* p1, float3* p2, float3* p3); +SX_LIB_API int SGCore_0CountPosPoints2D(float3 *pMin, float3 *pMax, float3 *p1, float3 *p2, float3 *p3); //! возвращает количество точек (p1,p2,p3) лежащих в пределах (min,max) по осям x z -SX_LIB_API int SGCore_0CountPosPointsAbs2D(float3* min, float3* max, float3* p1, float3* p2, float3* p3); +SX_LIB_API int SGCore_0CountPosPointsAbs2D(float3 *pMin, float3 *pMax, float3 *p1, float3 *p2, float3 *p3); //! лежит ли хотя бы одна точка абсолютно в (min,max) или хотя бы 2 точки в пределах [min,max], из числа трех точек p1,p2,p3, по осям x z -SX_LIB_API bool SGCore_0InPosPoints2D(float3* min, float3* max, float3* p1, float3* p2, float3* p3); +SX_LIB_API bool SGCore_0InPosPoints2D(float3 *pMin, float3 *pMax, float3 *p1, float3 *p2, float3 *p3); //! находится ли точка pos в пределах [min,max] -SX_LIB_API bool SGCore_0InPos3D(float3* min, float3* max, float3* pos); +SX_LIB_API bool SGCore_0InPos3D(float3 *pMin, float3 *pMax, float3 *pPos); //! находится ли точка pos в пределах (min,max) -SX_LIB_API bool SGCore_0InPosAbs3D(float3* min, float3* max, float3* pos); +SX_LIB_API bool SGCore_0InPosAbs3D(float3 *pMin, float3 *pMax, float3 *pPos); //! возвращает количество точек (p1,p2,p3) лежащих в пределах [min,max] -SX_LIB_API int SGCore_0CountPosPoints3D(float3* min, float3* max, float3* p1, float3* p2, float3* p3); +SX_LIB_API int SGCore_0CountPosPoints3D(float3 *pMin, float3 *pMax, float3 *p1, float3 *p2, float3 *p3); //! возвращает количество точек (p1,p2,p3) лежащих в пределах (min,max) -SX_LIB_API int SGCore_0CountPosPointsAbs3D(float3* min, float3* max, float3* p1, float3* p2, float3* p3); +SX_LIB_API int SGCore_0CountPosPointsAbs3D(float3 *pMin, float3 *pMax, float3 *p1, float3 *p2, float3 *p3); //! лежит ли хотя бы одна точка абсолютно в (min,max) или хотя бы 2 точки в пределах [min,max], из числа трех точек p1,p2,p3 -SX_LIB_API bool SGCore_0InPosPoints3D(float3* min, float3* max, float3* p1, float3* p2, float3* p3); +SX_LIB_API bool SGCore_0InPosPoints3D(float3 *pMin, float3 *pMax, float3 *p1, float3 *p2, float3 *p3); //!@} @@ -878,43 +904,46 @@ SX_LIB_API bool SGCore_0InPosPoints3D(float3* min, float3* max, float3* p1, floa /*! кубическое (octo) деление объема (по всем трем осям) \warning массивы и объекты должны быть заранее инициализированны */ -SX_LIB_API void SGCore_0ComBoundBoxArr8(ISXBound* bound, ISXBound** bound_arr); +SX_LIB_API void SGCore_0ComBoundBoxArr8(ISXBound *pBound, ISXBound **ppBoundArr); /*! квадратичное (quad) деление объема (по двум осям x и z) \warning массивы и объекты должны быть заранее инициализированны */ -SX_LIB_API void SGCore_0ComBoundBoxArr4(ISXBound* bound, ISXBound** bound_arr); +SX_LIB_API void SGCore_0ComBoundBoxArr4(ISXBound *pBound, ISXBound **ppBoundArr); //! находит квадрат расстояния между лучем и точкой -SX_LIB_API float SGCore_0DistancePointBeam2(const float3 & p, const float3 & start, const float3 & dir); +SX_LIB_API float SGCore_0DistancePointBeam2(const float3 &vPoint, const float3 &vStart, const float3 &vDir); //! возвращает пересекаются ли боксы или нет -SX_LIB_API bool SGCore_0InretsectBox(const float3 * min1, const float3 * max1, const float3 * min2, const float3 * max2); +SX_LIB_API bool SGCore_0InretsectBox(const float3 *pMin1, const float3 *pMax1, const float3 *pMin2, const float3 *pMax2); -struct SXTriangle +struct CTriangle { - float3_t a; - float3_t b; - float3_t c; - SXTriangle() + float3_t m_vA; + float3_t m_vB; + float3_t m_vC; + + CTriangle() { }; - SXTriangle(float3_t _a, float3_t _b, float3_t _c) :a(_a), b(_b), c(_c) + CTriangle(float3_t vA, float3_t vB, float3_t vC) :m_vA(vA), m_vB(vB), m_vC(vC) { }; //Проверкка пересечения треугольника и отрезка bool IntersectLine(const float3 & l1, const float3 &l2, float3 * p) { - float3 n = SMVector3Normalize(SMVector3Cross((b - a), (c - b))); - float d1 = SMVector3Dot((l1 - a), n) / SMVector3Length(n); - float d2 = SMVector3Dot((l2 - a), n) / SMVector3Length(n); + float3 n = SMVector3Normalize(SMVector3Cross((m_vB - m_vA), (m_vC - m_vB))); + float d1 = SMVector3Dot((l1 - m_vA), n) / SMVector3Length(n); + float d2 = SMVector3Dot((l2 - m_vA), n) / SMVector3Length(n); + if ((d1 > 0 && d2 > 0) || (d1 < 0 && d2 < 0)) return(false); + *p = l1 + (l2 - l1) * (-d1 / (d2 - d1)); - if (SMVector3Dot(SMVector3Cross((b - a), (*p - a)), n) <= 0) return(false); - if (SMVector3Dot(SMVector3Cross((c - b), (*p - b)), n) <= 0) return(false); - if (SMVector3Dot(SMVector3Cross((a - c), (*p - c)), n) <= 0) return(false); + if (SMVector3Dot(SMVector3Cross((m_vB - m_vA), (*p - m_vA)), n) <= 0) return(false); + if (SMVector3Dot(SMVector3Cross((m_vC - m_vB), (*p - m_vB)), n) <= 0) return(false); + if (SMVector3Dot(SMVector3Cross((m_vA - m_vC), (*p - m_vC)), n) <= 0) return(false); return(true); } }; @@ -932,7 +961,7 @@ struct SXTriangle */ //! структура описание плоскости -struct CSXFrustumPlane +struct CFrustumPlane { float3_t m_vNormal; float m_fDistance; @@ -950,10 +979,10 @@ struct CSXFrustumPlane }; //! класс описывающий фрустум -class ISXFrustum : public IBaseObject +class IFrustum : public IBaseObject { public: - virtual ~ISXFrustum(){}; + virtual ~IFrustum(){}; SX_ALIGNED_OP_MEM @@ -997,15 +1026,15 @@ public: }; //! создать ISXFrustum -SX_LIB_API ISXFrustum* SGCore_CrFrustum(); +SX_LIB_API IFrustum* SGCore_CrFrustum(); //************************************************************************** //! камера -class ISXCamera : public IBaseObject +class ICamera : public IBaseObject { public: - virtual ~ISXCamera(){}; + virtual ~ICamera(){}; SX_ALIGNED_OP_MEM @@ -1092,11 +1121,11 @@ public: virtual void updateFrustum(const float4x4 *mProjection) = 0; //! возвращает константный указатель фрустума - virtual const ISXFrustum* getFrustum() = 0; + virtual const IFrustum* getFrustum() = 0; }; //! создать ISXCamera -SX_LIB_API ISXCamera* SGCore_CrCamera(); +SX_LIB_API ICamera* SGCore_CrCamera(); //!@} sxgcore_camera diff --git a/source/geom/green.cpp b/source/geom/green.cpp index bf97f943ad51defc357128830b2d7526c19aaf94..a72aa0fa9fe64d68dd9cb0e20d45bb05b6d7c941 100644 --- a/source/geom/green.cpp +++ b/source/geom/green.cpp @@ -637,7 +637,7 @@ void CGreen::ComputeBBtrans(ID idGreen) } } -void CGreen::comArrIndeces(const ISXFrustum* frustum, const float3* viewpos, ID id_arr) +void CGreen::comArrIndeces(const IFrustum* frustum, const float3* viewpos, ID id_arr) { GREEN_PRECOND_ARRCOMFOR_ERR_ID(id_arr); @@ -670,7 +670,7 @@ void CGreen::comArrIndeces(const ISXFrustum* frustum, const float3* viewpos, ID int qwert = 0; } -void CGreen::comRecArrIndeces(ID idGreen, ID idArr, const ISXFrustum* frustum, CSegment** arrsplits, int *count, CSegment* comsegment, const float3* viewpos, Array<CSegment*, GREEN_DEFAULT_RESERVE_COM>* queue, ID curr_splits_ids_render) +void CGreen::comRecArrIndeces(ID idGreen, ID idArr, const IFrustum* frustum, CSegment** arrsplits, int *count, CSegment* comsegment, const float3* viewpos, Array<CSegment*, GREEN_DEFAULT_RESERVE_COM>* queue, ID curr_splits_ids_render) { float3 jcenter; float jradius; @@ -1044,7 +1044,7 @@ ID CGreen::init(CStaticGeom* geom, const char* name, const char* path, const char* lod1, const char* lod2, const char* navmesh) { - if (geom->getCountModel() > 0 && def_str_validate(path)) + if (geom->getCountModel() > 0 && STR_VALIDATE(path)) { CModel* tmpnewmpdel = new CModel(); sprintf(tmpnewmpdel->m_szName, name); @@ -1070,7 +1070,7 @@ ID CGreen::init(CStaticGeom* geom, const char* name, tmpnewmpdel->m_aLods[0]->m_aIDsTextures[i] = SGCore_MtlLoad(tmppathtex, (tmpnewmpdel->m_typeGreen == GREEN_TYPE_TREE ? MTL_TYPE_TREE : MTL_TYPE_GRASS)); } - if (def_str_validate(lod1)) + if (STR_VALIDATE(lod1)) { if (stricmp(path, lod1) == 0) tmpnewmpdel->m_aLods[1] = tmpnewmpdel->m_aLods[0]; @@ -1089,7 +1089,7 @@ ID CGreen::init(CStaticGeom* geom, const char* name, } } - if (def_str_validate(lod2)) + if (STR_VALIDATE(lod2)) { if (stricmp(path, lod2) == 0) tmpnewmpdel->m_aLods[2] = tmpnewmpdel->m_aLods[0]; @@ -1120,7 +1120,7 @@ ID CGreen::init(CStaticGeom* geom, const char* name, float3 tmpmin, tmpmax; geom->getMinMax(&tmpmin, &tmpmax); - if (def_str_validate(path_mask)) + if (STR_VALIDATE(path_mask)) { ID IDTexMask = SGCore_LoadTexAddName(path_mask, LOAD_TEXTURE_TYPE_LOAD); SGCore_LoadTexAllLoad(); @@ -1137,7 +1137,7 @@ ID CGreen::init(CStaticGeom* geom, const char* name, ComputeBBtrans(m_aGreens.size() - 1); - if (def_str_validate(navmesh)) + if (STR_VALIDATE(navmesh)) { setGreenNav(m_aGreens.size() - 1, navmesh); } @@ -2309,7 +2309,7 @@ bool CGreen::traceBeam(const float3* start, const float3* dir, float3* _res, ID* if (m_aGreens.size() <= 0) return false; - SXTriangle tmptri; + CTriangle tmptri; bool tmpiscom = true; float3 ip; float3 res; @@ -2354,9 +2354,9 @@ bool CGreen::traceBeam(const float3* start, const float3* dir, float3* _res, ID* float tmpscale = oDataVertex.m_vTexCoord.x; mat = SMMatrixScaling(tmpscale, tmpscale, tmpscale) * SMMatrixRotationY(oDataVertex.m_vTexCoord.y) * SMMatrixTranslation(oDataVertex.m_vPosition); - tmptri.a = SMVector3Transform(pVertData[pIndData[poly]].Pos, mat); - tmptri.b = SMVector3Transform(pVertData[pIndData[poly + 1]].Pos, mat); - tmptri.c = SMVector3Transform(pVertData[pIndData[poly + 2]].Pos, mat); + tmptri.m_vA = SMVector3Transform(pVertData[pIndData[poly]].Pos, mat); + tmptri.m_vB = SMVector3Transform(pVertData[pIndData[poly + 1]].Pos, mat); + tmptri.m_vC = SMVector3Transform(pVertData[pIndData[poly + 2]].Pos, mat); if (tmptri.IntersectLine((*start), il, &ip)) { diff --git a/source/geom/green.h b/source/geom/green.h index 738632d8282a30557e8ab86e9e096071e55f04a6..b4f265b760331b581e45288eea2ac044139a4143 100644 --- a/source/geom/green.h +++ b/source/geom/green.h @@ -100,7 +100,7 @@ public: void save(const char *szPath); void load(const char *szPath); void clear(); - void comArrIndeces(const ISXFrustum *pFrustum, const float3 *pViewPos, ID idArr = 0); + void comArrIndeces(const IFrustum *pFrustum, const float3 *pViewPos, ID idArr = 0); void render(DWORD timeDelta, const float3 *pViewPos, GREEN_TYPE type, ID idArr = 0); void renderSingly(DWORD timeDelta, const float3 *pViewPos, ID id, ID idTexture); void renderObject(DWORD timeDelta, const float3 *pViewPos, ID id, ID idSplit, ID idObj, ID idTexture); @@ -299,7 +299,7 @@ protected: void getPartBeam(const float3 *pPos, const float3 *pDir, CSegment **ppArrSplits, int *pCount, CSegment *pSegment, ID idCurrSplitRender); void getPartBB(float3 *pMin, float3 *pMax, CSegment **ppArrSplits, int *pCount, CSegment *pSegment, ID idCurrSplitRender); - void comRecArrIndeces(ID idGreen, ID idArr, const ISXFrustum *pFrustum, CSegment **ppArrSplits, int *pCount, CSegment *pSegment, const float3 *pViewPos, Array<CSegment*, GREEN_DEFAULT_RESERVE_COM> *pQueue, ID idCurrSplitRender); + void comRecArrIndeces(ID idGreen, ID idArr, const IFrustum *pFrustum, CSegment **ppArrSplits, int *pCount, CSegment *pSegment, const float3 *pViewPos, Array<CSegment*, GREEN_DEFAULT_RESERVE_COM> *pQueue, ID idCurrSplitRender); void addModelInArrCom(ID idModel); void deleteModelInArrCom(ID idModel); diff --git a/source/geom/static_geom.cpp b/source/geom/static_geom.cpp index e1fc0c5c3b493ef061f26593ac6766b2a6f39d7d..63cb685a383bc0495833e4b06ec4e5ca58654774 100644 --- a/source/geom/static_geom.cpp +++ b/source/geom/static_geom.cpp @@ -239,7 +239,7 @@ ID CStaticGeom::addModel(const char* path, const char* lod1, const char* name) CModel* tmpmodel = new CModel(); ID tmpidmodel = m_aAllModels.size() - 1; - if (!def_str_validate(name)) + if (!STR_VALIDATE(name)) sprintf(tmpmodel->m_szName, ""); else sprintf(tmpmodel->m_szName, "%s", name); @@ -990,7 +990,7 @@ void CStaticGeom::initArrIndexPtr() } -void CStaticGeom::comArrIndeces(const ISXFrustum* frustum, const float3* viewpos, ID id_arr) +void CStaticGeom::comArrIndeces(const IFrustum* frustum, const float3* viewpos, ID id_arr) { STATIC_PRECOND_ARRCOMFOR_ERR_ID(id_arr); @@ -1043,7 +1043,7 @@ void CStaticGeom::comArrIndeces(const ISXFrustum* frustum, const float3* viewpos } } -void CStaticGeom::comRecArrIndeces(ID idArr, const ISXFrustum* frustum, CSegment** arrsplits, int *count, CSegment* comsegment, const float3* viewpos, Array<CSegment*, GEOM_DEFAULT_RESERVE_COM>* queue, ID curr_splits_ids_render) +void CStaticGeom::comRecArrIndeces(ID idArr, const IFrustum* frustum, CSegment** arrsplits, int *count, CSegment* comsegment, const float3* viewpos, Array<CSegment*, GEOM_DEFAULT_RESERVE_COM>* queue, ID curr_splits_ids_render) { float jradius; float3 jcenter; @@ -2950,7 +2950,7 @@ const char* CStaticGeom::getModelLodPath(ID id) void CStaticGeom::setModelLodPath(ID id, const char* path) { - if (id < m_aAllModels.size() && def_str_validate(path)) + if (id < m_aAllModels.size() && STR_VALIDATE(path)) { mem_delete(m_aAllModels[id]->m_oLod0.m_pModel); m_aAllModels[id]->m_oLod0.m_aIDsTextures.clear(); @@ -3335,7 +3335,7 @@ bool CStaticGeom::traceBeam(const float3* start, const float3* dir, float3* _res if (m_aAllModels.size() <= 0) return false; - SXTriangle tmptri; + CTriangle tmptri; bool tmpiscom = true; float3 ip; float3 res; @@ -3363,9 +3363,9 @@ bool CStaticGeom::traceBeam(const float3* start, const float3* dir, float3* _res for (DWORD numpoly = 0; numpoly<m_aArrComFor[1]->m_aIRS[id]->m_ppSegments[k]->m_pCountPoly[group] * 3; numpoly += 3) { - tmptri.a = pData[m_aArrComFor[1]->m_aIRS[id]->m_ppSegments[k]->m_ppArrPoly[group][numpoly]].Pos; - tmptri.b = pData[m_aArrComFor[1]->m_aIRS[id]->m_ppSegments[k]->m_ppArrPoly[group][numpoly + 1]].Pos; - tmptri.c = pData[m_aArrComFor[1]->m_aIRS[id]->m_ppSegments[k]->m_ppArrPoly[group][numpoly + 2]].Pos; + tmptri.m_vA = pData[m_aArrComFor[1]->m_aIRS[id]->m_ppSegments[k]->m_ppArrPoly[group][numpoly]].Pos; + tmptri.m_vB = pData[m_aArrComFor[1]->m_aIRS[id]->m_ppSegments[k]->m_ppArrPoly[group][numpoly + 1]].Pos; + tmptri.m_vC = pData[m_aArrComFor[1]->m_aIRS[id]->m_ppSegments[k]->m_ppArrPoly[group][numpoly + 2]].Pos; if (tmptri.IntersectLine((*start), il, &ip)) { diff --git a/source/geom/static_geom.h b/source/geom/static_geom.h index 6d8526329aa1b1aa59491ab83e4d62d9a0281d2c..b3f9df38b435126ecfb5da074c71263756ab509c 100644 --- a/source/geom/static_geom.h +++ b/source/geom/static_geom.h @@ -355,7 +355,7 @@ public: int getCountModel(); - void comArrIndeces(const ISXFrustum *pFrustum, const float3 *pViewPos, ID idArr = 0); + void comArrIndeces(const IFrustum *pFrustum, const float3 *pViewPos, ID idArr = 0); bool getIntersectedRayY(float3 *pPos); bool sortExistsForRender(int iSortMtl, ID idArr = 0); @@ -468,7 +468,7 @@ protected: void getIntersectedRayY2(float3 *pPos, CSegment **ppSplits, int *iCount, CSegment *pSegment, ID idCurrSplitRender); - void comRecArrIndeces(ID idArr, const ISXFrustum *pFrustum, CSegment **ppSplits, int *iCount, CSegment *pSegment, const float3 *pViewPos, Array<CSegment*, GEOM_DEFAULT_RESERVE_COM> *pQueue, ID idCurrSplitRender); + void comRecArrIndeces(ID idArr, const IFrustum *pFrustum, CSegment **ppSplits, int *iCount, CSegment *pSegment, const float3 *pViewPos, Array<CSegment*, GEOM_DEFAULT_RESERVE_COM> *pQueue, ID idCurrSplitRender); //************************************************************************* diff --git a/source/geom/sxgeom.cpp b/source/geom/sxgeom.cpp index 3e7b1551a544f5bd66aff962d5193fea4f636c1b..500fb5749a59a7c8ef1baf7b065e6c66ad4cbb3d 100644 --- a/source/geom/sxgeom.cpp +++ b/source/geom/sxgeom.cpp @@ -201,7 +201,7 @@ SX_LIB_API int SGeom_ModelsGetCount() return g_pGeometry->getCountModel(); } -SX_LIB_API void SGeom_ModelsComVisible(const ISXFrustum *pFrustum, const float3 *pViewPos, ID idArr) +SX_LIB_API void SGeom_ModelsComVisible(const IFrustum *pFrustum, const float3 *pViewPos, ID idArr) { GEOM_PRECOND(_VOID); g_pGeometry->comArrIndeces(pFrustum, pViewPos, idArr); @@ -477,7 +477,7 @@ SX_LIB_API void SGeom_GreenClear() g_pGreen->clear(); } -SX_LIB_API void SGeom_GreenComVisible(const ISXFrustum* frustum, float3 *pViewPos, ID idArr) +SX_LIB_API void SGeom_GreenComVisible(const IFrustum* frustum, float3 *pViewPos, ID idArr) { GEOM_PRECOND(_VOID); g_pGreen->comArrIndeces(frustum, pViewPos, idArr); diff --git a/source/geom/sxgeom.h b/source/geom/sxgeom.h index 6be504c2b2941c4e2dda35cdbf5d8831a0600cc8..818c29a060972a7707b5f1e1c193917c072ed7ac 100644 --- a/source/geom/sxgeom.h +++ b/source/geom/sxgeom.h @@ -186,7 +186,7 @@ SX_LIB_API int SGeom_ModelsGetCount(); //! просчитать видимость всех моделей для фрустума SX_LIB_API void SGeom_ModelsComVisible( - const ISXFrustum *pFrustum, //!< фрустум для которого считаем видимость моделей + const IFrustum *pFrustum, //!< фрустум для которого считаем видимость моделей const float3 *pViewPos, //!< позиция источника фрустума чтобы просчитать дистанцию ID idArr = 0 //!< идентификатор массива информации о видимости для фрустума, создается через #SGeom_ModelsAddArrForCom, если 0 то считаем в дефолтный ); @@ -533,7 +533,7 @@ SX_LIB_API void SGeom_GreenClear(); //! просчитать видимость всей растительности для фрустума SX_LIB_API void SGeom_GreenComVisible( - const ISXFrustum *pFrustum, //!< фрустум для которого считаем видимость моделей + const IFrustum *pFrustum, //!< фрустум для которого считаем видимость моделей float3 *pViewPos, //!< позиция источника фрустума чтобы просчитать дистанцию ID idArr = 0 //!< идентификатор массива информации о видимости для фрустума, создается через #SGeom_ModelsAddArrForCom, если 0 то считаем в дефолтный ); diff --git a/source/mtllight/light.cpp b/source/mtllight/light.cpp index 24e6501ef27ce3209c27ce21374ad23ffb1ffcec..d9fdb6a22679e0d165579e2600e3f3e94d908bcd 100644 --- a/source/mtllight/light.cpp +++ b/source/mtllight/light.cpp @@ -6,7 +6,7 @@ See the license in LICENSE #include "light.h" -Lights::Lights() +CLights::CLights() { HowShadow = 0; @@ -20,7 +20,7 @@ Lights::Lights() m_isCastGlobalShadow = false; } -Lights::~Lights() +CLights::~CLights() { for (int i = 0; i < ArrLights.size(); ++i) { @@ -33,7 +33,7 @@ Lights::~Lights() SGCore_RTDelete(ShadowMap2); } -ID Lights::CreateCopy(ID id) +ID CLights::createCopy(ID id) { LIGHTS_PRE_COND_ID(id,-1); @@ -116,10 +116,10 @@ ID Lights::CreateCopy(ID id) tmplight->Mesh->CloneMeshFVF(tmplight->Mesh->GetOptions(), tmplight->Mesh->GetFVF(), MLSet::DXDevice, &(tmplight2->Mesh)); - return AddLight(tmplight); + return addLight(tmplight); } -Lights::Light::Light() +CLights::Light::Light() { TypeLight = LTYPE_LIGHT_NONE; Name[0] = 0; @@ -148,7 +148,7 @@ Lights::Light::Light() ShadowCube = 0; } -Lights::Light::~Light() +CLights::Light::~Light() { mem_release_del(Mesh); mem_release_del(BoundVolume); @@ -158,7 +158,7 @@ Lights::Light::~Light() mem_delete(ShadowCube); } -void Lights::OnLostDevice() +void CLights::onLostDevice() { for (int i = 0; i < ArrLights.size(); ++i) { @@ -171,7 +171,7 @@ void Lights::OnLostDevice() } } -void Lights::OnResetDevice() +void CLights::onResetDevice() { for (int i = 0; i < ArrLights.size(); ++i) { @@ -182,11 +182,11 @@ void Lights::OnResetDevice() else if (ArrLights[i]->ShadowPSSM) ArrLights[i]->ShadowPSSM->OnResetDevice(); - LightCountUpdateNull(i); + lightCountUpdateNull(i); } } -ID Lights::AddLight(Light* obj) +ID CLights::addLight(Light* obj) { ID idadd = -1; @@ -205,12 +205,12 @@ ID Lights::AddLight(Light* obj) return obj->Id; } -int Lights::GetCountLights() const +int CLights::getCountLights() const { return ArrLights.size(); } -void Lights::Clear() +void CLights::clear() { for (int i = 0; i < ArrLights.size(); ++i) { @@ -221,7 +221,7 @@ void Lights::Clear() GlobalLight = -1; } -void Lights::ClearIDArr() +void CLights::clearIDArr() { for (int i = 0; i < ArrLights.size(); ++i) { @@ -261,12 +261,12 @@ void Lights::ClearIDArr() } } -bool Lights::getExists(ID id) const +bool CLights::getExists(ID id) const { return (ArrLights.size() > id && ArrLights[id]); } -void Lights::DeleteLight(ID id) +void CLights::deleteLight(ID id) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -280,24 +280,27 @@ void Lights::DeleteLight(ID id) ArrFreeIDs.push_back(id); } -char* Lights::GetLightName(ID id) +char* CLights::getLightName(ID id) { LIGHTS_PRE_COND_ID(id, 0); return ArrLights[id]->Name; } -void Lights::SetLightName(ID id, const char* name) +void CLights::setLightName(ID id, const char* name) { LIGHTS_PRE_COND_ID(id, _VOID); sprintf(ArrLights[id]->Name, "%s", name); } -ID Lights::CreatePoint(ID id, const float3* center, float dist, const float3* color, bool isglobal, bool is_shadow/*, const char* bound_volume*/) +ID CLights::createPoint(ID id, const float3* center, float dist, const float3* color, bool isglobal, bool is_shadow/*, const char* bound_volume*/) { if (GlobalLight != -1 && isglobal) { - LibReport(REPORT_MSG_LEVEL_ERROR, "%s - light: global light exists, you can not create 2 global light sources", GEN_MSG_LOCATION); - return -1; + setLightPos(GlobalLight, center); + setLightColor(GlobalLight, color); + setLightTypeShadowed(GlobalLight, (is_shadow ? LTYPE_SHADOW_DYNAMIC : LTYPE_SHADOW_NONE)); + LibReport(REPORT_MSG_LEVEL_WARNING, "%s - light: global light exists, you can not create 2 global light sources\n", GEN_MSG_LOCATION); + return GlobalLight; } Light* tmplight = 0;// new Light(); @@ -356,9 +359,9 @@ ID Lights::CreatePoint(ID id, const float3* center, float dist, const float3* co ID tmpid = id; if (id == -1) - tmpid = AddLight(tmplight); + tmpid = addLight(tmplight); - SetLightPos(tmpid, &float3(center->x, center->y, center->z)); + setLightPos(tmpid, &float3(center->x, center->y, center->z)); tmplight->Color = *color; tmplight->IsEnable = true; @@ -374,7 +377,7 @@ ID Lights::CreatePoint(ID id, const float3* center, float dist, const float3* co return tmpid; } -ID Lights::CreateDirection(ID id, const float3* pos, float dist, const float3* color, const SMQuaternion* orient, float top_radius, float angle, bool is_shadow/*, const char* bound_volume*/) +ID CLights::createDirection(ID id, const float3* pos, float dist, const float3* color, const SMQuaternion* orient, float top_radius, float angle, bool is_shadow/*, const char* bound_volume*/) { Light* tmplight = 0; @@ -439,12 +442,12 @@ ID Lights::CreateDirection(ID id, const float3* pos, float dist, const float3* c ID tmpid = id; if (id == -1) - tmpid = AddLight(tmplight); + tmpid = addLight(tmplight); return tmpid; } -void Lights::Render(ID id, DWORD timeDelta) +void CLights::render(ID id, DWORD timeDelta) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -454,36 +457,36 @@ void Lights::Render(ID id, DWORD timeDelta) Core_RIntSet(G_RI_INT_COUNT_POLY, Core_RIntGet(G_RI_INT_COUNT_POLY) + (ArrLights[id]->Mesh->GetNumFaces() / 3)); } -ID Lights::GetLightGlobal() const +ID CLights::getLightGlobal() const { return GlobalLight; } -bool Lights::GetCastGlobalShadow() const +bool CLights::getCastGlobalShadow() const { return m_isCastGlobalShadow; } -void Lights::SetCastGlobalShadow(bool isShadowed) +void CLights::setCastGlobalShadow(bool isShadowed) { m_isCastGlobalShadow = isShadowed; } -void Lights::GetLightColor(ID id, float3* vec) const +void CLights::getLightColor(ID id, float3* vec) const { LIGHTS_PRE_COND_ID(id, _VOID); (*vec) = ArrLights[id]->Color; } -void Lights::SetLightColor(ID id, const float3* vec) +void CLights::setLightColor(ID id, const float3* vec) { LIGHTS_PRE_COND_ID(id, _VOID); ArrLights[id]->Color = *vec; } -void Lights::GetLightPos(ID id, float3* vec, bool greal) const +void CLights::getLightPos(ID id, float3* vec, bool greal) const { LIGHTS_PRE_COND_ID(id, _VOID); @@ -501,7 +504,7 @@ void Lights::GetLightPos(ID id, float3* vec, bool greal) const } } -float Lights::GetLightPower(ID id) const +float CLights::getLightPower(ID id) const { LIGHTS_PRE_COND_ID(id, -1); @@ -521,14 +524,14 @@ float Lights::GetLightPower(ID id) const } } -float Lights::GetLightDist(ID id) const +float CLights::getLightDist(ID id) const { LIGHTS_PRE_COND_ID(id, -1); return ArrLights[id]->Dist; } -void Lights::SetLightDist(ID id, float radius_height, bool is_create) +void CLights::setLightDist(ID id, float radius_height, bool is_create) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -560,10 +563,10 @@ void Lights::SetLightDist(ID id, float radius_height, bool is_create) mem_release_del(vertexbuf); } - LightCountUpdateNull(id); + lightCountUpdateNull(id); } -void Lights::SetLightPos(ID id, const float3* vec, bool greal) +void CLights::setLightPos(ID id, const float3* vec, bool greal) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -613,17 +616,17 @@ void Lights::SetLightPos(ID id, const float3* vec, bool greal) } } - LightCountUpdateNull(id); + lightCountUpdateNull(id); } -void Lights::GetLightOrient(ID id, SMQuaternion* q) const +void CLights::getLightOrient(ID id, SMQuaternion* q) const { LIGHTS_PRE_COND_ID(id, _VOID); *q = ArrLights[id]->Quaternion; } -void Lights::SetLightOrient(ID id, const SMQuaternion* q) +void CLights::setLightOrient(ID id, const SMQuaternion* q) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -632,10 +635,10 @@ void Lights::SetLightOrient(ID id, const SMQuaternion* q) if (ArrLights[id]->ShadowSM) ArrLights[id]->ShadowSM->SetDirection(&(ArrLights[id]->Quaternion * LIGHTS_DIR_BASE)); - LightCountUpdateNull(id); + lightCountUpdateNull(id); } -void Lights::SetShadowBias(ID id, float val) +void CLights::setShadowBias(ID id, float val) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -644,10 +647,10 @@ void Lights::SetShadowBias(ID id, float val) else if (ArrLights[id]->ShadowCube) ArrLights[id]->ShadowCube->SetBias(val); - LightCountUpdateNull(id); + lightCountUpdateNull(id); } -float Lights::GetShadowBias(ID id) const +float CLights::getShadowBias(ID id) const { LIGHTS_PRE_COND_ID(id, -1); @@ -658,7 +661,7 @@ float Lights::GetShadowBias(ID id) const return(0); } -float Lights::GetLightTopRadius(ID id) const +float CLights::getLightTopRadius(ID id) const { LIGHTS_PRE_COND_ID(id, -1); @@ -667,7 +670,7 @@ float Lights::GetLightTopRadius(ID id) const return(0); } -float Lights::GetLightAngle(ID id) const +float CLights::getLightAngle(ID id) const { LIGHTS_PRE_COND_ID(id, -1); @@ -677,7 +680,7 @@ float Lights::GetLightAngle(ID id) const } -bool Lights::ComVisibleForFrustum(ID id, const ISXFrustum* frustum) +bool CLights::comVisibleForFrustum(ID id, const IFrustum* frustum) { LIGHTS_PRE_COND_ID(id, false); @@ -689,73 +692,73 @@ bool Lights::ComVisibleForFrustum(ID id, const ISXFrustum* frustum) return frustum->sphereInFrustum(&tmpcenter, tmpradius); } -bool Lights::GetVisibleForFrustum(ID id) +bool CLights::getVisibleForFrustum(ID id) { LIGHTS_PRE_COND_ID(id, false); return ArrLights[id]->IsVisibleFor; } -float Lights::ComDistFor(ID id, const float3* vec) +float CLights::comDistFor(ID id, const float3* vec) { LIGHTS_PRE_COND_ID(id, -1); return SMVector3Distance((float3)ArrLights[id]->Position, *vec); } -void Lights::ComVisibleFrustumDistFor(const ISXFrustum* frustum, const float3* vec) +void CLights::comVisibleFrustumDistFor(const IFrustum* frustum, const float3* vec) { for (int i = 0; i < ArrLights.size(); ++i) { if (ArrLights[i]) { ArrLights[i]->DistFor = SMVector3Distance((float3)ArrLights[i]->Position, *vec); - ArrLights[i]->IsVisibleFor = ComVisibleForFrustum(ArrLights[i]->Id, frustum); + ArrLights[i]->IsVisibleFor = comVisibleForFrustum(ArrLights[i]->Id, frustum); } } } -float Lights::GetDistFor(ID id) +float CLights::getDistFor(ID id) { LIGHTS_PRE_COND_ID(id, -1); return ArrLights[id]->DistFor; } -IDirect3DTexture9* Lights::GetShadow2() +IDirect3DTexture9* CLights::getShadow2() { return SGCore_RTGetTexture((HowShadow == 1 ? ShadowMap2 : ShadowMap)); } -bool Lights::GetLightEnable(ID id) const +bool CLights::getLightEnable(ID id) const { LIGHTS_PRE_COND_ID(id, false); return ArrLights[id]->IsEnable; } -void Lights::SetLightEnable(ID id, bool val) +void CLights::setLightEnable(ID id, bool val) { LIGHTS_PRE_COND_ID(id, _VOID); ArrLights[id]->IsEnable = val; - LightCountUpdateNull(id); + lightCountUpdateNull(id); } -bool Lights::GetLightShadowed(ID id) const +bool CLights::getLightShadowed(ID id) const { LIGHTS_PRE_COND_ID(id, false); return (ArrLights[id]->TypeShadowed != LTYPE_SHADOW_NONE); } -LTYPE_LIGHT Lights::GetLightType(ID id) const +LTYPE_LIGHT CLights::getLightType(ID id) const { LIGHTS_PRE_COND_ID(id, LTYPE_LIGHT_NONE); return ArrLights[id]->TypeLight; } -void Lights::ShadowRenderBegin(ID id) +void CLights::shadowRenderBegin(ID id) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -767,7 +770,7 @@ void Lights::ShadowRenderBegin(ID id) ArrLights[id]->ShadowPSSM->Begin(); } -void Lights::ShadowRenderEnd(ID id) +void CLights::shadowRenderEnd(ID id) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -779,7 +782,7 @@ void Lights::ShadowRenderEnd(ID id) ArrLights[id]->ShadowPSSM->End(); } -void Lights::ShadowRenderPre(ID id, int cube) +void CLights::shadowRenderPre(ID id, int cube) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -789,7 +792,7 @@ void Lights::ShadowRenderPre(ID id, int cube) ArrLights[id]->ShadowPSSM->PreRender(cube); } -void Lights::ShadowRenderPost(ID id, int cube) +void CLights::shadowRenderPost(ID id, int cube) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -797,7 +800,7 @@ void Lights::ShadowRenderPost(ID id, int cube) ArrLights[id]->ShadowCube->Post(cube); } -void Lights::InitShaderOfTypeMaterial(ID id, int typemat, float4x4* wmat) +void CLights::initShaderOfTypeMaterial(ID id, int typemat, float4x4* wmat) { if (!wmat) wmat = &SMMatrixIdentity(); @@ -870,7 +873,7 @@ void Lights::InitShaderOfTypeMaterial(ID id, int typemat, float4x4* wmat) } } -ISXFrustum* Lights::GetLightFrustum(ID id, int how) const +IFrustum* CLights::getLightFrustum(ID id, int how) const { LIGHTS_PRE_COND_ID(id, 0); @@ -892,7 +895,7 @@ ISXFrustum* Lights::GetLightFrustum(ID id, int how) const return(NULL); } -ISXFrustum* Lights::GetLightFrustumG(ID id, int split) const +IFrustum* CLights::getLightFrustumG(ID id, int split) const { LIGHTS_PRE_COND_ID(id, 0); @@ -901,14 +904,14 @@ ISXFrustum* Lights::GetLightFrustumG(ID id, int split) const return(NULL); } -void Lights::UpdateLightGFrustums(ID id, int split, const float3* pos, const float3* dir) +void CLights::updateLightGFrustums(ID id, int split, const float3* pos, const float3* dir) { LIGHTS_PRE_COND_ID(id, _VOID); ArrLights[id]->ShadowPSSM->UpdateFrustums(split, pos, dir); } -void Lights::ShadowGen2(ID id) +void CLights::shadowGen2(ID id) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -925,7 +928,7 @@ void Lights::ShadowGen2(ID id) } } -void Lights::ShadowNull() +void CLights::shadowNull() { LPDIRECT3DSURFACE9 RenderSurf, BackBuf; @@ -946,7 +949,7 @@ void Lights::ShadowNull() HowShadow = 0; } -void Lights::SetLightAngle(ID id, float angle, bool is_create) +void CLights::setLightAngle(ID id, float angle, bool is_create) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -970,10 +973,10 @@ void Lights::SetLightAngle(ID id, float angle, bool is_create) if (ArrLights[id]->TypeLight == LTYPE_LIGHT_DIR && ArrLights[id]->ShadowSM) ArrLights[id]->ShadowSM->SetAngleNearFar(&float3(angle, 0.1, ArrLights[id]->Dist)); - LightCountUpdateNull(id); + lightCountUpdateNull(id); } -void Lights::SetLightTopRadius(ID id, float top_radius) +void CLights::setLightTopRadius(ID id, float top_radius) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -992,10 +995,10 @@ void Lights::SetLightTopRadius(ID id, float top_radius) mem_release_del(vertexbuf); } - LightCountUpdateNull(id); + lightCountUpdateNull(id); } -void Lights::SetShadowBlurPixel(ID id, float blur_pixel) +void CLights::setShadowBlurPixel(ID id, float blur_pixel) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -1006,10 +1009,10 @@ void Lights::SetShadowBlurPixel(ID id, float blur_pixel) else if (ArrLights[id]->ShadowPSSM) ArrLights[id]->ShadowPSSM->SetBlurPixel(blur_pixel); - LightCountUpdateNull(id); + lightCountUpdateNull(id); } -float Lights::GetShadowBlurPixel(ID id) const +float CLights::getShadowBlurPixel(ID id) const { LIGHTS_PRE_COND_ID(id, -1); @@ -1022,7 +1025,7 @@ float Lights::GetShadowBlurPixel(ID id) const return(0); } -void Lights::SetShadowLocalNear(ID id, float slnear) +void CLights::setShadowLocalNear(ID id, float slnear) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -1031,10 +1034,10 @@ void Lights::SetShadowLocalNear(ID id, float slnear) else if (ArrLights[id]->ShadowSM) ArrLights[id]->ShadowSM->SetNear(slnear); - LightCountUpdateNull(id); + lightCountUpdateNull(id); } -float Lights::GetShadowLocalNear(ID id) const +float CLights::getShadowLocalNear(ID id) const { LIGHTS_PRE_COND_ID(id, -1); @@ -1045,7 +1048,7 @@ float Lights::GetShadowLocalNear(ID id) const return(0); } -void Lights::SetShadowLocalFar(ID id, float slfar) +void CLights::setShadowLocalFar(ID id, float slfar) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -1059,10 +1062,10 @@ void Lights::SetShadowLocalFar(ID id, float slfar) else if (ArrLights[id]->ShadowSM) ArrLights[id]->ShadowSM->SetFar(slfar); - LightCountUpdateNull(id); + lightCountUpdateNull(id); } -float Lights::GetShadowLocalFar(ID id) const +float CLights::getShadowLocalFar(ID id) const { LIGHTS_PRE_COND_ID(id, -1); @@ -1078,17 +1081,17 @@ float Lights::GetShadowLocalFar(ID id) const return ArrLights[id]->Dist; } -void Lights::SetLightCubeEdgeEnable(ID id, int edge, bool enable) +void CLights::setLightCubeEdgeEnable(ID id, int edge, bool enable) { LIGHTS_PRE_COND_ID(id, _VOID); if (ArrLights[id]->ShadowCube) ArrLights[id]->ShadowCube->SetEnableCubeEdge(edge, enable); - LightCountUpdateNull(id); + lightCountUpdateNull(id); } -bool Lights::GetLightCubeEdgeEnable(ID id, int edge) const +bool CLights::getLightCubeEdgeEnable(ID id, int edge) const { LIGHTS_PRE_COND_ID(id, false); @@ -1097,7 +1100,7 @@ bool Lights::GetLightCubeEdgeEnable(ID id, int edge) const return(false); } -ID Lights::GetLightIDArr(ID id, ID inid, int how) +ID CLights::getLightIDArr(ID id, ID inid, int how) { LIGHTS_PRE_COND_ID(id, -1); @@ -1119,7 +1122,7 @@ ID Lights::GetLightIDArr(ID id, ID inid, int how) return(-1); } -void Lights::SetLightIDArr(ID id, ID inid, int how, ID id_arr) +void CLights::setLightIDArr(ID id, ID inid, int how, ID id_arr) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -1140,10 +1143,13 @@ void Lights::SetLightIDArr(ID id, ID inid, int how, ID id_arr) } } -void Lights::SetLightTypeShadowed(ID id, LTYPE_SHADOW type) +void CLights::setLightTypeShadowed(ID id, LTYPE_SHADOW type) { LIGHTS_PRE_COND_ID(id, _VOID); + if (ArrLights[id]->TypeShadowed == type) + return; + ArrLights[id]->TypeShadowed = type; if (ArrLights[id]->TypeLight == LTYPE_LIGHT_DIR) @@ -1180,10 +1186,10 @@ void Lights::SetLightTypeShadowed(ID id, LTYPE_SHADOW type) } } - LightCountUpdateNull(id); + lightCountUpdateNull(id); } -LTYPE_SHADOW Lights::GetLightTypeShadowed(ID id) const +LTYPE_SHADOW CLights::getLightTypeShadowed(ID id) const { LIGHTS_PRE_COND_ID(id, LTYPE_SHADOW_NONE); @@ -1191,7 +1197,7 @@ LTYPE_SHADOW Lights::GetLightTypeShadowed(ID id) const } -bool Lights::LightCountUpdateUpdate(ID id, const float3* viewpos, int ghow) +bool CLights::lightCountUpdateUpdate(ID id, const float3* viewpos, int ghow) { LIGHTS_PRE_COND_ID(id, false); @@ -1261,7 +1267,7 @@ bool Lights::LightCountUpdateUpdate(ID id, const float3* viewpos, int ghow) return(false); } -bool Lights::LightCountUpdateAllowed(ID id, int ghow) const +bool CLights::lightCountUpdateAllowed(ID id, int ghow) const { LIGHTS_PRE_COND_ID(id, false); @@ -1280,7 +1286,7 @@ bool Lights::LightCountUpdateAllowed(ID id, int ghow) const return(ArrLights[id]->CountUpdate == 0); } -void Lights::LightCountUpdateNull(ID id) +void CLights::lightCountUpdateNull(ID id) { if (id >= 0 && id < ArrLights.size()) { @@ -1297,7 +1303,7 @@ void Lights::LightCountUpdateNull(ID id) } } -void Lights::ShadowSoft(bool randomsam, float size, bool isfirst) +void CLights::shadowSoft(bool randomsam, float size, bool isfirst) { if (isfirst) HowShadow = 0; @@ -1369,7 +1375,7 @@ void Lights::ShadowSoft(bool randomsam, float size, bool isfirst) HowShadow = 1; } -void Lights::ToneMappingCom(DWORD timeDelta, float factor_adapted) +void CLights::toneMappingCom(DWORD timeDelta, float factor_adapted) { static const int *r_win_width = GET_PCVAR_INT("r_win_width"); static const int *r_win_height = GET_PCVAR_INT("r_win_height"); @@ -1491,7 +1497,7 @@ void Lights::ToneMappingCom(DWORD timeDelta, float factor_adapted) } -void Lights::Set4Or3Splits(ID id, bool is4) +void CLights::set4Or3Splits(ID id, bool is4) { LIGHTS_PRE_COND_ID(id, _VOID); @@ -1499,7 +1505,7 @@ void Lights::Set4Or3Splits(ID id, bool is4) ArrLights[id]->ShadowPSSM->Set4Or3Splits(is4); } -bool Lights::Get4Or3Splits(ID id) +bool CLights::get4Or3Splits(ID id) { LIGHTS_PRE_COND_ID(id, false); @@ -1511,25 +1517,25 @@ bool Lights::Get4Or3Splits(ID id) //########################################################################## -int Lights::DelGetCount() +int CLights::delGetCount() { return ArrDelLights.size(); } -LTYPE_LIGHT Lights::DelGetType(ID key) +LTYPE_LIGHT CLights::delGetType(ID key) { LIGHTS_PRE_COND_KEY_DEL(key, LTYPE_LIGHT_NONE); return ArrDelLights[key]->TypeLight; } -void Lights::DelDel(ID key) +void CLights::delDel(ID key) { LIGHTS_PRE_COND_KEY_DEL(key, _VOID); mem_delete(ArrDelLights[key]); ArrDelLights.erase(key); } -ID Lights::DelGetIDArr(ID key, ID inid, int how) +ID CLights::delGetIDArr(ID key, ID inid, int how) { LIGHTS_PRE_COND_KEY_DEL(key, -1); diff --git a/source/mtllight/light.h b/source/mtllight/light.h index 41326569f872cd231348a36541398577fb3a7783..5cf2ba1ce8bcd291257d5370fb74898bff818429 100644 --- a/source/mtllight/light.h +++ b/source/mtllight/light.h @@ -29,154 +29,154 @@ if (!(key >= 0 && key < ArrDelLights.size()))\ {LibReport(REPORT_MSG_LEVEL_ERROR, "%s - light: unresolved key of access '%d'", GEN_MSG_LOCATION, key); return stdval; } #include "shadow.h" -//#include <common\\string.cpp> -class Lights + +class CLights { public: - Lights(); - ~Lights(); + CLights(); + ~CLights(); - ID CreateCopy(ID id); + ID createCopy(ID id); - void OnLostDevice(); - void OnResetDevice(); + void onLostDevice(); + void onResetDevice(); - int GetCountLights() const; - void Clear(); + int getCountLights() const; + void clear(); //очистка массивов идентификацторов (просчетов видимости) - void ClearIDArr(); + void clearIDArr(); bool getExists(ID id) const; - ID CreatePoint(ID id, const float3* center, float dist, const float3* color, bool isglobal, bool is_shadow/*, const char* bound_volume*/); - ID CreateDirection(ID id, const float3* pos, float dist, const float3* color, const SMQuaternion* orient, float top_radius, float angle, bool is_shadow/*, const char* bound_volume*/); + ID createPoint(ID id, const float3* center, float dist, const float3* color, bool isglobal, bool is_shadow/*, const char* bound_volume*/); + ID createDirection(ID id, const float3* pos, float dist, const float3* color, const SMQuaternion* orient, float top_radius, float angle, bool is_shadow/*, const char* bound_volume*/); - void DeleteLight(ID id); + void deleteLight(ID id); - void Render(ID id, DWORD timeDelta); + void render(ID id, DWORD timeDelta); - ID GetLightGlobal() const; + ID getLightGlobal() const; - bool GetCastGlobalShadow() const; - void SetCastGlobalShadow(bool isShadowed); + bool getCastGlobalShadow() const; + void setCastGlobalShadow(bool isShadowed); //----------------------------------------------------------------------------- - char* GetLightName(ID id); - void SetLightName(ID id, const char* name); + char* getLightName(ID id); + void setLightName(ID id, const char* name); - void GetLightColor(ID id, float3* vec) const; - void SetLightColor(ID id, const float3* vec); + void getLightColor(ID id, float3* vec) const; + void setLightColor(ID id, const float3* vec); - void GetLightPos(ID id, float3* vec, bool greal = false) const; - void SetLightPos(ID id, const float3* vec, bool greal = false); + void getLightPos(ID id, float3* vec, bool greal = false) const; + void setLightPos(ID id, const float3* vec, bool greal = false); - float GetLightPower(ID id) const; + float getLightPower(ID id) const; - float GetLightDist(ID id) const; - void SetLightDist(ID id, float radius_height, bool is_create); + float getLightDist(ID id) const; + void setLightDist(ID id, float radius_height, bool is_create); //----------------------------------------------------------------------------- - void GetLightOrient(ID id, SMQuaternion* q) const; - void SetLightOrient(ID id, const SMQuaternion* q); + void getLightOrient(ID id, SMQuaternion* q) const; + void setLightOrient(ID id, const SMQuaternion* q); - float GetLightTopRadius(ID id) const; - void SetLightTopRadius(ID id, float top_radius); + float getLightTopRadius(ID id) const; + void setLightTopRadius(ID id, float top_radius); - float GetLightAngle(ID id) const; - void SetLightAngle(ID id, float angle, bool is_create); + float getLightAngle(ID id) const; + void setLightAngle(ID id, float angle, bool is_create); - void SetLightCubeEdgeEnable(ID id, int edge, bool enable); - bool GetLightCubeEdgeEnable(ID id, int edge) const; + void setLightCubeEdgeEnable(ID id, int edge, bool enable); + bool getLightCubeEdgeEnable(ID id, int edge) const; //----------------------------------------------------------------------------- - void SetShadowBias(ID id, float val); - float GetShadowBias(ID id) const; + void setShadowBias(ID id, float val); + float getShadowBias(ID id) const; - void SetShadowBlurPixel(ID id, float blur_pixel); - float GetShadowBlurPixel(ID id) const; + void setShadowBlurPixel(ID id, float blur_pixel); + float getShadowBlurPixel(ID id) const; - void SetShadowLocalNear(ID id, float slnear); - float GetShadowLocalNear(ID id) const; + void setShadowLocalNear(ID id, float slnear); + float getShadowLocalNear(ID id) const; - void SetShadowLocalFar(ID id, float slfar); - float GetShadowLocalFar(ID id) const; + void setShadowLocalFar(ID id, float slfar); + float getShadowLocalFar(ID id) const; //----------------------------------------------------------------------------- - bool ComVisibleForFrustum(ID id, const ISXFrustum* frustum); - bool GetVisibleForFrustum(ID id); - float ComDistFor(ID id, const float3* vec); - float GetDistFor(ID id); - void ComVisibleFrustumDistFor(const ISXFrustum* frustum, const float3* vec); + bool comVisibleForFrustum(ID id, const IFrustum* frustum); + bool getVisibleForFrustum(ID id); + float comDistFor(ID id, const float3* vec); + float getDistFor(ID id); + void comVisibleFrustumDistFor(const IFrustum* frustum, const float3* vec); //----------------------------------------------------------------------------- - bool GetLightEnable(ID id) const; - void SetLightEnable(ID id, bool val); - bool GetLightShadowed(ID id) const; - LTYPE_LIGHT GetLightType(ID id) const; - void SetLightTypeShadowed(ID id, LTYPE_SHADOW type); - LTYPE_SHADOW GetLightTypeShadowed(ID id) const; + bool getLightEnable(ID id) const; + void setLightEnable(ID id, bool val); + bool getLightShadowed(ID id) const; + LTYPE_LIGHT getLightType(ID id) const; + void setLightTypeShadowed(ID id, LTYPE_SHADOW type); + LTYPE_SHADOW getLightTypeShadowed(ID id) const; //----------------------------------------------------------------------------- - IDirect3DTexture9* GetShadow2(); + IDirect3DTexture9* getShadow2(); - void ShadowRenderBegin(ID id); - void ShadowRenderEnd(ID id); - void ShadowRenderPre(ID id, int cube); - void ShadowRenderPost(ID id, int cube); + void shadowRenderBegin(ID id); + void shadowRenderEnd(ID id); + void shadowRenderPre(ID id, int cube); + void shadowRenderPost(ID id, int cube); //----------------------------------------------------------------------------- - void InitShaderOfTypeMaterial(ID id, int typemat, float4x4* wmat); + void initShaderOfTypeMaterial(ID id, int typemat, float4x4* wmat); //----------------------------------------------------------------------------- - ISXFrustum* GetLightFrustum(ID id, int how) const; - ISXFrustum* GetLightFrustumG(ID id, int split) const; + IFrustum* getLightFrustum(ID id, int how) const; + IFrustum* getLightFrustumG(ID id, int split) const; - void UpdateLightGFrustums(ID id, int split, const float3* pos, const float3* dir); + void updateLightGFrustums(ID id, int split, const float3* pos, const float3* dir); //----------------------------------------------------------------------------- - ID GetLightIDArr(ID id, ID inid, int how); - void SetLightIDArr(ID id, ID inid, int how, ID id_arr); + ID getLightIDArr(ID id, ID inid, int how); + void setLightIDArr(ID id, ID inid, int how, ID id_arr); //----------------------------------------------------------------------------- - bool LightCountUpdateUpdate(ID id, const float3* viewpos, int ghow = -1); - bool LightCountUpdateAllowed(ID id, int ghow = -1) const; - void LightCountUpdateNull(ID id); + bool lightCountUpdateUpdate(ID id, const float3* viewpos, int ghow = -1); + bool lightCountUpdateAllowed(ID id, int ghow = -1) const; + void lightCountUpdateNull(ID id); //----------------------------------------------------------------------------- - void ToneMappingCom(DWORD timeDelta, float factor_adapted = 10); + void toneMappingCom(DWORD timeDelta, float factor_adapted = 10); //----------------------------------------------------------------------------- - void Set4Or3Splits(ID id, bool is4); - bool Get4Or3Splits(ID id); + void set4Or3Splits(ID id, bool is4); + bool get4Or3Splits(ID id); //----------------------------------------------------------------------------- - void ShadowGen(ID id); - void ShadowNull(); - void ShadowGen2(ID id); - void ShadowSoft(bool randomsam, float size, bool isfirst = false); + void shadowGen(ID id); + void shadowNull(); + void shadowGen2(ID id); + void shadowSoft(bool randomsam, float size, bool isfirst = false); //----------------------------------------------------------------------------- - int DelGetCount(); - LTYPE_LIGHT DelGetType(ID key); - void DelDel(ID key); - ID DelGetIDArr(ID key, ID inid, int how); + int delGetCount(); + LTYPE_LIGHT delGetType(ID key); + void delDel(ID key); + ID delGetIDArr(ID key, ID inid, int how); //----------------------------------------------------------------------------- @@ -224,7 +224,7 @@ public: }; protected: - ID AddLight(Light* obj); + ID addLight(Light* obj); Array<Light*> ArrLights; //массив всех элементов, основанный на id Array<Light*> ArrDelLights; //массив света который надо удалить diff --git a/source/mtllight/material.cpp b/source/mtllight/material.cpp index a3598d3c0649db4a221186797cf52462ce717f18..a4d93d93e03e6d458070fb4d9e5a5f2d8e8d56d1 100644 --- a/source/mtllight/material.cpp +++ b/source/mtllight/material.cpp @@ -459,7 +459,7 @@ void Materials::MtlRefPreRenderPlane(ID id, D3DXPLANE* plane) ArrMaterials[id]->Reflect->preRenderRefPlane(plane); } -const ISXFrustum* Materials::MtlRefGetfrustum(ID id, int cube) +const IFrustum* Materials::MtlRefGetfrustum(ID id, int cube) { MTL_REF_PRE_COND_ID(id, 0); if (cube == 0 || (cube > 0 && (ArrMaterials[id]->Reflect->getTypeReflect() == MTLTYPE_REFLECT_CUBE_STATIC || ArrMaterials[id]->Reflect->getTypeReflect() == MTLTYPE_REFLECT_CUBE_DYNAMIC))) @@ -1188,12 +1188,12 @@ bool Materials::LoadMtl(const char* name, Material** mtl) tmpMtl->PhysicsMaterial = MTLTYPE_PHYSIC_DEFAULT; - if (def_str_validate(tmpVS)) + if (STR_VALIDATE(tmpVS)) tmpMtl->PreShaderVS = SGCore_ShaderLoad(SHADER_TYPE_VERTEX, tmpVS, tmpVS, SHADER_CHECKDOUBLE_PATH); else tmpMtl->PreShaderVS = SGCore_ShaderGetID(SHADER_TYPE_VERTEX, "mtrlgeom_base.vs"); - if (def_str_validate(tmpPS)) + if (STR_VALIDATE(tmpPS)) tmpMtl->PreShaderPS = SGCore_ShaderLoad(SHADER_TYPE_PIXEL, tmpPS, tmpPS, SHADER_CHECKDOUBLE_PATH); else tmpMtl->PreShaderPS = SGCore_ShaderGetID(SHADER_TYPE_PIXEL, "mtrlgeom_base.ps"); diff --git a/source/mtllight/material.h b/source/mtllight/material.h index 65a5f56277dd809bce1e48ba3d6bb09898b3c203..1ca4ec22692e8bfaebdbe2cd64347b3ff66e054c 100644 --- a/source/mtllight/material.h +++ b/source/mtllight/material.h @@ -77,7 +77,7 @@ public: //void MtlRefSetPlane(ID id, D3DXPLANE* plane); //void MtlRefSetCenter(ID id, float3_t* center); void MtlRefPreRenderPlane(ID id, D3DXPLANE* plane); - const ISXFrustum* MtlRefGetfrustum(ID id, int cube); + const IFrustum* MtlRefGetfrustum(ID id, int cube); void MtlRefPostRenderPlane(ID id); IDirect3DTexture9* MtlRefPlaneGetTex(ID id); diff --git a/source/mtllight/reflection.cpp b/source/mtllight/reflection.cpp index 8e8d4fa9a3112a9319b5862a3b7a4c9e62beb9a9..8e6b25843a4c71e14980fc2604ee7f5a0f3fd307 100644 --- a/source/mtllight/reflection.cpp +++ b/source/mtllight/reflection.cpp @@ -130,7 +130,7 @@ MTLTYPE_REFLECT CReflection::getTypeReflect() return type_reflection; } -const ISXFrustum* CReflection::getFrustum(ID id) +const IFrustum* CReflection::getFrustum(ID id) { return m_aFrustums[id]; } diff --git a/source/mtllight/reflection.h b/source/mtllight/reflection.h index 39351d5e8b62c59759b8c88872a721d38e0a9b74..f4bf34729c9f5db41e4e0044299cdc904f9dfa05 100644 --- a/source/mtllight/reflection.h +++ b/source/mtllight/reflection.h @@ -41,7 +41,7 @@ public: MTLTYPE_REFLECT getTypeReflect(); //! возвращает фрустум по id, для плоских отражений 0, для кубических [0,5] - const ISXFrustum* getFrustum(ID id); + const IFrustum* getFrustum(ID id); //! обновление количесвтенных данных обновления, возаращет true в случае если можно рисовать отражения, false если отражения рисовать не надо, pViewPos - позиция наблюдателя (обязательно) bool updateCountUpdate(const float3_t *pViewPos); @@ -105,7 +105,7 @@ protected: float4x4 m_mView; //! массив фрустумов, для плоских отражений используется только нулевой, для кубических все - ISXFrustum *m_aFrustums[6]; + IFrustum *m_aFrustums[6]; //! массивы идентификаторов для просчета видимости Array<ID*> m_aIDsArr; diff --git a/source/mtllight/shadow.h b/source/mtllight/shadow.h index d9dead086777e8756838c33810e4ae9e50bf7130..db31a11cd887fc54038ea2a04640d2b5d972820d 100644 --- a/source/mtllight/shadow.h +++ b/source/mtllight/shadow.h @@ -52,7 +52,7 @@ public: long GetCountIDArrs(); ID GetIDArr(ID id, int split); - ISXFrustum* Frustums[5]; + IFrustum* Frustums[5]; //long IDArr[5]; int IsUpdate[5]; @@ -133,7 +133,7 @@ public: long GetCountIDArrs(); long GetIDArr(long id); - ISXFrustum* Frustum; + IFrustum* Frustum; //long IDArr; float4x4 View; @@ -206,7 +206,7 @@ public: long GetCountIDArrs(); long GetIDArr(long id, int split); - ISXFrustum* Frustums[6]; + IFrustum* Frustums[6]; //long IDArr[6]; private: diff --git a/source/mtllight/sxmtllight.cpp b/source/mtllight/sxmtllight.cpp index 0bab051a7ab28919f1bd4fe8a8c8ed3ec1f4b0ad..7fe7c48bb836afed8808ef094584f48748649917 100644 --- a/source/mtllight/sxmtllight.cpp +++ b/source/mtllight/sxmtllight.cpp @@ -17,7 +17,7 @@ See the license in LICENSE report_func g_fnReportf = DefReport; #endif -Lights* ArrLights = 0; +CLights* ArrLights = 0; Materials* ArrMaterials = 0; #define ML_PRECOND(retval) if(!ArrLights){LibReport(-1, "%s - sxmtlligth is not init", GEN_MSG_LOCATION); return retval;} @@ -50,7 +50,7 @@ SX_LIB_API void SML_0Create(const char* name, bool is_unic) { MLSet::MLInit(); MLSet::ReCalcSize(); - ArrLights = new Lights(); + ArrLights = new CLights(); ArrMaterials = new Materials(); } } @@ -58,7 +58,7 @@ SX_LIB_API void SML_0Create(const char* name, bool is_unic) { MLSet::MLInit(); MLSet::ReCalcSize(); - ArrLights = new Lights(); + ArrLights = new CLights(); ArrMaterials = new Materials(); } } @@ -75,7 +75,7 @@ SX_LIB_API void SML_AKill() SX_LIB_API void SML_OnLostDevice() { ML_PRECOND(_VOID); - ArrLights->OnLostDevice(); + ArrLights->onLostDevice(); ArrMaterials->OnLostDevice(); } @@ -87,7 +87,7 @@ SX_LIB_API void SML_OnResetDevice() MLSet::ProjFov = projfov; MLSet::ProjRatio = MLSet::WinSize.x / MLSet::WinSize.y;*/ MLSet::ReCalcSize(); - ArrLights->OnResetDevice(); + ArrLights->onResetDevice(); ArrMaterials->OnResetDevice(); //MLSet::IDsRenderTargets::ToneMaps.clear(); @@ -163,21 +163,21 @@ SX_LIB_API void SML_LigthsClear() { ML_PRECOND(_VOID); - ArrLights->Clear(); + ArrLights->clear(); } SX_LIB_API void SML_LigthsClearIDArr() { ML_PRECOND(_VOID); - ArrLights->ClearIDArr(); + ArrLights->clearIDArr(); } SX_LIB_API long SML_LigthsGetCount() { ML_PRECOND(-1); - return ArrLights->GetCountLights(); + return ArrLights->getCountLights(); } SX_LIB_API bool SML_LigthsGetExists(ID id) @@ -191,218 +191,218 @@ SX_LIB_API bool SML_LigthsGetExists(ID id) SX_LIB_API ID SML_LigthsCreatePoint(const float3* center, float dist, const float3* color, bool isglobal, bool is_shadowed/*, const char* bound_volume*/) { ML_PRECOND(-1); - return ArrLights->CreatePoint(-1,center, dist, color, isglobal, is_shadowed/*, 0*/); + return ArrLights->createPoint(-1,center, dist, color, isglobal, is_shadowed/*, 0*/); } SX_LIB_API ID SML_LigthsCreateDirection(const float3* pos, float dist, const float3* color, const SMQuaternion* orient, float top_radius, float angle, bool is_shadow/*, const char* bound_volume*/) { ML_PRECOND(-1); - return ArrLights->CreateDirection(-1, pos, dist, color, orient, top_radius, angle, is_shadow/*, 0*/); + return ArrLights->createDirection(-1, pos, dist, color, orient, top_radius, angle, is_shadow/*, 0*/); } SX_LIB_API void SML_LigthsRender(ID id, DWORD timeDelta) { ML_PRECOND(_VOID); - ArrLights->Render(id, timeDelta); + ArrLights->render(id, timeDelta); } SX_LIB_API ID SML_LigthsGetGlobal() { ML_PRECOND(-1); - return ArrLights->GetLightGlobal(); + return ArrLights->getLightGlobal(); } SX_LIB_API bool SML_LigthsGetCastGlobalShadow() { ML_PRECOND(false); - return ArrLights->GetCastGlobalShadow(); + return ArrLights->getCastGlobalShadow(); } SX_LIB_API void SML_LigthsSetCastGlobalShadow(bool isShadowed) { ML_PRECOND(_VOID); - return ArrLights->SetCastGlobalShadow(isShadowed); + return ArrLights->setCastGlobalShadow(isShadowed); } SX_LIB_API void SML_LigthsGetColor(ID id, float3* color) { ML_PRECOND(_VOID); - ArrLights->GetLightColor(id, color); + ArrLights->getLightColor(id, color); } SX_LIB_API void SML_LigthsSetColor(ID id, const float3* vec) { ML_PRECOND(_VOID); - ArrLights->SetLightColor(id, vec); + ArrLights->setLightColor(id, vec); } SX_LIB_API void SML_LigthsGetPos(ID id, float3* vec, bool greal) { ML_PRECOND(_VOID); - ArrLights->GetLightPos(id, vec, greal); + ArrLights->getLightPos(id, vec, greal); } SX_LIB_API float SML_LigthsGetPower(ID id) { ML_PRECOND(-1); - return ArrLights->GetLightPower(id); + return ArrLights->getLightPower(id); } SX_LIB_API float SML_LigthsGetDist(ID id) { ML_PRECOND(-1); - return ArrLights->GetLightDist(id); + return ArrLights->getLightDist(id); } SX_LIB_API void SML_LigthsSetPos(ID id, const float3* vec, bool greal) { ML_PRECOND(_VOID); - ArrLights->SetLightPos(id, vec, greal); + ArrLights->setLightPos(id, vec, greal); } SX_LIB_API void SML_LigthsGetOrient(ID id, SMQuaternion* q) { ML_PRECOND(_VOID); - ArrLights->GetLightOrient(id, q); + ArrLights->getLightOrient(id, q); } SX_LIB_API void SML_LigthsSetOrient(ID id, const SMQuaternion* q) { ML_PRECOND(_VOID); - ArrLights->SetLightOrient(id, q); + ArrLights->setLightOrient(id, q); } SX_LIB_API LTYPE_LIGHT SML_LigthsGetType(ID id) { ML_PRECOND(LTYPE_LIGHT_NONE); - return ArrLights->GetLightType(id); + return ArrLights->getLightType(id); } -SX_LIB_API bool SML_LigthsComVisibleForFrustum(ID id, const ISXFrustum* frustum) +SX_LIB_API bool SML_LigthsComVisibleForFrustum(ID id, const IFrustum* frustum) { ML_PRECOND(-1); - return ArrLights->ComVisibleForFrustum(id, frustum); + return ArrLights->comVisibleForFrustum(id, frustum); } SX_LIB_API bool SML_LigthsGetVisibleForFrustum(ID id) { ML_PRECOND(false); - return ArrLights->GetVisibleForFrustum(id); + return ArrLights->getVisibleForFrustum(id); } SX_LIB_API float SML_LigthsComDistFor(ID id, const float3* vec) { ML_PRECOND(-1); - return ArrLights->ComDistFor(id, vec); + return ArrLights->comDistFor(id, vec); } SX_LIB_API float SML_LigthsGetDistFor(ID id) { ML_PRECOND(-1); - return ArrLights->GetDistFor(id); + return ArrLights->getDistFor(id); } -SX_LIB_API void SML_LigthsComVisibleFrustumDistFor(const ISXFrustum* frustum, const float3* vec) +SX_LIB_API void SML_LigthsComVisibleFrustumDistFor(const IFrustum* frustum, const float3* vec) { ML_PRECOND(_VOID); - return ArrLights->ComVisibleFrustumDistFor(frustum, vec); + return ArrLights->comVisibleFrustumDistFor(frustum, vec); } SX_LIB_API bool SML_LigthsGetEnable(ID id) { ML_PRECOND(-1); - return ArrLights->GetLightEnable(id); + return ArrLights->getLightEnable(id); } SX_LIB_API void SML_LigthsSetEnable(ID id, bool val) { ML_PRECOND(_VOID); - return ArrLights->SetLightEnable(id, val); + return ArrLights->setLightEnable(id, val); } SX_LIB_API bool SML_LigthsGetShadowed(ID id) { ML_PRECOND(-1); - return ArrLights->GetLightShadowed(id); + return ArrLights->getLightShadowed(id); } SX_LIB_API bool SML_LigthsGet4Or3SplitsG(ID id) { ML_PRECOND(0); - return ArrLights->Get4Or3Splits(id); + return ArrLights->get4Or3Splits(id); } SX_LIB_API void SML_LigthsSet4Or3SplitsG(ID id, bool bf4or3) { ML_PRECOND(_VOID); - ArrLights->Set4Or3Splits(id, bf4or3); + ArrLights->set4Or3Splits(id, bf4or3); } SX_LIB_API IDirect3DTexture9* SML_LigthsGetShadow() { ML_PRECOND(0); - return ArrLights->GetShadow2(); + return ArrLights->getShadow2(); } SX_LIB_API void SML_LigthsShadowNull() { ML_PRECOND(_VOID); - return ArrLights->ShadowNull(); + return ArrLights->shadowNull(); } SX_LIB_API void SML_LigthsShadowRenderBegin(ID id) { ML_PRECOND(_VOID); - ArrLights->ShadowRenderBegin(id); + ArrLights->shadowRenderBegin(id); } SX_LIB_API void SML_LigthsShadowRenderEnd(ID id) { ML_PRECOND(_VOID); - ArrLights->ShadowRenderEnd(id); + ArrLights->shadowRenderEnd(id); } SX_LIB_API void SML_LigthsShadowRenderPre(ID id, int cube) { ML_PRECOND(_VOID); - ArrLights->ShadowRenderPre(id, cube); + ArrLights->shadowRenderPre(id, cube); } SX_LIB_API void SML_LigthsShadowRenderPost(ID id, int cube) { ML_PRECOND(_VOID); - ArrLights->ShadowRenderPost(id, cube); + ArrLights->shadowRenderPost(id, cube); } -SX_LIB_API ISXFrustum* SML_LigthsGetFrustum(ID id, int how) +SX_LIB_API IFrustum* SML_LigthsGetFrustum(ID id, int how) { ML_PRECOND(0); - return ArrLights->GetLightFrustum(id, how); + return ArrLights->getLightFrustum(id, how); } SX_LIB_API void SML_LigthsUpdateGFrustums(ID id, int split, const float3* pos, const float3* dir) { ML_PRECOND(_VOID); - return ArrLights->UpdateLightGFrustums(id, split, pos, dir); + return ArrLights->updateLightGFrustums(id, split, pos, dir); } SX_LIB_API void SML_LigthsShadowSetShaderOfTypeMat(ID id, int typemat, float4x4* wmat) { ML_PRECOND(_VOID); - ArrLights->InitShaderOfTypeMaterial(id, typemat, wmat); + ArrLights->initShaderOfTypeMaterial(id, typemat, wmat); } SX_LIB_API void SML_LigthsShadowGen(ID id) { ML_PRECOND(_VOID); - ArrLights->ShadowGen2(id); + ArrLights->shadowGen2(id); } SX_LIB_API void SML_LigthsShadowSoft(bool randomsam, float size, bool isfirst) { ML_PRECOND(_VOID); - ArrLights->ShadowSoft(randomsam, size, isfirst); + ArrLights->shadowSoft(randomsam, size, isfirst); } @@ -410,189 +410,189 @@ SX_LIB_API void SML_LigthsShadowSoft(bool randomsam, float size, bool isfirst) SX_LIB_API ID SML_LigthsCreateCopy(ID id) { ML_PRECOND(-1); - return ArrLights->CreateCopy(id); + return ArrLights->createCopy(id); } SX_LIB_API void SML_LigthsDeleteLight(ID id) { ML_PRECOND(_VOID); - ArrLights->DeleteLight(id); + ArrLights->deleteLight(id); } SX_LIB_API char* SML_LigthsGetName(ID id) { ML_PRECOND(0); - return ArrLights->GetLightName(id); + return ArrLights->getLightName(id); } SX_LIB_API void SML_LigthsSetName(ID id, const char* name) { ML_PRECOND(_VOID); - ArrLights->SetLightName(id, name); + ArrLights->setLightName(id, name); } SX_LIB_API void SML_LigthsSetAngle(ID id, float angle) { ML_PRECOND(_VOID); - ArrLights->SetLightAngle(id, angle, true); + ArrLights->setLightAngle(id, angle, true); } SX_LIB_API void SML_LigthsSetTopRadius(ID id, float top_radius) { ML_PRECOND(_VOID); - ArrLights->SetLightTopRadius(id, top_radius); + ArrLights->setLightTopRadius(id, top_radius); } SX_LIB_API void SML_LigthsSetDist(ID id, float radius_height, bool is_create) { ML_PRECOND(_VOID); - ArrLights->SetLightDist(id, radius_height, is_create); + ArrLights->setLightDist(id, radius_height, is_create); } SX_LIB_API float SML_LigthsGetShadowBias(ID id) { ML_PRECOND(-1); - return ArrLights->GetShadowBias(id); + return ArrLights->getShadowBias(id); } SX_LIB_API void SML_LigthsSetShadowBias(ID id, float bias) { ML_PRECOND(_VOID); - return ArrLights->SetShadowBias(id, bias); + return ArrLights->setShadowBias(id, bias); } SX_LIB_API void SML_LigthsSetShadowBlurPixel(ID id, float blur_pixel) { ML_PRECOND(_VOID); - ArrLights->SetShadowBlurPixel(id, blur_pixel); + ArrLights->setShadowBlurPixel(id, blur_pixel); } SX_LIB_API float SML_LigthsGetShadowBlurPixel(ID id) { ML_PRECOND(-1); - return ArrLights->GetShadowBlurPixel(id); + return ArrLights->getShadowBlurPixel(id); } SX_LIB_API void SML_LigthsSetShadowLocalNear(ID id, float slnear) { ML_PRECOND(_VOID); - ArrLights->SetShadowLocalNear(id, slnear); + ArrLights->setShadowLocalNear(id, slnear); } SX_LIB_API float SML_LigthsGetShadowLocalNear(ID id) { ML_PRECOND(-1); - return ArrLights->GetShadowLocalNear(id); + return ArrLights->getShadowLocalNear(id); } SX_LIB_API void SML_LigthsSetShadowLocalFar(ID id, float slfar) { ML_PRECOND(_VOID); - ArrLights->SetShadowLocalFar(id, slfar); + ArrLights->setShadowLocalFar(id, slfar); } SX_LIB_API float SML_LigthsGetShadowLocalFar(ID id) { ML_PRECOND(-1); - return ArrLights->GetShadowLocalFar(id); + return ArrLights->getShadowLocalFar(id); } SX_LIB_API void SML_LigthsSetCubeEdgeEnable(ID id, int edge, bool enable) { ML_PRECOND(_VOID); - ArrLights->SetLightCubeEdgeEnable(id, edge, enable); + ArrLights->setLightCubeEdgeEnable(id, edge, enable); } SX_LIB_API bool SML_LigthsGetCubeEdgeEnable(ID id, int edge) { ML_PRECOND(false); - return ArrLights->GetLightCubeEdgeEnable(id, edge); + return ArrLights->getLightCubeEdgeEnable(id, edge); } SX_LIB_API float SML_LigthsGetAngle(ID id) { ML_PRECOND(-1); - return ArrLights->GetLightAngle(id); + return ArrLights->getLightAngle(id); } SX_LIB_API float SML_LigthsGetTopRadius(ID id) { ML_PRECOND(-1); - return ArrLights->GetLightTopRadius(id); + return ArrLights->getLightTopRadius(id); } SX_LIB_API ID SML_LigthsGetIDArr(ID id, ID inid, int how) { ML_PRECOND(-1); - return ArrLights->GetLightIDArr(id, inid, how); + return ArrLights->getLightIDArr(id, inid, how); } SX_LIB_API void SML_LigthsSetIDArr(ID id, ID inid, int how, ID id_arr) { ML_PRECOND(_VOID); - ArrLights->SetLightIDArr(id, inid, how, id_arr); + ArrLights->setLightIDArr(id, inid, how, id_arr); } SX_LIB_API void SML_LigthsSetTypeShadowed(ID id, LTYPE_SHADOW type) { ML_PRECOND(_VOID); - ArrLights->SetLightTypeShadowed(id, type); + ArrLights->setLightTypeShadowed(id, type); } SX_LIB_API LTYPE_SHADOW SML_LigthsGetTypeShadowed(ID id) { ML_PRECOND(LTYPE_SHADOW_NONE); - return ArrLights->GetLightTypeShadowed(id); + return ArrLights->getLightTypeShadowed(id); } SX_LIB_API bool SML_LigthsCountUpdateUpdate(ID id, const float3* viewpos, int ghow) { ML_PRECOND(false); - return ArrLights->LightCountUpdateUpdate(id, viewpos, ghow); + return ArrLights->lightCountUpdateUpdate(id, viewpos, ghow); } SX_LIB_API bool SML_LigthsCountUpdateAllowed(ID id, int ghow) { ML_PRECOND(false); - return ArrLights->LightCountUpdateAllowed(id, ghow); + return ArrLights->lightCountUpdateAllowed(id, ghow); } SX_LIB_API void SML_LigthsCountUpdateNull(ID id) { ML_PRECOND(_VOID); - ArrLights->LightCountUpdateNull(id); + ArrLights->lightCountUpdateNull(id); } SX_LIB_API void SML_LigthsToneMappingCom(DWORD timeDelta, float factor_adapted) { ML_PRECOND(_VOID); - ArrLights->ToneMappingCom(timeDelta, factor_adapted); + ArrLights->toneMappingCom(timeDelta, factor_adapted); } SX_LIB_API int SML_LigthsDelGetCount() { ML_PRECOND(-1); - return ArrLights->DelGetCount(); + return ArrLights->delGetCount(); } SX_LIB_API LTYPE_LIGHT SML_LigthsDelGetType(ID key) { ML_PRECOND(LTYPE_LIGHT_NONE); - return ArrLights->DelGetType(key); + return ArrLights->delGetType(key); } SX_LIB_API void SML_LigthsDelDel(ID key) { ML_PRECOND(_VOID); - ArrLights->DelDel(key); + ArrLights->delDel(key); } SX_LIB_API ID SML_LigthsDelGetIDArr(ID key, ID inid, int how) { ML_PRECOND(-1); - return ArrLights->DelGetIDArr(key, inid, how); + return ArrLights->delGetIDArr(key, inid, how); } //############################################################################# @@ -819,7 +819,7 @@ SX_LIB_API void SML_MtlRefPreRenderPlane(ID id, D3DXPLANE* plane) ArrMaterials->MtlRefPreRenderPlane(id, plane); } -SX_LIB_API const ISXFrustum* SML_MtlRefGetfrustum(ID id, int cube) +SX_LIB_API const IFrustum* SML_MtlRefGetfrustum(ID id, int cube) { ML_PRECOND(0); return ArrMaterials->MtlRefGetfrustum(id, cube); diff --git a/source/mtllight/sxmtllight.h b/source/mtllight/sxmtllight.h index 304e0ef31a58a568a6279295e360b5c0c5352220..6bb2102dbaad3165f1145a4ca13e6676efe55b13 100644 --- a/source/mtllight/sxmtllight.h +++ b/source/mtllight/sxmtllight.h @@ -230,11 +230,11 @@ SX_LIB_API void SML_LigthsSetCastGlobalShadow(bool isShadowed); \note Предварительный просчет - просчет для всего света (к примеру в другом потоке) @{*/ -SX_LIB_API bool SML_LigthsComVisibleForFrustum(ID id, const ISXFrustum *pFrustum); //!< виден ли свет в данном фрустуме frustum (отдельный просчет) +SX_LIB_API bool SML_LigthsComVisibleForFrustum(ID id, const IFrustum *pFrustum); //!< виден ли свет в данном фрустуме frustum (отдельный просчет) SX_LIB_API float SML_LigthsComDistFor(ID id, const float3 *pViewPos); //!< дистанция от viewpos до начала света (отдельный просчет) //! просчет видимости и расстояния от наблюдателя viewpos до начала света, для каждого света (предварительный просчет) -SX_LIB_API void SML_LigthsComVisibleFrustumDistFor(const ISXFrustum *pFrustum, const float3 *pViewPos); +SX_LIB_API void SML_LigthsComVisibleFrustumDistFor(const IFrustum *pFrustum, const float3 *pViewPos); SX_LIB_API bool SML_LigthsGetVisibleForFrustum(ID id); //!< виден ли свет в просчитанном фрустуме SX_LIB_API float SML_LigthsGetDistFor(ID id); //!< просчитанная дистанция от позиции наблюдателя до начала света @@ -375,7 +375,7 @@ SX_LIB_API void SML_LigthsShadowSoft( ); //! возвращает указатель фрустума света -SX_LIB_API ISXFrustum* SML_LigthsGetFrustum( +SX_LIB_API IFrustum* SML_LigthsGetFrustum( ID id, //!< идентификатор света int iHow //!< номер сплита для глобального, 0 для направленного, и номер стороны для точечного ); @@ -807,7 +807,7 @@ SX_LIB_API void SML_MtlRefNullingCountUpdate(ID id); SX_LIB_API void SML_MtlRefSetMinMax(ID id, float3_t *pMin, float3_t *pMax);//!< установка экстремумов материала //! возвращает фрустум отражения, cube - сторона куба -SX_LIB_API const ISXFrustum* SML_MtlRefGetfrustum( +SX_LIB_API const IFrustum* SML_MtlRefGetfrustum( ID id, //!< идентификатора материала int iCube //!< сторона куба, если отражение плоское то необходимо указать в cube передать 0, иначе вернет NULL ); diff --git a/source/particles/effect.cpp b/source/particles/effect.cpp index 0a8216cec2cc02c1a669f04d6aca4177d07d2a7a..1e912425762aec4e0d33e8fcb76ade99a6f0af6d 100644 --- a/source/particles/effect.cpp +++ b/source/particles/effect.cpp @@ -1127,7 +1127,7 @@ void Effects::EffectRenderAll(DWORD timeDelta) } } -bool Effects::EffectVisibleCom(ID id, const ISXFrustum* frustum, float3* view) +bool Effects::EffectVisibleCom(ID id, const IFrustum* frustum, float3* view) { EFFECTS_EFFECT_PRECOND(id, false); @@ -1151,7 +1151,7 @@ bool Effects::EffectVisibleCom(ID id, const ISXFrustum* frustum, float3* view) return eff->ViewRender; } -void Effects::EffectVisibleComAll(const ISXFrustum* frustum, float3* view) +void Effects::EffectVisibleComAll(const IFrustum* frustum, float3* view) { Core_RMatrixSet(G_RI_MATRIX_WORLD, &SMMatrixIdentity()); diff --git a/source/particles/effect.h b/source/particles/effect.h index 8c083f92142c619118576540fa9687a117479af9..e3c5bac0f2cc15f81356b8f3226487018731bc2d 100644 --- a/source/particles/effect.h +++ b/source/particles/effect.h @@ -159,8 +159,8 @@ public: void EffectDirGet(ID id, float3* dir); void EffectRotGet(ID id, float3* rot); - bool EffectVisibleCom(ID id, const ISXFrustum* frustum, float3* view); - void EffectVisibleComAll(const ISXFrustum* frustum, float3* view); + bool EffectVisibleCom(ID id, const IFrustum* frustum, float3* view); + void EffectVisibleComAll(const IFrustum* frustum, float3* view); bool EffectVisibleGet(ID id); float EffectDistToViewGet(ID id); diff --git a/source/particles/sxparticles.cpp b/source/particles/sxparticles.cpp index f9d62c87b39af23599fc7c09a64d91eedabae6cb..4497c85ff902a1cc7a0fb4cf270143e7f60205d9 100644 --- a/source/particles/sxparticles.cpp +++ b/source/particles/sxparticles.cpp @@ -326,14 +326,14 @@ SX_LIB_API void SPE_EffectRotGet(ID id, float3* rot) } -SX_LIB_API bool SPE_EffectVisibleCom(ID id, const ISXFrustum* frustum, float3* view) +SX_LIB_API bool SPE_EffectVisibleCom(ID id, const IFrustum* frustum, float3* view) { PE_PRECOND(false); return ArrEffects->EffectVisibleCom(id, frustum, view); } -SX_LIB_API void SPE_EffectVisibleComAll(const ISXFrustum* frustum, float3* view) +SX_LIB_API void SPE_EffectVisibleComAll(const IFrustum* frustum, float3* view) { PE_PRECOND(_VOID); diff --git a/source/particles/sxparticles.h b/source/particles/sxparticles.h index dfc0eeb06847ae3256c6e9140a99d8c51a6171d3..c931ca4be67139916e27b4d447217207dbab29cd 100644 --- a/source/particles/sxparticles.h +++ b/source/particles/sxparticles.h @@ -498,10 +498,10 @@ SX_LIB_API void SPE_EffectRotGet(ID id, float3* rot); //! просчет видимости эффекта для фрустума frustum, и расчет расстояния от позиции наблюдателя view до эффекта, возвращает виден ли фруустуму эффект -SX_LIB_API bool SPE_EffectVisibleCom(ID id, const ISXFrustum* frustum, float3* view); +SX_LIB_API bool SPE_EffectVisibleCom(ID id, const IFrustum* frustum, float3* view); //! просчет видимости всех эффектов для фрустума frustum, и расчет расстояний от позиции наблюдателя view до всех эффектов -SX_LIB_API void SPE_EffectVisibleComAll(const ISXFrustum* frustum, float3* view); +SX_LIB_API void SPE_EffectVisibleComAll(const IFrustum* frustum, float3* view); //! виден ли эффект? по результатам просчетов #SPE_EffectVisibleComAll diff --git a/source/render/gdata.cpp b/source/render/gdata.cpp index 0591d76b0542589663e2e9548ccfa3bda5927e2b..5460a14c33e2cfc0dbb190e6dc080e48e479aa8a 100644 --- a/source/render/gdata.cpp +++ b/source/render/gdata.cpp @@ -17,7 +17,7 @@ namespace GData DS_RT FinalImage = DS_RT_SCENELIGHT; - ISXCamera* ObjCamera = 0; + ICamera* ObjCamera = 0; ID IDSelectTex = -1; float2_t NearFar = float2_t(0.025, 400); diff --git a/source/render/gdata.h b/source/render/gdata.h index 02125fe56524158ab2c30ba6dedc4f10ae37506b..4fa35d7da60352e2fe7790a3f27f6184173d3d5b 100644 --- a/source/render/gdata.h +++ b/source/render/gdata.h @@ -51,7 +51,7 @@ namespace GData extern DS_RT FinalImage; //!< камера для которой будет рендер - extern ISXCamera* ObjCamera; + extern ICamera* ObjCamera; //! id текстуры с цветмо выделения (для редакторов) extern ID IDSelectTex; diff --git a/source/render/sxrender.cpp b/source/render/sxrender.cpp index 987be6f37c2a822ca23ae055520077c5e9c4d7fb..0b5458146650a2a006e1d5dcda5367ff30367eaa 100644 --- a/source/render/sxrender.cpp +++ b/source/render/sxrender.cpp @@ -144,12 +144,12 @@ SX_LIB_API void SRender_SetParentHandleWin3D(HWND hWnd) GData::HandleParent3D = hWnd; } -SX_LIB_API void SRender_SetCamera(ISXCamera *pCamera) +SX_LIB_API void SRender_SetCamera(ICamera *pCamera) { GData::ObjCamera = pCamera; } -SX_LIB_API ISXCamera* SRender_GetCamera() +SX_LIB_API ICamera* SRender_GetCamera() { return GData::ObjCamera; } diff --git a/source/render/sxrender.h b/source/render/sxrender.h index 1b529bdc9ef464a9d52b79213efe70ca52a14580..eba1c9b18e60eb75a72f426544535e176c708aa0 100644 --- a/source/render/sxrender.h +++ b/source/render/sxrender.h @@ -231,10 +231,10 @@ SX_LIB_API void SRender_SetParentHandleWin3D(HWND hWnd); //! установка текущей камеры -SX_LIB_API void SRender_SetCamera(ISXCamera *pCamera); +SX_LIB_API void SRender_SetCamera(ICamera *pCamera); //! возвращает текущую камеру -SX_LIB_API ISXCamera* SRender_GetCamera(); +SX_LIB_API ICamera* SRender_GetCamera(); //************************************************************************** diff --git a/source/score/sound.cpp b/source/score/sound.cpp index 20f62be813b105057ff6a5599c71ea293f579546..6c4d69edefb6902ee2a8a7dc8aaade743b6a0a3c 100644 --- a/source/score/sound.cpp +++ b/source/score/sound.cpp @@ -1157,6 +1157,7 @@ ID CSoundManager::addSound(CSound* snd) } m_aSounds.push_back(snd); + return m_aSounds.size() - 1; } @@ -1186,7 +1187,7 @@ void CSoundManager::soundDelete(ID id) else m_a2dInst.erase(szStr); } - mem_delete(snd); + mem_delete(m_aSounds[id]); } //############################################################################# diff --git a/source/skyxengine.cpp b/source/skyxengine.cpp index 73bf1a17f4c9e753dd43582bf6e348404cced800..66db341e6eb2901a543ab6599d980291ad0e317c 100644 --- a/source/skyxengine.cpp +++ b/source/skyxengine.cpp @@ -226,7 +226,10 @@ void SkyXEngine_Init(HWND hWnd3D, HWND hWndParent3D) SGCore_SetFunc_MtlGetPhysicType((g_func_mtl_get_physic_type)SML_MtlGetPhysicMaterial); SGCore_SkyBoxCr(); +#if !defined(SX_MATERIAL_EDITOR) SGCore_SkyCloudsCr(); +#endif + SGCore_LoadTexAddConstAllInDir("sky"); //#if defined(SX_GAME) SGCore_OC_SetEnable(true); @@ -375,20 +378,22 @@ void SkyXEngine_InitPaths() } } - Core_RStringSet(G_RI_STRING_PATH_EXE, tmppathexe); + const char *szPathToExe = FileCanonizePath(tmppathexe); + + Core_RStringSet(G_RI_STRING_PATH_EXE, szPathToExe); - sprintf(tmppath, "%s%s", tmppathexe, "/worktex/"); + sprintf(tmppath, "%s%s", szPathToExe, "/worktex/"); Core_RStringSet(G_RI_STRING_PATH_WORKTEX, tmppath); FileCreateDir(tmppath); - sprintf(tmppath, "%s/%s/", tmppathexe, SKYXENGINE_RELPATH_GAMESOURCE); + sprintf(tmppath, "%s/%s/", szPathToExe, SKYXENGINE_RELPATH_GAMESOURCE); Core_RStringSet(G_RI_STRING_PATH_GAMESOURCE, tmppath); SetCurrentDirectoryA(tmppath); - sprintf(tmppath, "%s/%s/", tmppathexe, SKYXENGINE_RELPATH_EDITOR_CACHE); + sprintf(tmppath, "%s/%s/", szPathToExe, SKYXENGINE_RELPATH_EDITOR_CACHE); Core_RStringSet(G_RI_STRING_PATH_EDITOR_CACHE, tmppath); - sprintf(tmppath, "%s%s", tmppathexe, "/screenshots/"); + sprintf(tmppath, "%s%s", szPathToExe, "/screenshots/"); Core_RStringSet(G_RI_STRING_PATH_SCREENSHOTS, tmppath); FileCreateDir(tmppath); @@ -584,6 +589,13 @@ HWND SkyXEngine_CreateWindow(const char *szName, const char *szCaption, int iWid void SkyXEngine_Frame(DWORD timeDelta) { + + if (SSInput_GetKeyState(SIK_O)) + { + SLevel_Clear(); + SLevel_Load("stalker_atp", true); + } + static IDirect3DDevice9 *pDXDevice = SGCore_GetDXDevice(); static float3 vCamPos, vCamDir; static float4x4 mView, mProjLight; @@ -959,24 +971,22 @@ void SkyXEngine_Frame(DWORD timeDelta) void SkyXEngind_UpdateDataCVar() { - ID GlobalLight = SML_LigthsGetGlobal(); + ID idGlobalLight = SML_LigthsGetGlobal(); static const bool * r_pssm_4or3 = GET_PCVAR_BOOL("r_pssm_4or3"); static bool r_pssm_4or3_old = true; //проверяем не изменилось ли значение квара, если изменилось то меняем и количество сплитов - if (r_pssm_4or3 && r_pssm_4or3_old != (*r_pssm_4or3) && GlobalLight >= 0) + if (r_pssm_4or3 && r_pssm_4or3_old != (*r_pssm_4or3) && idGlobalLight >= 0) { r_pssm_4or3_old = (*r_pssm_4or3); - SML_LigthsSet4Or3SplitsG(GlobalLight, r_pssm_4or3_old); + SML_LigthsSet4Or3SplitsG(idGlobalLight, r_pssm_4or3_old); } static const bool * r_pssm_shadowed = GET_PCVAR_BOOL("r_pssm_shadowed"); - static bool r_pssm_shadowed_old = true; - if (r_pssm_shadowed && r_pssm_shadowed_old != (*r_pssm_shadowed) && GlobalLight >= 0) + if (r_pssm_shadowed && idGlobalLight >= 0) { - r_pssm_shadowed_old = (*r_pssm_shadowed); - SML_LigthsSetTypeShadowed(GlobalLight, (r_pssm_shadowed_old ? LTYPE_SHADOW_DYNAMIC : LTYPE_SHADOW_NONE)); + SML_LigthsSetTypeShadowed(idGlobalLight, ((*r_pssm_shadowed) ? LTYPE_SHADOW_DYNAMIC : LTYPE_SHADOW_NONE)); } static const float * r_pssm_quality = GET_PCVAR_FLOAT("r_pssm_quality"); diff --git a/source/sxleveleditor/game_callback.cpp b/source/sxleveleditor/game_callback.cpp index fb0cd3e14ce96d538cf2e63b4d84127580cd2ac6..2fbe3b32db669f4698110e2b6fb40ac972762148 100644 --- a/source/sxleveleditor/game_callback.cpp +++ b/source/sxleveleditor/game_callback.cpp @@ -432,17 +432,18 @@ LRESULT SXLevelEditor_ButtonGameValue_Click(HWND hwnd, UINT msg, WPARAM wParam, if (gui_func::dialogs::SelectFileOwn(tmpname, tmppath, Core_RStringGet(G_RI_STRING_PATH_GS_MODELS), "dse", "Select model", true, Core_RStringGet(G_RI_STRING_PATH_GS_MODELS), SXLevelEditor::JobWindow->getHWND(), SkyXEngine_EditorHandlerGetPreviewData, SkyXEngine_EditorHandlerGetDSEinfo)) { - String tmpstr = tmppath + strlen(Core_RStringGet(G_RI_STRING_PATH_GAMESOURCE)); + String sRpath = StrCutStrI(tmppath, Core_RStringGet(G_RI_STRING_PATH_GS_MODELS)); + /*String tmpstr = tmppath + strlen(Core_RStringGet(G_RI_STRING_PATH_GAMESOURCE)); tmpstr.replaceAll("\\", "/"); - sprintf(tmpname, "%s", tmpstr.c_str()); - SXLevelEditor::EditGameValue->setText(tmpname); + sprintf(tmpname, "%s", tmpstr.c_str());*/ + SXLevelEditor::EditGameValue->setText(sRpath.c_str()); int sel = SXLevelEditor::ListBoxList->getSel(); - SXLevelEditor::ListViewGameClass->setItemText(tmpname, 1, str); + SXLevelEditor::ListViewGameClass->setItemText((char*)sRpath.c_str(), 1, str); CBaseEntity* bEnt = SXGame_EntGet(SXLevelEditor::ListBoxList->getItemData(sel)); if (bEnt) { - bEnt->setKV(pd->szKey, tmpname); + bEnt->setKV(pd->szKey, sRpath.c_str()); } } diff --git a/source/sxleveleditor/green_callback.cpp b/source/sxleveleditor/green_callback.cpp index 7ed03c3c401bd7446473b3a8d9427871c177d6cb..efdf8d7136267ddc2245300ca251cb2cb2fffb67 100644 --- a/source/sxleveleditor/green_callback.cpp +++ b/source/sxleveleditor/green_callback.cpp @@ -122,13 +122,13 @@ LRESULT SXLevelEditor_ButtonGreenModel_Click(HWND hwnd, UINT msg, WPARAM wParam, if (gui_func::dialogs::SelectFileOwn(tmpname, tmppath, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES), "dse", "Select model", true, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES), SXLevelEditor::JobWindow->getHWND(), SkyXEngine_EditorHandlerGetPreviewData, SkyXEngine_EditorHandlerGetDSEinfo)) { - StrCutMesh(tmppath, tmpname); - SXLevelEditor::EditGreenModel->setText(tmpname); + String sRpath = StrCutStrI(tmppath, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES)); + SXLevelEditor::EditGreenModel->setText(sRpath.c_str()); int sel = SXLevelEditor::ListBoxList->getSel(); if (SXLevelEditor::ActiveGroupType == EDITORS_LEVEL_GROUPTYPE_GREEN) { if (sel >= 0 && sel < SGeom_GreenGetCount()) - SGeom_GreenMSetLod(sel, 0, tmpname); + SGeom_GreenMSetLod(sel, 0, sRpath.c_str()); } } return 0; @@ -143,13 +143,13 @@ LRESULT SXLevelEditor_ButtonGreenLod1_Click(HWND hwnd, UINT msg, WPARAM wParam, if (gui_func::dialogs::SelectFileOwn(tmpname, tmppath, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES), "dse", "Select model", true, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES), SXLevelEditor::JobWindow->getHWND(), SkyXEngine_EditorHandlerGetPreviewData, SkyXEngine_EditorHandlerGetDSEinfo)) { - StrCutMesh(tmppath, tmpname); - SXLevelEditor::EditGreenLod1->setText(tmpname); + String sRpath = StrCutStrI(tmppath, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES)); + SXLevelEditor::EditGreenLod1->setText(sRpath.c_str()); int sel = SXLevelEditor::ListBoxList->getSel(); if (SXLevelEditor::ActiveGroupType == EDITORS_LEVEL_GROUPTYPE_GREEN) { if (sel >= 0 && sel < SGeom_GreenGetCount()) - SGeom_GreenMSetLod(sel, 1, tmpname); + SGeom_GreenMSetLod(sel, 1, sRpath.c_str()); } } return 0; @@ -164,13 +164,13 @@ LRESULT SXLevelEditor_ButtonGreenLod2_Click(HWND hwnd, UINT msg, WPARAM wParam, if (gui_func::dialogs::SelectFileOwn(tmpname, tmppath, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES), "dse", "Select model", true, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES), SXLevelEditor::JobWindow->getHWND(), SkyXEngine_EditorHandlerGetPreviewData, SkyXEngine_EditorHandlerGetDSEinfo)) { - StrCutMesh(tmppath, tmpname); - SXLevelEditor::EditGreenLod2->setText(tmpname); + String sRpath = StrCutStrI(tmppath, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES)); + SXLevelEditor::EditGreenLod2->setText(sRpath.c_str()); int sel = SXLevelEditor::ListBoxList->getSel(); if (SXLevelEditor::ActiveGroupType == EDITORS_LEVEL_GROUPTYPE_GREEN) { if (sel >= 0 && sel < SGeom_GreenGetCount()) - SGeom_GreenMSetLod(sel, 2, tmpname); + SGeom_GreenMSetLod(sel, 2, sRpath.c_str()); } } return 0; @@ -209,13 +209,13 @@ LRESULT SXLevelEditor_ButtonGreenNav_Click(HWND hwnd, UINT msg, WPARAM wParam, L if (gui_func::dialogs::SelectFileOwn(tmpname, tmppath, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES), "dse", "Select model", true, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES), SXLevelEditor::JobWindow->getHWND(), SkyXEngine_EditorHandlerGetPreviewData, SkyXEngine_EditorHandlerGetDSEinfo)) { - StrCutMesh(tmppath, tmpname); - SXLevelEditor::EditGreenNav->setText(tmpname); + String sRpath = StrCutStrI(tmppath, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES)); + SXLevelEditor::EditGreenNav->setText(sRpath.c_str()); int sel = SXLevelEditor::ListBoxList->getSel(); if (SXLevelEditor::ActiveGroupType == EDITORS_LEVEL_GROUPTYPE_GREEN) { if (sel >= 0 && sel < SGeom_GreenGetCount()) - SGeom_GreenMSetNav(sel, tmpname); + SGeom_GreenMSetNav(sel, sRpath.c_str()); } } return 0; diff --git a/source/sxleveleditor/model_callback.cpp b/source/sxleveleditor/model_callback.cpp index b1077a5eed113df7834eed23e6bdef8ecc3aead2..ad67fbbf3742c14a9a29fad100fe46a27b1987ea 100644 --- a/source/sxleveleditor/model_callback.cpp +++ b/source/sxleveleditor/model_callback.cpp @@ -137,8 +137,8 @@ LRESULT SXLevelEditor_ButtonGeomModel_Click(HWND hwnd, UINT msg, WPARAM wParam, if (gui_func::dialogs::SelectFileOwn(tmpname, tmppath, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES), "dse", "Select model", true, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES), SXLevelEditor::JobWindow->getHWND(), SkyXEngine_EditorHandlerGetPreviewData, SkyXEngine_EditorHandlerGetDSEinfo)) { - StrCutMesh(tmppath, tmpname); - SXLevelEditor::EditGeomModel->setText(tmpname); + String sRpath = StrCutStrI(tmppath, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES)); + SXLevelEditor::EditGeomModel->setText(sRpath.c_str()); } return 0; } @@ -152,13 +152,13 @@ LRESULT SXLevelEditor_ButtonGeomLod1_Click(HWND hwnd, UINT msg, WPARAM wParam, L if (gui_func::dialogs::SelectFileOwn(tmpname, tmppath, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES), "dse", "Select model", true, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES), SXLevelEditor::JobWindow->getHWND(), SkyXEngine_EditorHandlerGetPreviewData, SkyXEngine_EditorHandlerGetDSEinfo)) { - StrCutMesh(tmppath, tmpname); - SXLevelEditor::EditGeomLod1->setText(tmpname); + String sRpath = StrCutStrI(tmppath, Core_RStringGet(G_RI_STRING_PATH_GS_MESHES)); + SXLevelEditor::EditGeomLod1->setText(sRpath.c_str()); int sel = SXLevelEditor::ListBoxList->getSel(); if (SXLevelEditor::ActiveGroupType == EDITORS_LEVEL_GROUPTYPE_GEOM) { if (sel >= 0 && sel < SGeom_ModelsGetCount()) - SGeom_ModelsMSetLodPath(sel, tmpname); + SGeom_ModelsMSetLodPath(sel, sRpath.c_str()); } } return 0; diff --git a/source/sxleveleditor/sxleveleditor.cpp b/source/sxleveleditor/sxleveleditor.cpp index 8b5dc29a832ec0d07359aa7fe22a1b9f4ae4be90..407eacd317af2ae8d35015f19e17137321f8e37b 100644 --- a/source/sxleveleditor/sxleveleditor.cpp +++ b/source/sxleveleditor/sxleveleditor.cpp @@ -212,6 +212,10 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLin SkyXEngine_Init(SXLevelEditor::RenderWindow->getHWND(), SXLevelEditor::JobWindow->getHWND()); + SGCore_SkyBoxLoadTex("sky_2_cube.dds"); + SGCore_SkyCloudsLoadTex("sky_oblaka.dds"); + SGCore_SkyCloudsSetWidthHeightPos(2000, 2000, &float3(0, 0, 0)); + SkyXEngine_RunGenPreview(); SRender_GetCamera()->setPosition(&float3(0, 0.5, -2)); diff --git a/source/sxmaterialeditor/buttons_callback.cpp b/source/sxmaterialeditor/buttons_callback.cpp index c4fdd8fa0a7e5a2ba0a88adad4763f2ebad68406..8e5eb7c3b26bd4d9d23c36f3790066c00899d17d 100644 --- a/source/sxmaterialeditor/buttons_callback.cpp +++ b/source/sxmaterialeditor/buttons_callback.cpp @@ -3,17 +3,14 @@ LRESULT SXMaterialEditor_ButtonSkyBox_Click(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmppath[1024]; - tmppath[0] = 0; - char* tmpname = 0; + char szName[1024]; //gui_func::dialogs::SelectFile(SXGUI_DIALOG_FILE_OPEN, tmppath, 0, Core_RStringGet(G_RI_STRING_PATH_GS_TEXTURES), FILE_FILTER_TEXTURE); - if (gui_func::dialogs::SelectFileOwn(tmpname, tmppath, Core_RStringGet(G_RI_STRING_PATH_GS_TEXTURES), "dds", "Select texture", true, Core_RStringGet(G_RI_STRING_PATH_GS_TEXTURES), SXMaterialEditor::JobWindow->getHWND(), SkyXEngine_EditorHandlerGetPreviewData, SkyXEngine_EditorHandlerGetTextureInfo)) + if (gui_func::dialogs::SelectFileOwn(szName, 0, Core_RStringGet(G_RI_STRING_PATH_GS_TEXTURES), "dds", "Select texture", true, Core_RStringGet(G_RI_STRING_PATH_GS_TEXTURES), SXMaterialEditor::JobWindow->getHWND(), SkyXEngine_EditorHandlerGetPreviewData, SkyXEngine_EditorHandlerGetTextureInfo)) { - tmpname = tmppath + strlen(Core_RStringGet(G_RI_STRING_PATH_GS_TEXTURES)); - SXMaterialEditor::EditSkyBox->setText(tmpname); + SXMaterialEditor::EditSkyBox->setText(szName); - SGCore_SkyBoxLoadTex(tmpname); + SGCore_SkyBoxLoadTex(szName); } return 0; } diff --git a/source/sxmaterialeditor/edits_callback.cpp b/source/sxmaterialeditor/edits_callback.cpp index bfadb9bb574daba3b608ed28cf1e1c5a075b2245..0b5f9cbe204a2901a4c02dacb8855b5a83895f38 100644 --- a/source/sxmaterialeditor/edits_callback.cpp +++ b/source/sxmaterialeditor/edits_callback.cpp @@ -1,21 +1,34 @@ #include "edits_callback.h" +void TexProcInputString(const char *szStr) +{ + if (StrTrim(szStr).length() > 0) + { + char szMessage[1024]; + szMessage[0] = 0; + sprintf(szMessage, "Texture '%s' not found", szStr); + MessageBox(0, szMessage, 0, 0); + } +} + LRESULT SXMaterialEditor_EditSkyBox_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; - tmptextval[0] = 0; + char szStr[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr[0] = 0; - SXMaterialEditor::EditSkyBox->getText(tmptextval, SXGC_LOADTEX_MAX_SIZE_DIRNAME); + SXMaterialEditor::EditSkyBox->getText(szStr, SXGC_LOADTEX_MAX_SIZE_DIRNAME); - if (SGCore_LoadTexFileExists(tmptextval)) - SGCore_SkyBoxLoadTex(tmptextval); + //MessageBox(0, "it is not done yet :)", 0, 0); + if (SGCore_LoadTexFileExists(szStr)) + SGCore_SkyBoxLoadTex(szStr); else { - SGCore_SkyBoxGetActiveTex(tmptextval); - SXMaterialEditor::EditSkyBox->setText(tmptextval); - - MessageBox(0,"texture not found",0,0); + char szStr2[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr2[0] = 0; + SGCore_SkyBoxGetActiveTex(szStr2); + SXMaterialEditor::EditSkyBox->setText(szStr2); + TexProcInputString(szStr); } return 0; @@ -23,18 +36,20 @@ LRESULT SXMaterialEditor_EditSkyBox_Enter(HWND hwnd, UINT msg, WPARAM wParam, LP LRESULT SXMaterialEditor_EditTex_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; - tmptextval[0] = 0; + char szStr[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr[0] = 0; - SXMaterialEditor::EditTex->getText(tmptextval, SXGC_LOADTEX_MAX_SIZE_DIRNAME); - if (SGCore_LoadTexFileExists(tmptextval)) - SML_MtlSetTexture(SXMaterialEditor::IDMat, tmptextval); + SXMaterialEditor::EditTex->getText(szStr, SXGC_LOADTEX_MAX_SIZE_DIRNAME); + if (SGCore_LoadTexFileExists(szStr)) + SML_MtlSetTexture(SXMaterialEditor::IDMat, szStr); else { - SML_MtlGetTexture(SXMaterialEditor::IDMat, tmptextval); - SXMaterialEditor::EditTex->setText(tmptextval); - - MessageBox(0, "texture not found", 0, 0); + char szStr2[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr2[0] = 0; + SML_MtlGetTexture(SXMaterialEditor::IDMat, szStr2); + TexProcInputString(szStr); + + SXMaterialEditor::EditTex->setText(szStr); } return 0; @@ -42,19 +57,21 @@ LRESULT SXMaterialEditor_EditTex_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARA LRESULT SXMaterialEditor_EditVS_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[SXGC_SHADER_MAX_SIZE_DIRNAME]; - tmptextval[0] = 0; + char szStr[SXGC_SHADER_MAX_SIZE_DIRNAME]; + szStr[0] = 0; - SXMaterialEditor::EditVS->getText(tmptextval, SXGC_SHADER_MAX_SIZE_DIRNAME); + SXMaterialEditor::EditVS->getText(szStr, SXGC_SHADER_MAX_SIZE_DIRNAME); - if (SGCore_ShaderFileExists(tmptextval)) - SML_MtlSetVS(SXMaterialEditor::IDMat, tmptextval); + if (SGCore_ShaderFileExists(szStr)) + SML_MtlSetVS(SXMaterialEditor::IDMat, szStr); else { - SML_MtlGetVS(SXMaterialEditor::IDMat, tmptextval); - SXMaterialEditor::EditVS->setText(tmptextval); - - MessageBox(0, "shader not found", 0, 0); + char szStr2[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr2[0] = 0; + SML_MtlGetVS(SXMaterialEditor::IDMat, szStr2); + TexProcInputString(szStr); + + SXMaterialEditor::EditVS->setText(szStr); } return 0; @@ -62,19 +79,21 @@ LRESULT SXMaterialEditor_EditVS_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM LRESULT SXMaterialEditor_EditPS_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[SXGC_SHADER_MAX_SIZE_DIRNAME]; - tmptextval[0] = 0; + char szStr[SXGC_SHADER_MAX_SIZE_DIRNAME]; + szStr[0] = 0; - SXMaterialEditor::EditPS->getText(tmptextval, SXGC_SHADER_MAX_SIZE_DIRNAME); + SXMaterialEditor::EditPS->getText(szStr, SXGC_SHADER_MAX_SIZE_DIRNAME); - if (SGCore_ShaderFileExists(tmptextval)) - SML_MtlSetPS(SXMaterialEditor::IDMat, tmptextval); + if (SGCore_ShaderFileExists(szStr)) + SML_MtlSetPS(SXMaterialEditor::IDMat, szStr); else { - SML_MtlGetPS(SXMaterialEditor::IDMat, tmptextval); - SXMaterialEditor::EditPS->setText(tmptextval); - - MessageBox(0, "shader not found", 0, 0); + char szStr2[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr2[0] = 0; + SML_MtlGetPS(SXMaterialEditor::IDMat, szStr2); + TexProcInputString(szStr); + + SXMaterialEditor::EditPS->setText(szStr); } return 0; @@ -82,13 +101,13 @@ LRESULT SXMaterialEditor_EditPS_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM LRESULT SXMaterialEditor_EditPenetration_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[256]; - tmptextval[0] = 0; + char szStr[256]; + szStr[0] = 0; float tmpval = 0; - SXMaterialEditor::EditPenetration->getText(tmptextval, 256); + SXMaterialEditor::EditPenetration->getText(szStr, 256); - sscanf(tmptextval, "%f", &tmpval); + sscanf(szStr, "%f", &tmpval); SXMaterialEditor::TrackBarPenetration->setPos(tmpval * 100); SML_MtlSetPenetration(SXMaterialEditor::IDMat, tmpval*0.01f); @@ -99,19 +118,21 @@ LRESULT SXMaterialEditor_EditPenetration_Enter(HWND hwnd, UINT msg, WPARAM wPara LRESULT SXMaterialEditor_EditTexLighting_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; - tmptextval[0] = 0; + char szStr[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr[0] = 0; - SXMaterialEditor::EditTexLighting->getText(tmptextval, SXGC_LOADTEX_MAX_SIZE_DIRNAME); + SXMaterialEditor::EditTexLighting->getText(szStr, SXGC_LOADTEX_MAX_SIZE_DIRNAME); - if (SGCore_LoadTexFileExists(tmptextval)) - SML_MtlSetTextureLighting(SXMaterialEditor::IDMat, tmptextval); + if (SGCore_LoadTexFileExists(szStr)) + SML_MtlSetTextureLighting(SXMaterialEditor::IDMat, szStr); else { - SML_MtlGetTextureLighting(SXMaterialEditor::IDMat, tmptextval); - SXMaterialEditor::EditTexLighting->setText(tmptextval); - - MessageBox(0, "texture not found", 0, 0); + char szStr2[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr2[0] = 0; + SML_MtlGetTextureLighting(SXMaterialEditor::IDMat, szStr2); + TexProcInputString(szStr); + + SXMaterialEditor::EditTexLighting->setText(szStr); } return 0; @@ -120,19 +141,21 @@ LRESULT SXMaterialEditor_EditTexLighting_Enter(HWND hwnd, UINT msg, WPARAM wPara LRESULT SXMaterialEditor_EditMask_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; - tmptextval[0] = 0; + char szStr[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr[0] = 0; - SXMaterialEditor::EditMask->getText(tmptextval, SXGC_LOADTEX_MAX_SIZE_DIRNAME); + SXMaterialEditor::EditMask->getText(szStr, SXGC_LOADTEX_MAX_SIZE_DIRNAME); - if (SGCore_LoadTexFileExists(tmptextval)) - SML_MtlSetMaskTex(SXMaterialEditor::IDMat, tmptextval); + if (SGCore_LoadTexFileExists(szStr)) + SML_MtlSetMaskTex(SXMaterialEditor::IDMat, szStr); else { - SML_MtlGetMaskTex(SXMaterialEditor::IDMat, tmptextval); - SXMaterialEditor::EditMask->setText(tmptextval); - - MessageBox(0, "texture not found", 0, 0); + char szStr2[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr2[0] = 0; + SML_MtlGetMaskTex(SXMaterialEditor::IDMat, szStr2); + TexProcInputString(szStr); + + SXMaterialEditor::EditMask->setText(szStr); } return 0; @@ -140,19 +163,21 @@ LRESULT SXMaterialEditor_EditMask_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPAR LRESULT SXMaterialEditor_EditMR_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; - tmptextval[0] = 0; + char szStr[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr[0] = 0; - SXMaterialEditor::EditMR->getText(tmptextval, SXGC_LOADTEX_MAX_SIZE_DIRNAME); + SXMaterialEditor::EditMR->getText(szStr, SXGC_LOADTEX_MAX_SIZE_DIRNAME); - if (SGCore_LoadTexFileExists(tmptextval)) - SML_MtlSetMRTex(SXMaterialEditor::IDMat, 0, tmptextval); + if (SGCore_LoadTexFileExists(szStr)) + SML_MtlSetMRTex(SXMaterialEditor::IDMat, 0, szStr); else { - SML_MtlGetMRTex(SXMaterialEditor::IDMat, 0, tmptextval); - SXMaterialEditor::EditMR->setText(tmptextval); - - MessageBox(0, "texture not found", 0, 0); + char szStr2[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr2[0] = 0; + SML_MtlGetMRTex(SXMaterialEditor::IDMat, 0, szStr2); + TexProcInputString(szStr); + + SXMaterialEditor::EditMR->setText(szStr); } return 0; @@ -160,19 +185,21 @@ LRESULT SXMaterialEditor_EditMR_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM LRESULT SXMaterialEditor_EditMG_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; - tmptextval[0] = 0; + char szStr[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr[0] = 0; - SXMaterialEditor::EditMG->getText(tmptextval, SXGC_LOADTEX_MAX_SIZE_DIRNAME); + SXMaterialEditor::EditMG->getText(szStr, SXGC_LOADTEX_MAX_SIZE_DIRNAME); - if (SGCore_LoadTexFileExists(tmptextval)) - SML_MtlSetMRTex(SXMaterialEditor::IDMat, 1, tmptextval); + if (SGCore_LoadTexFileExists(szStr)) + SML_MtlSetMRTex(SXMaterialEditor::IDMat, 1, szStr); else { - SML_MtlGetMRTex(SXMaterialEditor::IDMat, 1, tmptextval); - SXMaterialEditor::EditMG->setText(tmptextval); - - MessageBox(0, "texture not found", 0, 0); + char szStr2[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr2[0] = 0; + SML_MtlGetMRTex(SXMaterialEditor::IDMat, 1, szStr2); + TexProcInputString(szStr); + + SXMaterialEditor::EditMG->setText(szStr); } return 0; @@ -180,19 +207,21 @@ LRESULT SXMaterialEditor_EditMG_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM LRESULT SXMaterialEditor_EditMB_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; - tmptextval[0] = 0; + char szStr[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr[0] = 0; - SXMaterialEditor::EditMB->getText(tmptextval, SXGC_LOADTEX_MAX_SIZE_DIRNAME); + SXMaterialEditor::EditMB->getText(szStr, SXGC_LOADTEX_MAX_SIZE_DIRNAME); - if (SGCore_LoadTexFileExists(tmptextval)) - SML_MtlSetMRTex(SXMaterialEditor::IDMat, 2, tmptextval); + if (SGCore_LoadTexFileExists(szStr)) + SML_MtlSetMRTex(SXMaterialEditor::IDMat, 2, szStr); else { - SML_MtlGetMRTex(SXMaterialEditor::IDMat, 2, tmptextval); - SXMaterialEditor::EditMB->setText(tmptextval); - - MessageBox(0, "texture not found", 0, 0); + char szStr2[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr2[0] = 0; + SML_MtlGetMRTex(SXMaterialEditor::IDMat, 2, szStr2); + TexProcInputString(szStr); + + SXMaterialEditor::EditMB->setText(szStr); } return 0; @@ -200,19 +229,21 @@ LRESULT SXMaterialEditor_EditMB_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM LRESULT SXMaterialEditor_EditMA_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; - tmptextval[0] = 0; + char szStr[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr[0] = 0; - SXMaterialEditor::EditMA->getText(tmptextval, SXGC_LOADTEX_MAX_SIZE_DIRNAME); + SXMaterialEditor::EditMA->getText(szStr, SXGC_LOADTEX_MAX_SIZE_DIRNAME); - if (SGCore_LoadTexFileExists(tmptextval)) - SML_MtlSetMRTex(SXMaterialEditor::IDMat, 3, tmptextval); + if (SGCore_LoadTexFileExists(szStr)) + SML_MtlSetMRTex(SXMaterialEditor::IDMat, 3, szStr); else { - SML_MtlGetMRTex(SXMaterialEditor::IDMat, 3, tmptextval); - SXMaterialEditor::EditMA->setText(tmptextval); - - MessageBox(0, "texture not found", 0, 0); + char szStr2[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr2[0] = 0; + SML_MtlGetMRTex(SXMaterialEditor::IDMat, 3, szStr); + TexProcInputString(szStr); + + SXMaterialEditor::EditMA->setText(szStr); } return 0; @@ -221,19 +252,21 @@ LRESULT SXMaterialEditor_EditMA_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM LRESULT SXMaterialEditor_EditDR_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; - tmptextval[0] = 0; + char szStr[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr[0] = 0; - SXMaterialEditor::EditDR->getText(tmptextval, SXGC_LOADTEX_MAX_SIZE_DIRNAME); + SXMaterialEditor::EditDR->getText(szStr, SXGC_LOADTEX_MAX_SIZE_DIRNAME); - if (SGCore_LoadTexFileExists(tmptextval)) - SML_MtlSetDTex(SXMaterialEditor::IDMat, 0, tmptextval); + if (SGCore_LoadTexFileExists(szStr)) + SML_MtlSetDTex(SXMaterialEditor::IDMat, 0, szStr); else { - SML_MtlGetDTex(SXMaterialEditor::IDMat, 0, tmptextval); - SXMaterialEditor::EditDR->setText(tmptextval); - - MessageBox(0, "texture not found", 0, 0); + char szStr2[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr2[0] = 0; + SML_MtlGetDTex(SXMaterialEditor::IDMat, 0, szStr); + TexProcInputString(szStr); + + SXMaterialEditor::EditDR->setText(szStr); } return 0; @@ -241,19 +274,21 @@ LRESULT SXMaterialEditor_EditDR_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM LRESULT SXMaterialEditor_EditDG_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; - tmptextval[0] = 0; + char szStr[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr[0] = 0; - SXMaterialEditor::EditDG->getText(tmptextval, SXGC_LOADTEX_MAX_SIZE_DIRNAME); + SXMaterialEditor::EditDG->getText(szStr, SXGC_LOADTEX_MAX_SIZE_DIRNAME); - if (SGCore_LoadTexFileExists(tmptextval)) - SML_MtlSetDTex(SXMaterialEditor::IDMat, 1, tmptextval); + if (SGCore_LoadTexFileExists(szStr)) + SML_MtlSetDTex(SXMaterialEditor::IDMat, 1, szStr); else { - SML_MtlGetDTex(SXMaterialEditor::IDMat, 1, tmptextval); - SXMaterialEditor::EditDR->setText(tmptextval); - - MessageBox(0, "texture not found", 0, 0); + char szStr2[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr2[0] = 0; + SML_MtlGetDTex(SXMaterialEditor::IDMat, 1, szStr); + TexProcInputString(szStr); + + SXMaterialEditor::EditDR->setText(szStr); } return 0; @@ -261,19 +296,21 @@ LRESULT SXMaterialEditor_EditDG_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM LRESULT SXMaterialEditor_EditDB_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; - tmptextval[0] = 0; + char szStr[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr[0] = 0; - SXMaterialEditor::EditDB->getText(tmptextval, SXGC_LOADTEX_MAX_SIZE_DIRNAME); + SXMaterialEditor::EditDB->getText(szStr, SXGC_LOADTEX_MAX_SIZE_DIRNAME); - if (SGCore_LoadTexFileExists(tmptextval)) - SML_MtlSetDTex(SXMaterialEditor::IDMat, 2, tmptextval); + if (SGCore_LoadTexFileExists(szStr)) + SML_MtlSetDTex(SXMaterialEditor::IDMat, 2, szStr); else { - SML_MtlGetDTex(SXMaterialEditor::IDMat, 2, tmptextval); - SXMaterialEditor::EditDR->setText(tmptextval); - - MessageBox(0, "texture not found", 0, 0); + char szStr2[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr2[0] = 0; + SML_MtlGetDTex(SXMaterialEditor::IDMat, 2, szStr); + TexProcInputString(szStr); + + SXMaterialEditor::EditDR->setText(szStr); } return 0; @@ -281,35 +318,37 @@ LRESULT SXMaterialEditor_EditDB_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM LRESULT SXMaterialEditor_EditDA_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; - tmptextval[0] = 0; + char szStr[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr[0] = 0; - SXMaterialEditor::EditDA->getText(tmptextval, SXGC_LOADTEX_MAX_SIZE_DIRNAME); + SXMaterialEditor::EditDA->getText(szStr, SXGC_LOADTEX_MAX_SIZE_DIRNAME); - if (SGCore_LoadTexFileExists(tmptextval)) - SML_MtlSetDTex(SXMaterialEditor::IDMat, 3, tmptextval); + if (SGCore_LoadTexFileExists(szStr)) + SML_MtlSetDTex(SXMaterialEditor::IDMat, 3, szStr); else { - SML_MtlGetDTex(SXMaterialEditor::IDMat, 3, tmptextval); - SXMaterialEditor::EditDR->setText(tmptextval); - - MessageBox(0, "texture not found", 0, 0); + char szStr2[SXGC_LOADTEX_MAX_SIZE_DIRNAME]; + szStr2[0] = 0; + SML_MtlGetDTex(SXMaterialEditor::IDMat, 3, szStr); + TexProcInputString(szStr); + + SXMaterialEditor::EditDR->setText(szStr); } return 0; } -///////////// +//########################################################################## LRESULT SXMaterialEditor_EditRoughness_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[256]; - tmptextval[0] = 0; + char szStr[256]; + szStr[0] = 0; float tmpval = 0; - SXMaterialEditor::EditRoughness->getText(tmptextval, 256); + SXMaterialEditor::EditRoughness->getText(szStr, 256); - sscanf(tmptextval, "%f", &tmpval); + sscanf(szStr, "%f", &tmpval); SXMaterialEditor::TrackBarRoughness->setPos(tmpval*100); SML_MtlSetRoughness(SXMaterialEditor::IDMat, tmpval); @@ -319,13 +358,13 @@ LRESULT SXMaterialEditor_EditRoughness_Enter(HWND hwnd, UINT msg, WPARAM wParam, LRESULT SXMaterialEditor_EditF0_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[256]; - tmptextval[0] = 0; + char szStr[256]; + szStr[0] = 0; float tmpval = 0; - SXMaterialEditor::EditF0->getText(tmptextval, 256); + SXMaterialEditor::EditF0->getText(szStr, 256); - sscanf(tmptextval, "%f", &tmpval); + sscanf(szStr, "%f", &tmpval); SXMaterialEditor::TrackBarF0->setPos(tmpval * 100); SML_MtlSetF0(SXMaterialEditor::IDMat, tmpval); @@ -334,13 +373,13 @@ LRESULT SXMaterialEditor_EditF0_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM LRESULT SXMaterialEditor_EditThickness_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[256]; - tmptextval[0] = 0; + char szStr[256]; + szStr[0] = 0; float tmpval = 0; - SXMaterialEditor::EditThickness->getText(tmptextval, 256); + SXMaterialEditor::EditThickness->getText(szStr, 256); - sscanf(tmptextval, "%f", &tmpval); + sscanf(szStr, "%f", &tmpval); SXMaterialEditor::TrackBarThickness->setPos(tmpval * 100); SML_MtlSetThickness(SXMaterialEditor::IDMat, tmpval); @@ -351,13 +390,13 @@ LRESULT SXMaterialEditor_EditThickness_Enter(HWND hwnd, UINT msg, WPARAM wParam, LRESULT SXMaterialEditor_EditUDVSX_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[256]; - tmptextval[0] = 0; + char szStr[256]; + szStr[0] = 0; float tmpval = 0; - SXMaterialEditor::EditUDVSX->getText(tmptextval, 256); + SXMaterialEditor::EditUDVSX->getText(szStr, 256); - sscanf(tmptextval, "%f", &tmpval); + sscanf(szStr, "%f", &tmpval); SXMaterialEditor::TrackBarUDVSX->setPos(tmpval * 100); SML_MtlSetUDVS(SXMaterialEditor::IDMat, 0, tmpval); @@ -366,13 +405,13 @@ LRESULT SXMaterialEditor_EditUDVSX_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPA LRESULT SXMaterialEditor_EditUDVSY_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[256]; - tmptextval[0] = 0; + char szStr[256]; + szStr[0] = 0; float tmpval = 0; - SXMaterialEditor::EditUDVSY->getText(tmptextval, 256); + SXMaterialEditor::EditUDVSY->getText(szStr, 256); - sscanf(tmptextval, "%f", &tmpval); + sscanf(szStr, "%f", &tmpval); SXMaterialEditor::TrackBarUDVSY->setPos(tmpval * 100); SML_MtlSetUDVS(SXMaterialEditor::IDMat, 1, tmpval); @@ -381,13 +420,13 @@ LRESULT SXMaterialEditor_EditUDVSY_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPA LRESULT SXMaterialEditor_EditUDVSZ_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[256]; - tmptextval[0] = 0; + char szStr[256]; + szStr[0] = 0; float tmpval = 0; - SXMaterialEditor::EditUDVSZ->getText(tmptextval, 256); + SXMaterialEditor::EditUDVSZ->getText(szStr, 256); - sscanf(tmptextval, "%f", &tmpval); + sscanf(szStr, "%f", &tmpval); SXMaterialEditor::TrackBarUDVSZ->setPos(tmpval * 100); SML_MtlSetUDVS(SXMaterialEditor::IDMat, 2, tmpval); @@ -396,13 +435,13 @@ LRESULT SXMaterialEditor_EditUDVSZ_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPA LRESULT SXMaterialEditor_EditUDVSW_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[256]; - tmptextval[0] = 0; + char szStr[256]; + szStr[0] = 0; float tmpval = 0; - SXMaterialEditor::EditUDVSW->getText(tmptextval, 256); + SXMaterialEditor::EditUDVSW->getText(szStr, 256); - sscanf(tmptextval, "%f", &tmpval); + sscanf(szStr, "%f", &tmpval); SXMaterialEditor::TrackBarUDVSW->setPos(tmpval * 100); SML_MtlSetUDVS(SXMaterialEditor::IDMat, 3, tmpval); @@ -412,13 +451,13 @@ LRESULT SXMaterialEditor_EditUDVSW_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPA LRESULT SXMaterialEditor_EditUDPSX_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[256]; - tmptextval[0] = 0; + char szStr[256]; + szStr[0] = 0; float tmpval = 0; - SXMaterialEditor::EditUDPSX->getText(tmptextval, 256); + SXMaterialEditor::EditUDPSX->getText(szStr, 256); - sscanf(tmptextval, "%f", &tmpval); + sscanf(szStr, "%f", &tmpval); SXMaterialEditor::TrackBarUDPSX->setPos(tmpval * 100); SML_MtlSetUDPS(SXMaterialEditor::IDMat, 0, tmpval); @@ -427,13 +466,13 @@ LRESULT SXMaterialEditor_EditUDPSX_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPA LRESULT SXMaterialEditor_EditUDPSY_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[256]; - tmptextval[0] = 0; + char szStr[256]; + szStr[0] = 0; float tmpval = 0; - SXMaterialEditor::EditUDPSY->getText(tmptextval, 256); + SXMaterialEditor::EditUDPSY->getText(szStr, 256); - sscanf(tmptextval, "%f", &tmpval); + sscanf(szStr, "%f", &tmpval); SXMaterialEditor::TrackBarUDPSY->setPos(tmpval * 100); SML_MtlSetUDPS(SXMaterialEditor::IDMat, 1, tmpval); @@ -442,13 +481,13 @@ LRESULT SXMaterialEditor_EditUDPSY_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPA LRESULT SXMaterialEditor_EditUDPSZ_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[256]; - tmptextval[0] = 0; + char szStr[256]; + szStr[0] = 0; float tmpval = 0; - SXMaterialEditor::EditUDPSZ->getText(tmptextval, 256); + SXMaterialEditor::EditUDPSZ->getText(szStr, 256); - sscanf(tmptextval, "%f", &tmpval); + sscanf(szStr, "%f", &tmpval); SXMaterialEditor::TrackBarUDPSZ->setPos(tmpval * 100); SML_MtlSetUDPS(SXMaterialEditor::IDMat, 2, tmpval); @@ -457,13 +496,13 @@ LRESULT SXMaterialEditor_EditUDPSZ_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPA LRESULT SXMaterialEditor_EditUDPSW_Enter(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - char tmptextval[256]; - tmptextval[0] = 0; + char szStr[256]; + szStr[0] = 0; float tmpval = 0; - SXMaterialEditor::EditUDPSW->getText(tmptextval, 256); + SXMaterialEditor::EditUDPSW->getText(szStr, 256); - sscanf(tmptextval, "%f", &tmpval); + sscanf(szStr, "%f", &tmpval); SXMaterialEditor::TrackBarUDPSW->setPos(tmpval * 100); SML_MtlSetUDPS(SXMaterialEditor::IDMat, 3, tmpval); diff --git a/source/sxmaterialeditor/sxmaterialeditor.cpp b/source/sxmaterialeditor/sxmaterialeditor.cpp index a9fc8df2202a3843c9fbf44ac0d0d5b8688cee2b..e98b551dffad7a732ef0ec514611547b866575bb 100644 --- a/source/sxmaterialeditor/sxmaterialeditor.cpp +++ b/source/sxmaterialeditor/sxmaterialeditor.cpp @@ -467,8 +467,8 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLin SXMaterialEditor::ComboBoxParamL->setSel(0); - SGCore_SkyBoxLoadTex("sky/sky_2_cube.dds"); - SXMaterialEditor::EditSkyBox->setText("sky/sky_2_cube.dds"); + SGCore_SkyBoxLoadTex("sky_2_cube.dds"); + SXMaterialEditor::EditSkyBox->setText("sky_2_cube.dds"); SRender_GetCamera()->setPosition(&float3(0, 0, -100));