void GenerateBinaryTree(BNode** tree, int level = 0) { if (!tree) { return; } *tree = new BNode(); BNode* pTree = *tree; pTree->name = GetNextName(); pTree->sibling = nullptr; // Left chance! if (DoGenerateNewNode(level)) { GenerateBinaryTree(&(pTree->left), level + 1); } else { pTree->left = nullptr; } // Right chance! if (DoGenerateNewNode(level)) { GenerateBinaryTree(&(pTree->right), level + 1); } else { pTree->right = nullptr; } }
void ZApplication::ParseStandAloneArguments(const char* pszArgs) { char buffer[256]; char *str; str=strstr(pszArgs, ZTOKEN_GAME); if ( str != NULL) { #ifndef LOCALE_NHNUSA ZApplication::GetInstance()->m_nInitialState = GUNZ_GAME; if(GetNextName(buffer,sizeof(buffer),str+strlen(ZTOKEN_GAME))) { strcpy(m_szFileName,buffer); CreateTestGame(buffer); SetLaunchMode(ZLAUNCH_MODE_STANDALONE_GAME); return; } #endif } str=strstr(pszArgs, ZTOKEN_GAME_CHARDUMMY); if ( str != NULL) { ZApplication::GetInstance()->m_nInitialState = GUNZ_GAME; char szTemp[256], szMap[256]; int nDummyCount = 0, nShotEnable = 0; sscanf(str, "%s %s %d %d", szTemp, szMap, &nDummyCount, &nShotEnable); bool bShotEnable = false; if (nShotEnable != 0) bShotEnable = true; SetLaunchMode(ZLAUNCH_MODE_STANDALONE_GAME); CreateTestGame(szMap, nDummyCount, bShotEnable); return; } str=strstr(pszArgs, ZTOKEN_QUEST); if ( str != NULL) { SetLaunchMode(ZLAUNCH_MODE_STANDALONE_QUEST); return; } #ifndef LOCALE_NHNUSA #ifdef _QUEST str=strstr(pszArgs, ZTOKEN_GAME_AI); if ( str != NULL) { SetLaunchMode(ZLAUNCH_MODE_STANDALONE_AI); ZApplication::GetInstance()->m_nInitialState = GUNZ_GAME; char szTemp[256], szMap[256]; sscanf(str, "%s %s", szTemp, szMap); ZGetGameClient()->GetMatchStageSetting()->SetGameType(MMATCH_GAMETYPE_QUEST); CreateTestGame(szMap, 0, false, true, 0); return; } #endif #endif }
void CSceneRendererCommandManager::Load(const std::string &FileName) { CXMLTreeNode parser; if (!parser.LoadFile(FileName.c_str())) { std::string msg_error = "CSceneRendererCommandManager::Load->Error al intentar leer el archivo: " + FileName; LOGGER->AddNewLog(ELL_ERROR, msg_error.c_str()); throw CException(__FILE__, __LINE__, msg_error); } m_FileName = FileName; // Obtenemos el nodo "scene_renderer_commands" CXMLTreeNode l_SceneRendererCommandManagerNode = parser["scene_renderer_commands"]; if (l_SceneRendererCommandManagerNode.Exists()) { // Obtenemos los datos para todos los scene renderer commands int l_count_objects = l_SceneRendererCommandManagerNode.GetNumChildren(); for (int i = 0; i < l_count_objects; ++i) { if (!l_SceneRendererCommandManagerNode(i).IsComment()) { CSceneRendererCommand* l_RendererSceneCommand = NULL; std::string l_CommandName = l_SceneRendererCommandManagerNode(i).GetName(); if (l_CommandName=="begin_scene") { l_RendererSceneCommand = new CBeginRenderSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="clear_scene") { l_RendererSceneCommand = new CClearSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="enable_z_write") { l_RendererSceneCommand = new CEnableZWriteSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="enable_z_test") { l_RendererSceneCommand = new CEnableZTestSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="disable_z_test") { l_RendererSceneCommand = new CDisableZTestSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="render_scene") { l_RendererSceneCommand = new CRenderSceneSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="disable_z_write") { l_RendererSceneCommand = new CDisableZWriteSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="end_scene") { l_RendererSceneCommand = new CEndRenderSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="present") { l_RendererSceneCommand = new CPresentSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="set_pool_renderable_objects_technique") { l_RendererSceneCommand = new CRenderableObjectTechniquesSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="setup_matrices") { l_RendererSceneCommand = new CSetupMatricesSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="set_render_target") { l_RendererSceneCommand = new CSetRenderTargetSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="unset_render_target") { std::string l_RenderTarget = l_SceneRendererCommandManagerNode(i).GetPszProperty("render_target",""); CSetRenderTargetSceneRendererCommand * l_SetRenderer=NULL; l_SetRenderer = (CSetRenderTargetSceneRendererCommand *)m_SceneRendererCommands.GetResource(l_RenderTarget); if (l_SetRenderer!=NULL) { l_RendererSceneCommand = new CUnsetRenderTargetSceneRendererCommand(l_SetRenderer, l_SceneRendererCommandManagerNode(i)); } } else if (l_CommandName=="generate_shadow_maps") { l_RendererSceneCommand = new CGenerateShadowMapsSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="blurH_shadow_maps") { l_RendererSceneCommand = new CBlurHShadowMapsSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="blurV_shadow_maps") { l_RendererSceneCommand = new CBlurVShadowMapsSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="capture_frame_buffer") { l_RendererSceneCommand = new CCaptureFrameBufferSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="render_draw_quad") { l_RendererSceneCommand = new CDrawQuadRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="render_deferred_shading") { l_RendererSceneCommand = new CDeferredShadingSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="set_scissor_rect") { l_RendererSceneCommand = new CScissorRectSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="unset_scissor_rect") { l_RendererSceneCommand = new CUnsetScissorRectSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="render_gui") { l_RendererSceneCommand = new CRenderGUISceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="render_particles") { l_RendererSceneCommand = new CRenderParticlesSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="render_mirrors") { l_RendererSceneCommand = new CRenderMirrorsSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } // DEBUG: else if (l_CommandName=="render_debug_scene") { l_RendererSceneCommand = new CRenderDebugSceneSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="render_debug_lights") { l_RendererSceneCommand = new CRenderDebugLightsSceneSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="render_debug_info") { l_RendererSceneCommand = new CRenderDebugInfoSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="render_debug_camera") { l_RendererSceneCommand = new CRenderDebugCameraSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } else if (l_CommandName=="render_debug_physX") { l_RendererSceneCommand = new CRenderDebugPhysXSceneRendererCommand(l_SceneRendererCommandManagerNode(i)); } if (l_RendererSceneCommand!=NULL) { std::string l_Name = l_SceneRendererCommandManagerNode(i).GetPszProperty("name",""); if (l_Name=="") l_Name = l_CommandName + "_" + GetNextName(); l_RendererSceneCommand->SetName(l_Name); m_SceneRendererCommands.AddResource(l_Name, l_RendererSceneCommand); } } } } }
bool ScanTree::GetNextName(FAR_FIND_DATA_EX *fdata,string &strFullName) { if (!ScanItems.getCount()) return false; bool Done=false; Flags.Clear(FSCANTREE_SECONDDIRNAME); for (;;) { ScanTreeData* LastItem = ScanItems.lastItem(); if (!LastItem->Find) { LastItem->Find = new FindFile(strFindPath); } Done=!LastItem->Find->Get(*fdata); if (Flags.Check(FSCANTREE_FILESFIRST)) { if (LastItem->Flags.Check(FSCANTREE_SECONDPASS)) { if (!Done && !(fdata->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) continue; } else { if (!Done && (fdata->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) continue; if (Done) { if(LastItem->Find) { delete LastItem->Find; LastItem->Find = nullptr; } LastItem->Flags.Set(FSCANTREE_SECONDPASS); continue; } } } break; } if (Done) { ScanItems.deleteItem(ScanItems.getCount()-1); if (!ScanItems.getCount()) return false; else { if (ScanItems.lastItem()->Flags.Check(FSCANTREE_INSIDEJUNCTION)) Flags.Clear(FSCANTREE_INSIDEJUNCTION); CutToSlash(strFindPath,true); if (Flags.Check(FSCANTREE_RETUPDIR)) { strFullName = strFindPath; apiGetFindDataEx(strFullName, *fdata); } CutToSlash(strFindPath); strFindPath += strFindMask; _SVS(SysLog(L"1. FullName='%s'",strFullName.CPtr())); if (Flags.Check(FSCANTREE_RETUPDIR)) { Flags.Set(FSCANTREE_SECONDDIRNAME); return true; } return GetNextName(fdata,strFullName); } } else { if ((fdata->dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) && Flags.Check(FSCANTREE_RECUR) && (!(fdata->dwFileAttributes&FILE_ATTRIBUTE_REPARSE_POINT) || Flags.Check(FSCANTREE_SCANSYMLINK))) { string RealPath(ScanItems.lastItem()->RealPath); AddEndSlash(RealPath); RealPath += fdata->strFileName; if (fdata->dwFileAttributes&FILE_ATTRIBUTE_REPARSE_POINT) ConvertNameToReal(RealPath, RealPath); //recursive symlinks guard bool Recursion = false; for (size_t i = 0; i < ScanItems.getCount() && !Recursion; i++) Recursion = ScanItems.getItem(i)->RealPath == RealPath; if (!Recursion) { CutToSlash(strFindPath); strFindPath += fdata->strFileName; strFullName = strFindPath; strFindPath += L"\\"; strFindPath += strFindMask; ScanItems.addItem(); ScanItems.lastItem()->Flags = ScanItems.getItem(ScanItems.getCount()-2)->Flags; // наследуем флаг ScanItems.lastItem()->Flags.Clear(FSCANTREE_SECONDPASS); ScanItems.lastItem()->RealPath = RealPath; if (fdata->dwFileAttributes&FILE_ATTRIBUTE_REPARSE_POINT) { ScanItems.lastItem()->Flags.Set(FSCANTREE_INSIDEJUNCTION); Flags.Set(FSCANTREE_INSIDEJUNCTION); } return true; } } } strFullName = strFindPath; CutToSlash(strFullName); strFullName += fdata->strFileName; return true; }