这篇教程C++ GML_STDMUTEX_LOCK函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中GML_STDMUTEX_LOCK函数的典型用法代码示例。如果您正苦于以下问题:C++ GML_STDMUTEX_LOCK函数的具体用法?C++ GML_STDMUTEX_LOCK怎么用?C++ GML_STDMUTEX_LOCK使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了GML_STDMUTEX_LOCK函数的22个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: StringTrimInPlaceunsigned int CCategoryHandler::GetCategory(std::string name){ StringTrimInPlace(name); StringToLowerInPlace(name); if (name.empty()) return 0; // the empty category unsigned int cat = 0; GML_STDMUTEX_LOCK(cat); // GetCategory if (categories.find(name) == categories.end()) { // this category is yet unknown if (firstUnused >= CCategoryHandler::GetMaxCategories()) { // skip this category LOG_L(L_WARNING, "too many unit categories (%i), skipping %s", firstUnused, name.c_str()); cat = 0; } else { // create the category (bit field value) cat = (1 << firstUnused); //LOG_L(L_DEBUG, "New unit-category %s #%i", name.c_str(), firstUnused); } // if (cat == 0), this will prevent further warnings for this category categories[name] = cat; firstUnused++; } else { // this category is already known cat = categories[name]; } return cat;}
开发者ID:Arkazon,项目名称:spring,代码行数:34,
示例2: LOG_Lvoid CAICallback::DrawUnit(const char* unitName, const float3& pos, float rotation, int lifetime, int teamId, bool transparent, bool drawBorder, int facing){ CUnitDrawer::TempDrawUnit tdu; tdu.unitdef = unitDefHandler->GetUnitDefByName(unitName); if (!tdu.unitdef) { LOG_L(L_WARNING, "Unknown unit in CAICallback::DrawUnit %s", unitName); return; } tdu.pos = pos; tdu.rotation = rotation; tdu.team = teamId; tdu.drawBorder = drawBorder; tdu.facing = facing; std::pair<int, CUnitDrawer::TempDrawUnit> tp(gs->frameNum + lifetime, tdu); GML_STDMUTEX_LOCK(temp); // DrawUnit if (transparent) { unitDrawer->tempTransparentDrawUnits.insert(tp); } else { unitDrawer->tempDrawUnits.insert(tp); }}
开发者ID:Anarchid,项目名称:spring,代码行数:25,
示例3: GML_STDMUTEX_LOCKbool CInMapDrawModel::AddPoint(const float3& constPos, const std::string& label, int playerID){ if (!playerHandler->IsValidPlayer(playerID)) { return false; } GML_STDMUTEX_LOCK(inmap); // LocalPoint // GotNetMsg() alreadys checks validity of playerID const CPlayer* sender = playerHandler->Player(playerID); const bool allowed = AllowedMsg(sender); float3 pos = constPos; pos.ClampInBounds(); pos.y = ground->GetHeightAboveWater(pos.x, pos.z, false) + 2.0f; // event clients may process the point // if their owner is allowed to see it if (allowed && eventHandler.MapDrawCmd(playerID, MAPDRAW_POINT, &pos, NULL, &label)) { return false; } // let the engine handle it (disallowed // points added here are filtered while // rendering the quads) MapPoint point(sender->spectator, sender->team, sender, pos, label); const int quad = int(pos.z * QUAD_SCALE) * drawQuadsX + int(pos.x * QUAD_SCALE); drawQuads[quad].points.push_back(point); numPoints++; return true;}
开发者ID:AlexDiede,项目名称:spring,代码行数:35,
示例4: GML_STDMUTEX_LOCKvoid CConsoleHistory::ResetPosition(){ GML_STDMUTEX_LOCK(hist); // ResetPosition pos = lines.end(); return;}
开发者ID:AMDmi3,项目名称:spring,代码行数:7,
示例5: GML_STDMUTEX_LOCKvoid CLogOutput::Output(const std::string& str){ GML_STDMUTEX_LOCK(log); // Output std::string msg;#if !defined UNITSYNC && !defined DEDICATED if (gs) { msg += IntToString(gs->frameNum, "[f=%07d] "); }#endif msg += str; if (!initialized) { ToStderr(msg); preInitLog().push_back(msg); return; }#ifdef _MSC_VER int index = strlen(str.c_str()) - 1; bool newline = ((index < 0) || (str[index] != '/n')); OutputDebugString(msg.c_str()); if (newline) { OutputDebugString("/n"); }#endif // _MSC_VER ToFile(msg); ToStderr(msg);}
开发者ID:DarksidedStudios,项目名称:spring,代码行数:32,
示例6: GML_STDMUTEX_LOCKvoid CInMapDraw::LocalLine(const float3& constPos1, const float3& constPos2, int playerID){ if (!playerHandler->IsValidPlayer(playerID)) return; GML_STDMUTEX_LOCK(inmap); // LocalLine const CPlayer* sender = playerHandler->Player(playerID); float3 pos1 = constPos1; float3 pos2 = constPos2; pos1.CheckInBounds(); pos2.CheckInBounds(); pos1.y = ground->GetHeight(pos1.x, pos1.z) + 2.0f; pos2.y = ground->GetHeight(pos2.x, pos2.z) + 2.0f; if (AllowedMsg(sender) && eventHandler.MapDrawCmd(playerID, MAPDRAW_LINE, &pos1, &pos2, NULL)) { return; } MapLine line; line.pos = pos1; line.pos2 = pos2; line.color = sender->spectator ? color4::white : teamHandler->Team(sender->team)->color; line.senderAllyTeam = teamHandler->AllyTeam(sender->team); line.senderSpectator = sender->spectator; const int quad = int(pos1.z * quadScale) * drawQuadsX + int(pos1.x * quadScale); drawQuads[quad].lines.push_back(line);}
开发者ID:lunixbochs,项目名称:spring,代码行数:32,
示例7: GML_STDMUTEX_LOCKvoid EventBatchHandler::UpdateDrawUnits() { GML_STDMUTEX_LOCK(runit); // UpdateDrawUnits unitCreatedDestroyedEventBatch.execute(); unitCloakStateChangedEventBatch.execute(); unitLOSStateChangedEventBatch.execute();}
开发者ID:rYuuk,项目名称:spring,代码行数:7,
示例8: GML_STDMUTEX_LOCKvoid CUnitHandler::RemoveBuilderCAI(CBuilderCAI* b){ GML_STDMUTEX_LOCK(cai); // RemoveBuilderCAI // called from ~CUnit --> owner is still valid assert(b->owner != NULL); builderCAIs.erase(b->owner->id);}
开发者ID:AlexDiede,项目名称:spring,代码行数:8,
示例9: GML_STDMUTEX_LOCK/** * @brief Process the queue of pending fartexture creation requests. * This loops through the queue calling ReallyCreateFarTexture() on each entry, * and empties the queue afterwards. */void CFartextureHandler::CreateFarTextures(){ GML_STDMUTEX_LOCK(tex); // CreateFarTextures for(std::vector<S3DModel*>::const_iterator it = pending.begin(); it != pending.end(); ++it) { ReallyCreateFarTexture(*it); } pending.clear();}
开发者ID:achoum,项目名称:spring,代码行数:13,
示例10: GML_STDMUTEX_LOCKvoid EventBatchHandler::UpdateObjects() { { GML_STDMUTEX_LOCK(runit); // UpdateObjects UpdateUnits(); } { GML_STDMUTEX_LOCK(rfeat); // UpdateObjects UpdateFeatures(); } { GML_STDMUTEX_LOCK(rproj); // UpdateObjects UpdateProjectiles(); }}
开发者ID:AMDmi3,项目名称:spring,代码行数:17,
示例11: glBindTexturevoid CBasicTreeDrawer::Draw(float treeDistance,bool drawReflection){ glBindTexture(GL_TEXTURE_2D, treetex); glEnable(GL_ALPHA_TEST); int cx=(int)(camera->pos.x/(SQUARE_SIZE*TREE_SQUARE_SIZE)); int cy=(int)(camera->pos.z/(SQUARE_SIZE*TREE_SQUARE_SIZE)); CBasicTreeSquareDrawer drawer; drawer.td = this; drawer.cx = cx; drawer.cy = cy; drawer.treeDistance = treeDistance; GML_STDMUTEX_LOCK(tree); // Draw readmap->GridVisibility (camera, TREE_SQUARE_SIZE, treeDistance*2*SQUARE_SIZE*TREE_SQUARE_SIZE, &drawer); int startClean=lastListClean*20%nTrees; lastListClean=gs->frameNum; int endClean=gs->frameNum*20%nTrees; if(startClean>endClean){ for(TreeSquareStruct *pTSS=trees+startClean; pTSS<trees+nTrees; ++pTSS) { if(pTSS->lastSeen<gs->frameNum-50 && pTSS->displist){ glDeleteLists(pTSS->displist,1); pTSS->displist=0; } if(pTSS->lastSeenFar<gs->frameNum-50 && pTSS->farDisplist){ glDeleteLists(pTSS->farDisplist,1); pTSS->farDisplist=0; } } for(TreeSquareStruct *pTSS=trees; pTSS<trees+endClean; ++pTSS) { if(pTSS->lastSeen<gs->frameNum-50 && pTSS->displist){ glDeleteLists(pTSS->displist,1); pTSS->displist=0; } if(pTSS->lastSeenFar<gs->frameNum-50 && pTSS->farDisplist){ glDeleteLists(pTSS->farDisplist,1); pTSS->farDisplist=0; } } } else { for(TreeSquareStruct *pTSS=trees+startClean; pTSS<trees+endClean; ++pTSS) { if(pTSS->lastSeen<gs->frameNum-50 && pTSS->displist){ glDeleteLists(pTSS->displist,1); pTSS->displist=0; } if(pTSS->lastSeenFar<gs->frameNum-50 && pTSS->farDisplist){ glDeleteLists(pTSS->farDisplist,1); pTSS->farDisplist=0; } } } glDisable(GL_BLEND); glDisable(GL_ALPHA_TEST);}
开发者ID:genxinzou,项目名称:svn-spring-archive,代码行数:58,
示例12: GML_STDMUTEX_LOCKvoid CGroup::RemoveUnit(CUnit *unit){ GML_STDMUTEX_LOCK(group); // RemoveUnit eventHandler.GroupChanged(id); if(ai) ai->RemoveUnit(unit->id); units.erase(unit);}
开发者ID:genxinzou,项目名称:svn-spring-archive,代码行数:9,
示例13: GML_STDMUTEX_LOCKvoid CDynWater::AddExplosion(const float3& pos, float strength, float size){ if(pos.y>size || size < 8) return; GML_STDMUTEX_LOCK(water); // AddExplosion explosions.push_back(Explosion(pos,std::min(size*20,strength),size));}
开发者ID:DeadnightWarrior,项目名称:spring,代码行数:9,
示例14: GML_STDMUTEX_LOCKvoid CNetProtocol::InitLocalClient(){ GML_STDMUTEX_LOCK(net); // InitLocalClient serverConn.reset(new netcode::CLocalConnection); serverConn->Flush(); logOutput.Print("Connecting to local server");}
开发者ID:Dmytry,项目名称:spring,代码行数:9,
示例15: GML_STDMUTEX_LOCKvoid CInMapDraw::Draw(void){ GML_STDMUTEX_LOCK(inmap); //! Draw CVertexArray* va = GetVertexArray(); va->Initialize(); CVertexArray* lineva = GetVertexArray(); lineva->Initialize(); InMapDraw_QuadDrawer drawer; drawer.imd = this; drawer.lineva = lineva; drawer.va = va; drawer.visLabels = &visibleLabels; glDepthMask(0); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); glBindTexture(GL_TEXTURE_2D, texture); readmap->GridVisibility(camera, DRAW_QUAD_SIZE, 3000.0f, &drawer); glDisable(GL_TEXTURE_2D); glLineWidth(3.f); lineva->DrawArrayC(GL_LINES); //! draw lines // XXX hopeless drivers, retest in a year or so... // width greater than 2 causes GUI flicker on ATI hardware as of driver version 9.3 // so redraw lines with width 1 if (globalRendering->atiHacks) { glLineWidth(1.f); lineva->DrawArrayC(GL_LINES); } // draw points glLineWidth(1); glEnable(GL_TEXTURE_2D); va->DrawArrayTC(GL_QUADS); //! draw point markers if (!visibleLabels.empty()) { font->SetColors(); //! default //! draw point labels for (std::vector<MapPoint*>::iterator pi = visibleLabels.begin(); pi != visibleLabels.end(); ++pi) { float3 pos = (*pi)->pos; pos.y += 111.0f; font->SetTextColor((*pi)->color[0]/255.0f, (*pi)->color[1]/255.0f, (*pi)->color[2]/255.0f, 1.0f); //FIXME (overload!) font->glWorldPrint(pos, 26.0f, (*pi)->label); } visibleLabels.clear(); } glDepthMask(1);}
开发者ID:BrainDamage,项目名称:spring,代码行数:56,
示例16: GML_RECMUTEX_LOCKvoid CGroupHandler::GroupCommand(int num, const std::string& cmd){ GML_RECMUTEX_LOCK(sel); // GroupCommand GML_STDMUTEX_LOCK(group); // GroupCommand if ((cmd == "set") || (cmd == "add")) { if (cmd == "set") { groups[num]->ClearUnits(); } const CUnitSet& selUnits = selectedUnits.selectedUnits; CUnitSet::const_iterator ui; for(ui = selUnits.begin(); ui != selUnits.end(); ++ui) { (*ui)->SetGroup(groups[num]); } } else if (cmd == "selectadd") { // do not select the group, just add its members to the current selection CUnitSet::const_iterator gi; for (gi = groups[num]->units.begin(); gi != groups[num]->units.end(); ++gi) { selectedUnits.AddUnit(*gi); } return; } else if (cmd == "selectclear") { // do not select the group, just remove its members from the current selection CUnitSet::const_iterator gi; for (gi = groups[num]->units.begin(); gi != groups[num]->units.end(); ++gi) { selectedUnits.RemoveUnit(*gi); } return; } else if (cmd == "selecttoggle") { // do not select the group, just toggle its members with the current selection const CUnitSet& selUnits = selectedUnits.selectedUnits; CUnitSet::const_iterator gi; for (gi = groups[num]->units.begin(); gi != groups[num]->units.end(); ++gi) { if (selUnits.find(*gi) == selUnits.end()) { selectedUnits.AddUnit(*gi); } else { selectedUnits.RemoveUnit(*gi); } } return; } if(selectedUnits.selectedGroup==num && !groups[num]->units.empty()){ float3 p(0,0,0); for(CUnitSet::iterator gi=groups[num]->units.begin();gi!=groups[num]->units.end();++gi){ p+=(*gi)->pos; } p/=groups[num]->units.size(); camHandler->GetCurrentController().SetPos(p); } selectedUnits.SelectGroup(num);}
开发者ID:genxinzou,项目名称:svn-spring-archive,代码行数:56,
示例17: GML_STDMUTEX_LOCKvoid EventBatchHandler::UpdateDrawProjectiles() { GML_STDMUTEX_LOCK(rproj); // UpdateDrawProjectiles#if DETACH_SYNCED syncedProjectileCreatedDestroyedEventBatch.delete_delayed();#endif syncedProjectileCreatedDestroyedEventBatch.add_delayed(); unsyncedProjectileCreatedDestroyedEventBatch.delete_delayed(); unsyncedProjectileCreatedDestroyedEventBatch.add_delayed();}
开发者ID:niavok,项目名称:spring,代码行数:10,
示例18: GML_STDMUTEX_LOCKvoid ITreeDrawer::Update() { GML_STDMUTEX_LOCK(tree); // Update std::vector<GLuint>::iterator i; for (i = delDispLists.begin(); i != delDispLists.end(); ++i) { glDeleteLists(*i, 1); } delDispLists.clear();}
开发者ID:niavok,项目名称:spring,代码行数:10,
示例19: GML_STDMUTEX_LOCKvoid CAdvTreeDrawer::DeleteTree(float3 pos){ GML_STDMUTEX_LOCK(tree); // DeleteTree int hash=(int)pos.x+((int)(pos.z))*20000; int square=((int)pos.x)/(SQUARE_SIZE*TREE_SQUARE_SIZE)+((int)pos.z)/(SQUARE_SIZE*TREE_SQUARE_SIZE)*treesX; trees[square].trees.erase(hash); ResetPos(pos);}
开发者ID:DeadnightWarrior,项目名称:spring,代码行数:11,
示例20: GML_STDMUTEX_LOCKvoid CNetProtocol::InitLocalClient(const unsigned wantedNumber){ GML_STDMUTEX_LOCK(net); server.reset(new netcode::CLocalConnection); server->Flush(); if (!localDemoPlayback) { record.reset(new CDemoRecorder()); } logOutput.Print("Connecting to local server using number %i", wantedNumber);}
开发者ID:genxinzou,项目名称:svn-spring-archive,代码行数:13,
示例21: GML_STDMUTEX_LOCKvoid CAdvTreeDrawer::DeleteTree(const float3& pos){ GML_STDMUTEX_LOCK(tree); // DeleteTree const int hash = (int)pos.x + ((int)pos.z * 20000); const int square = ((int)pos.x / (SQUARE_SIZE * TREE_SQUARE_SIZE)) + ((int)pos.z / (SQUARE_SIZE * TREE_SQUARE_SIZE) * treesX); trees[square].trees.erase(hash); ResetPos(pos);}
开发者ID:DarksidedStudios,项目名称:spring,代码行数:13,
示例22: GML_STDMUTEX_LOCKvoid C3DModelParser::Update() { GML_STDMUTEX_LOCK(model); // Update units3oparser->Update(); unit3doparser->Update(); for(std::set<CUnit *>::iterator i=fixLocalModels.begin(); i!=fixLocalModels.end(); ++i) FixLocalModel(*i); fixLocalModels.clear(); for(std::vector<LocalS3DOModel *>::iterator i=deleteLocalModels.begin(); i!=deleteLocalModels.end(); ++i) delete *i; deleteLocalModels.clear();}
开发者ID:genxinzou,项目名称:svn-spring-archive,代码行数:13,
注:本文中的GML_STDMUTEX_LOCK函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ GMN_DBG函数代码示例 C++ GML_RECMUTEX_LOCK函数代码示例 |