void CTeamBaseZone::OnRender() { if(!bDebug) return; if (!(dbg_net_Draw_Flags.is_any((1<<3)))) return; // RCache.OnFrameEnd(); Fvector l_half; l_half.set(.5f, .5f, .5f); Fmatrix l_ball, l_box; xr_vector<CCF_Shape::shape_def> &l_shapes = ((CCF_Shape*)CFORM())->Shapes(); xr_vector<CCF_Shape::shape_def>::iterator l_pShape; for(l_pShape = l_shapes.begin(); l_shapes.end() != l_pShape; ++l_pShape) { switch(l_pShape->type) { case 0: { Fsphere &l_sphere = l_pShape->data.sphere; l_ball.scale(l_sphere.R, l_sphere.R, l_sphere.R); Fvector l_p; XFORM().transform(l_p, l_sphere.P); l_ball.translate_add(l_p); Level().debug_renderer().draw_ellipse(l_ball, D3DCOLOR_XRGB(0,255,255)); } break; case 1: { l_box.mul(XFORM(), l_pShape->data.box); Level().debug_renderer().draw_obb(l_box, l_half, D3DCOLOR_XRGB(0,255,255)); } break; } } }
inline debug_memory_guard () { #ifdef DEBUG mem_alloc_gather_stats (!!psAI_Flags.test(aiDebugOnFrameAllocs)); #endif mem_alloc_gather_stats_frequency (debug_on_frame_gather_stats_frequency); }
void CCustomMonster::shedule_Update ( u32 DT ) { VERIFY (!g_Alive() || processing_enabled()); // Queue shrink VERIFY (_valid(Position())); u32 dwTimeCL = Level().timeServer()-NET_Latency; VERIFY (!NET.empty()); while ((NET.size()>2) && (NET[1].dwTimeStamp<dwTimeCL)) NET.pop_front(); float dt = float(DT)/1000.f; // *** general stuff if (g_Alive()) { if ( false && g_mt_config.test(mtAiVision) ) #ifndef DEBUG Device.seqParallel.push_back (fastdelegate::FastDelegate0<>(this,&CCustomMonster::Exec_Visibility)); #else // DEBUG { if (!psAI_Flags.test(aiStalker) || !!smart_cast<CActor*>(Level().CurrentEntity())) Device.seqParallel.push_back(fastdelegate::FastDelegate0<>(this,&CCustomMonster::Exec_Visibility)); else Exec_Visibility (); } #endif // DEBUG else Exec_Visibility (); memory().update (dt); }
void CScriptEngine::process_file_if_exists(LPCSTR file_name, bool warn_if_not_exist) { u32 string_length = xr_strlen(file_name); if (!warn_if_not_exist && no_file_exists(file_name, string_length)) return; string_path S, S1; if (m_reload_modules || (*file_name && !namespace_loaded(file_name))) { FS.update_path(S, "$game_scripts$", strconcat(sizeof(S1), S1, file_name, ".script")); if (!warn_if_not_exist && !FS.exist(S)) { #ifdef DEBUG # ifndef XRSE_FACTORY_EXPORTS if (psAI_Flags.test(aiNilObjectAccess)) # endif { print_stack (); Msg ("* trying to access variable %s, which doesn't exist, or to load script %s, which doesn't exist too",file_name,S1); m_stack_is_ready = true; } #endif add_no_file(file_name, string_length); return; } //#ifndef MASTER_GOLD if (strstr(Core.Params, "-dbg")) Msg("* loading script %s", S1); //#endif // MASTER_GOLD m_reload_modules = false; load_file_into_namespace(S, *file_name ? file_name : "_G"); } }
bool operator ()(char* o){ //compare file names int eq = xr_strcmp(m_full_name,o); if(0!=eq) return false; if( !m_flags.test(eDontCheckFileSize) ){ //compare file size const CLocatorAPI::file* f = m_fs_old->exist("$target_folder$",o); u32 file_size = f->size_real; if ( (f->vfs==0xffffffff) && (file_size != m_file_size) ) return false; }; //compare file crc if( !m_crc32 && !m_flags.test(eDontCheckCRC) ){ IReader* r = m_fs_new->r_open ("$target_folder$",m_full_name); m_crc32 = crc32 (r->pointer(),r->length()); m_fs_new->r_close(r); }; if( !m_flags.test(eDontCheckCRC) ){ IReader* r_ = m_fs_old->r_open("$target_folder$",o); u32 crc32_ = crc32 (r_->pointer(),r_->length()); m_fs_old->r_close(r_); if(m_crc32!=crc32_) return false; } if( !m_flags.test(eDontCheckBinary) ){ //compare files binary content IReader* f1 = m_fs_new->r_open ("$target_folder$",m_full_name); IReader* f2 = m_fs_old->r_open ("$target_folder$",o); int res = memcmp(f1->pointer(),f2->pointer(),f1->length()); m_fs_new->r_close(f1); m_fs_old->r_close(f2); if(0!=res) return false; } return true; }
virtual void Execute (LPCSTR args) { if (0==xr_strcmp(args,"on")) { ps_r2_ls_flags.set (R2FLAG_GLOBALMATERIAL,TRUE); } else if (0==xr_strcmp(args,"off")) { ps_r2_ls_flags.set (R2FLAG_GLOBALMATERIAL,FALSE); } else { CCC_Float::Execute (args); if (ps_r2_ls_flags.test(R2FLAG_GLOBALMATERIAL)) { static LPCSTR name[4] = { "oren", "blin", "phong", "metal" }; float mid = *value ; int m0 = iFloor(mid) % 4; int m1 = (m0+1) % 4; float frc = mid - float(iFloor(mid)); Msg ("* material set to [%s]-[%s], with lerp of [%f]",name[m0],name[m1],frc); } } }
void CActor::OnRender () { if (!bDebug) return; if ((dbg_net_Draw_Flags.is_any((1<<5)))) character_physics_support()->movement()->dbg_Draw (); OnRender_Network(); inherited::OnRender(); }
virtual void Execute (LPCSTR args) { CCC_Token::Execute (args); switch (*value) { case 0: { ps_r_ssao = 0; ps_r2_ls_flags_ext.set(R2FLAGEXT_SSAO_HBAO, 0); ps_r2_ls_flags_ext.set(R2FLAGEXT_SSAO_HDAO, 0); break; } case 1: { if (ps_r_ssao==0) { ps_r_ssao = 1; } ps_r2_ls_flags_ext.set(R2FLAGEXT_SSAO_HBAO, 0); ps_r2_ls_flags_ext.set(R2FLAGEXT_SSAO_HDAO, 0); ps_r2_ls_flags_ext.set(R2FLAGEXT_SSAO_HALF_DATA, 0); break; } case 2: { if (ps_r_ssao==0) { ps_r_ssao = 1; } ps_r2_ls_flags_ext.set(R2FLAGEXT_SSAO_HBAO, 0); ps_r2_ls_flags_ext.set(R2FLAGEXT_SSAO_HDAO, 1); ps_r2_ls_flags_ext.set(R2FLAGEXT_SSAO_OPT_DATA, 0); ps_r2_ls_flags_ext.set(R2FLAGEXT_SSAO_HALF_DATA, 0); break; } case 3: { if (ps_r_ssao==0) { ps_r_ssao = 1; } ps_r2_ls_flags_ext.set(R2FLAGEXT_SSAO_HBAO, 1); ps_r2_ls_flags_ext.set(R2FLAGEXT_SSAO_HDAO, 0); ps_r2_ls_flags_ext.set(R2FLAGEXT_SSAO_OPT_DATA, 1); break; } } }
void CAI_Stalker::renderable_Render () { inherited::renderable_Render (); if (!already_dead()) CInventoryOwner::renderable_Render (); #ifdef DEBUG if (g_Alive()) { if (psAI_Flags.test(aiAnimationStats)) animation().add_animation_stats (); } #endif // DEBUG }
void CInventoryItem::UpdateCL() { #ifdef DEBUG if(bDebug){ if (dbg_net_Draw_Flags.test(1<<4) ) { Device.seqRender.Remove(this); Device.seqRender.Add(this); }else { Device.seqRender.Remove(this); } } #endif }
void CActor::OnRender () { #ifdef DEBUG if (inventory().ActiveItem()) inventory().ActiveItem()->OnRender(); #endif if (!bDebug) return; if ((dbg_net_Draw_Flags.is_any(dbg_draw_actor_phys))) character_physics_support()->movement()->dbg_Draw (); OnRender_Network(); inherited::OnRender(); }
void CInventoryItem::UpdateCL() { #ifdef DEBUG if(bDebug){ if (dbg_net_Draw_Flags.test(dbg_draw_invitem) ) { Device.seqRender.Remove(this); Device.seqRender.Add(this); }else { Device.seqRender.Remove(this); } } #endif if (!IsGameTypeSingle()) { Interpolate(); } }
void CStats::OnRender () { #ifdef DEBUG if (g_stats_flags.is(st_sound)){ CSound_stats_ext snd_stat_ext; ::Sound->statistic (0,&snd_stat_ext); CSound_stats_ext::item_vec_it _I = snd_stat_ext.items.begin(); CSound_stats_ext::item_vec_it _E = snd_stat_ext.items.end(); for (;_I!=_E;_I++){ const CSound_stats_ext::SItem& item = *_I; if (item._3D) { m_pRender->SetDrawParams(&*Device.m_pRender); //RCache.set_xform_world(Fidentity); //RCache.set_Shader (Device.m_SelectionShader); //RCache.set_c ("tfactor",1,1,1,1); DU->DrawCross (item.params.position, 0.5f, 0xFF0000FF, true ); if (g_stats_flags.is(st_sound_min_dist)) DU->DrawSphere (Fidentity, item.params.position, item.params.min_distance, 0x400000FF, 0xFF0000FF, true, true); if (g_stats_flags.is(st_sound_max_dist)) DU->DrawSphere (Fidentity, item.params.position, item.params.max_distance, 0x4000FF00, 0xFF008000, true, true); xr_string out_txt = (out_txt.size() && g_stats_flags.is(st_sound_info_name)) ? item.name.c_str():""; if (item.game_object) { if (g_stats_flags.is(st_sound_ai_dist)) DU->DrawSphere (Fidentity, item.params.position, item.params.max_ai_distance, 0x80FF0000,0xFF800000,true,true); if (g_stats_flags.is(st_sound_info_object)){ out_txt += " ("; out_txt += item.game_object->cNameSect().c_str(); out_txt += ")"; } } if (g_stats_flags.is_any(st_sound_info_name|st_sound_info_object) && item.name.size()) DU->OutText (item.params.position, out_txt.c_str(),0xFFFFFFFF,0xFF000000); } } } #endif }
void CClimableObject ::OnRender() { if (!dbg_net_Draw_Flags.test(dbg_draw_climbable)&&!ph_dbg_draw_mask.test(phDbgLadder)) return; Fmatrix form;m_box.xform_get(form); //form.mulA(XFORM()); Level().debug_renderer().draw_obb(XFORM(),m_box.m_halfsize,D3DCOLOR_XRGB(0,0,255)); Fvector p1,p2,d; d.set(m_axis); p1.add(XFORM().c,d); p2.sub(XFORM().c,d); Level().debug_renderer().draw_line(Fidentity,p1,p2,D3DCOLOR_XRGB(255,0,0)); d.set(m_side); p1.add(XFORM().c,d); p2.sub(XFORM().c,d); Level().debug_renderer().draw_line(Fidentity,p1,p2,D3DCOLOR_XRGB(255,0,0)); d.set(m_norm); d.mul(10.f); p1.add(XFORM().c,d); p2.set(XFORM().c); Level().debug_renderer().draw_line(Fidentity,p1,p2,D3DCOLOR_XRGB(0,255,0)); }
void CLevel::OnRender() { inherited::OnRender (); if (!game) return; Game().OnRender(); //отрисовать трассы пуль //Device.Statistic->TEST1.Begin(); BulletManager().Render(); //Device.Statistic->TEST1.End(); //отрисовать интерфейc пользователя HUD().RenderUI(); #ifdef DEBUG draw_wnds_rects(); ph_world->OnRender (); #endif // DEBUG #ifdef DEBUG if (ai().get_level_graph()) ai().level_graph().render(); #ifdef DEBUG_PRECISE_PATH test_precise_path (); #endif CAI_Stalker *stalker = smart_cast<CAI_Stalker*>(Level().CurrentEntity()); if (stalker) stalker->OnRender (); if (bDebug) { for (u32 I=0; I < Level().Objects.o_count(); I++) { CObject* _O = Level().Objects.o_get_by_iterator(I); CAI_Stalker* stalker = smart_cast<CAI_Stalker*>(_O); if (stalker) stalker->OnRender (); CPhysicObject *physic_object = smart_cast<CPhysicObject*>(_O); if (physic_object) physic_object->OnRender(); CSpaceRestrictor *space_restrictor = smart_cast<CSpaceRestrictor*> (_O); if (space_restrictor) space_restrictor->OnRender(); CClimableObject *climable = smart_cast<CClimableObject*> (_O); if(climable) climable->OnRender(); CTeamBaseZone *team_base_zone = smart_cast<CTeamBaseZone*>(_O); if (team_base_zone) team_base_zone->OnRender(); if (GameID() != eGameIDSingle) { CInventoryItem* pIItem = smart_cast<CInventoryItem*>(_O); if (pIItem) pIItem->OnRender(); } if (dbg_net_Draw_Flags.test(dbg_draw_skeleton)) //draw skeleton { CGameObject* pGO = smart_cast<CGameObject*> (_O); if (pGO && pGO != Level().CurrentViewEntity() && !pGO->H_Parent()) { if (pGO->Position().distance_to_sqr(Device.vCameraPosition) < 400.0f) { pGO->dbg_DrawSkeleton(); } } }; } // [7/5/2005] if (Server && Server->game) Server->game->OnRender(); // [7/5/2005] ObjectSpace.dbgRender (); //--------------------------------------------------------------------- HUD().Font().pFontStat->OutSet (170,630); HUD().Font().pFontStat->SetHeight (16.0f); HUD().Font().pFontStat->SetColor (0xffff0000); if(Server)HUD().Font().pFontStat->OutNext ("Client Objects: [%d]",Server->GetEntitiesNum()); HUD().Font().pFontStat->OutNext ("Server Objects: [%d]",Objects.o_count()); HUD().Font().pFontStat->OutNext ("Interpolation Steps: [%d]", Level().GetInterpolationSteps()); HUD().Font().pFontStat->SetHeight (8.0f); //--------------------------------------------------------------------- } #endif #ifdef DEBUG if (bDebug) { DBG().draw_object_info (); DBG().draw_text (); DBG().draw_level_info (); } debug_renderer().render (); DBG().draw_debug_text(); if (psAI_Flags.is(aiVision)) { for (u32 I=0; I < Level().Objects.o_count(); I++) { CObject *object = Objects.o_get_by_iterator(I); CAI_Stalker *stalker = smart_cast<CAI_Stalker*>(object); if (!stalker) continue; stalker->dbg_draw_vision (); } } if (psAI_Flags.test(aiDrawVisibilityRays)) { for (u32 I=0; I < Level().Objects.o_count(); I++) { CObject *object = Objects.o_get_by_iterator(I); CAI_Stalker *stalker = smart_cast<CAI_Stalker*>(object); if (!stalker) continue; stalker->dbg_draw_visibility_rays (); } } #endif }
void CLevel::OnFrame () { #ifdef DEBUG_MEMORY_MANAGER debug_memory_guard __guard__; #endif // DEBUG_MEMORY_MANAGER #ifdef DEBUG DBG_RenderUpdate( ); #endif // #ifdef DEBUG Fvector temp_vector; m_feel_deny.feel_touch_update (temp_vector, 0.f); if (GameID()!=eGameIDSingle) psDeviceFlags.set(rsDisableObjectsAsCrows,true); else psDeviceFlags.set(rsDisableObjectsAsCrows,false); // commit events from bullet manager from prev-frame Device.Statistic->TEST0.Begin (); BulletManager().CommitEvents (); Device.Statistic->TEST0.End (); // Client receive if (net_isDisconnected()) { if (OnClient() && GameID() != eGameIDSingle) { #ifdef DEBUG Msg("* I'm disconnected, so clear all objects..."); #endif // #ifdef DEBUG ClearAllObjects(); } Engine.Event.Defer ("kernel:disconnect"); return; } else { Device.Statistic->netClient1.Begin(); ClientReceive (); Device.Statistic->netClient1.End (); } ProcessGameEvents (); if (m_bNeed_CrPr) make_NetCorrectionPrediction(); if(!g_dedicated_server ) { if (g_mt_config.test(mtMap)) Device.seqParallel.push_back (fastdelegate::FastDelegate0<>(m_map_manager,&CMapManager::Update)); else MapManager().Update (); if( IsGameTypeSingle() && Device.dwPrecacheFrame==0 ) { if (g_mt_config.test(mtMap)) Device.seqParallel.push_back (fastdelegate::FastDelegate0<>(m_game_task_manager,&CGameTaskManager::UpdateTasks)); else GameTaskManager().UpdateTasks(); } } // Inherited update inherited::OnFrame (); // Draw client/server stats if ( !g_dedicated_server && psDeviceFlags.test(rsStatistic)) { CGameFont* F = HUD().Font().pFontDI; if (!psNET_direct_connect) { if ( IsServer() ) { const IServerStatistic* S = Server->GetStatistic(); F->SetHeightI (0.015f); F->OutSetI (0.0f,0.5f); F->SetColor (D3DCOLOR_XRGB(0,255,0)); F->OutNext ("IN: %4d/%4d (%2.1f%%)", S->bytes_in_real, S->bytes_in, 100.f*float(S->bytes_in_real)/float(S->bytes_in)); F->OutNext ("OUT: %4d/%4d (%2.1f%%)", S->bytes_out_real, S->bytes_out, 100.f*float(S->bytes_out_real)/float(S->bytes_out)); F->OutNext ("client_2_sever ping: %d", net_Statistic.getPing()); F->OutNext ("SPS/Sended : %4d/%4d", S->dwBytesPerSec, S->dwBytesSended); F->OutNext ("sv_urate/cl_urate : %4d/%4d", psNET_ServerUpdate, psNET_ClientUpdate); F->SetColor (D3DCOLOR_XRGB(255,255,255)); struct net_stats_functor { xrServer* m_server; CGameFont* F; void operator()(IClient* C) { m_server->UpdateClientStatistic(C); F->OutNext("%10s: P(%d), BPS(%2.1fK), MRR(%2d), MSR(%2d), Retried(%2d), Blocked(%2d)", //Server->game->get_option_s(*C->Name,"name",*C->Name), C->name.c_str(), C->stats.getPing(), float(C->stats.getBPS()),// /1024, C->stats.getMPS_Receive (), C->stats.getMPS_Send (), C->stats.getRetriedCount(), C->stats.dwTimesBlocked ); } }; net_stats_functor tmp_functor; tmp_functor.m_server = Server; tmp_functor.F = F; Server->ForEachClientDo(tmp_functor); } if (IsClient()) { IPureClient::UpdateStatistic(); F->SetHeightI(0.015f); F->OutSetI (0.0f,0.5f); F->SetColor (D3DCOLOR_XRGB(0,255,0)); F->OutNext ("client_2_sever ping: %d", net_Statistic.getPing()); F->OutNext ("sv_urate/cl_urate : %4d/%4d", psNET_ServerUpdate, psNET_ClientUpdate); F->SetColor (D3DCOLOR_XRGB(255,255,255)); F->OutNext("P(%d), BPS(%2.1fK), MRR(%2d), MSR(%2d), Retried(%2d), Blocked(%2d), Sended(%2d), SPS(%2d)", //Server->game->get_option_s(C->Name,"name",C->Name), // C->Name, net_Statistic.getPing(), float(net_Statistic.getBPS()),// /1024, net_Statistic.getMPS_Receive (), net_Statistic.getMPS_Send (), net_Statistic.getRetriedCount(), net_Statistic.dwTimesBlocked, net_Statistic.dwBytesSended, net_Statistic.dwBytesPerSec ); #ifdef DEBUG if (!pStatGraphR) { pStatGraphR = new CStatGraph(); pStatGraphR->SetRect(50, 700, 300, 68, 0xff000000, 0xff000000); //m_stat_graph->SetGrid(0, 0.0f, 10, 1.0f, 0xff808080, 0xffffffff); pStatGraphR->SetMinMax(0.0f, 65536.0f, 1000); pStatGraphR->SetStyle(CStatGraph::stBarLine); pStatGraphR->AppendSubGraph(CStatGraph::stBarLine); } pStatGraphR->AppendItem(float(net_Statistic.getBPS()), 0xff00ff00, 0); F->OutSet(20.f, 700.f); F->OutNext("64 KBS"); #endif } } } else { #ifdef DEBUG if (pStatGraphR) xr_delete(pStatGraphR); #endif } // g_pGamePersistent->Environment().SetGameTime (GetGameDayTimeSec(),GetGameTimeFactor()); g_pGamePersistent->Environment().SetGameTime (GetEnvironmentGameDayTimeSec(),game->GetEnvironmentGameTimeFactor()); //Device.Statistic->cripting.Begin (); if (!g_dedicated_server) ai().script_engine().script_process (ScriptEngine::eScriptProcessorLevel)->update(); //Device.Statistic->Scripting.End (); m_ph_commander->update (); m_ph_commander_scripts->update (); // autosave_manager().update (); //просчитать полет пуль Device.Statistic->TEST0.Begin (); BulletManager().CommitRenderSet (); Device.Statistic->TEST0.End (); // update static sounds if(!g_dedicated_server) { if (g_mt_config.test(mtLevelSounds)) Device.seqParallel.push_back (fastdelegate::FastDelegate0<>(m_level_sound_manager,&CLevelSoundManager::Update)); else m_level_sound_manager->Update (); } // deffer LUA-GC-STEP if (!g_dedicated_server) { if (g_mt_config.test(mtLUA_GC)) Device.seqParallel.push_back (fastdelegate::FastDelegate0<>(this,&CLevel::script_gc)); else script_gc () ; } //----------------------------------------------------- if (pStatGraphR) { static float fRPC_Mult = 10.0f; static float fRPS_Mult = 1.0f; pStatGraphR->AppendItem(float(m_dwRPC)*fRPC_Mult, 0xffff0000, 1); pStatGraphR->AppendItem(float(m_dwRPS)*fRPS_Mult, 0xff00ff00, 0); }; }
void CInventoryItem::OnRender() { if (bDebug && object().Visual()) { if (!(dbg_net_Draw_Flags.is_any((1<<4)))) return; Fvector bc,bd; object().Visual()->vis.box.get_CD (bc,bd); Fmatrix M = object().XFORM(); M.c.add (bc); Level().debug_renderer().draw_obb (M,bd,color_rgba(0,0,255,255)); /* u32 Color; if (processing_enabled()) { if (m_bInInterpolation) Color = color_rgba(0,255,255, 255); else Color = color_rgba(0,255,0, 255); } else { if (m_bInInterpolation) Color = color_rgba(255,0,255, 255); else Color = color_rgba(255, 0, 0, 255); }; // Level().debug_renderer().draw_obb (M,bd,Color); float size = 0.01f; if (!H_Parent()) { Level().debug_renderer().draw_aabb (Position(), size, size, size, color_rgba(0, 255, 0, 255)); Fvector Pos1, Pos2; VIS_POSITION_it It = LastVisPos.begin(); Pos1 = *It; for (; It != LastVisPos.end(); It++) { Pos2 = *It; Level().debug_renderer().draw_line(Fidentity, Pos1, Pos2, color_rgba(255, 255, 0, 255)); Pos1 = Pos2; }; } //--------------------------------------------------------- if (OnClient() && !H_Parent() && m_bInInterpolation) { Fmatrix xformI; xformI.rotation(IRecRot); xformI.c.set(IRecPos); Level().debug_renderer().draw_aabb (IRecPos, size, size, size, color_rgba(255, 0, 255, 255)); xformI.rotation(IEndRot); xformI.c.set(IEndPos); Level().debug_renderer().draw_obb (xformI,bd,color_rgba(0, 255, 0, 255)); /////////////////////////////////////////////////////////////////////////// Fvector point0 = IStartPos, point1; float c = 0; for (float i=0.1f; i<1.1f; i+= 0.1f) { c = i;// * 0.1f; for (u32 k=0; k<3; k++) { point1[k] = c*(c*(c*SCoeff[k][0]+SCoeff[k][1])+SCoeff[k][2])+SCoeff[k][3]; }; Level().debug_renderer().draw_line(Fidentity, point0, point1, color_rgba(0, 0, 255, 255)); point0.set(point1); }; }; */ }; }
void CCC_RegisterCommands() { // options g_OptConCom.Init(); CMD1(CCC_MemStats, "stat_memory" ); // game psActorFlags.set(AF_ALWAYSRUN, true); CMD3(CCC_Mask, "g_always_run", &psActorFlags, AF_ALWAYSRUN); CMD1(CCC_GameDifficulty, "g_game_difficulty" ); CMD3(CCC_Mask, "g_backrun", &psActorFlags, AF_RUN_BACKWARD); // alife #ifdef DEBUG CMD1(CCC_ALifePath, "al_path" ); // build path #endif // DEBUG CMD1(CCC_ALifeSave, "save" ); // save game CMD1(CCC_ALifeLoadFrom, "load" ); // load game from ... CMD1(CCC_LoadLastSave, "load_last_save" ); // load last saved game from ... CMD1(CCC_FlushLog, "flush" ); // flush log CMD1(CCC_ClearLog, "clear_log" ); #ifndef MASTER_GOLD CMD1(CCC_ALifeTimeFactor, "al_time_factor" ); // set time factor CMD1(CCC_ALifeSwitchDistance, "al_switch_distance" ); // set switch distance CMD1(CCC_ALifeProcessTime, "al_process_time" ); // set process time CMD1(CCC_ALifeObjectsPerUpdate, "al_objects_per_update" ); // set process time CMD1(CCC_ALifeSwitchFactor, "al_switch_factor" ); // set switch factor #endif // MASTER_GOLD CMD3(CCC_Mask, "hud_weapon", &psHUD_Flags, HUD_WEAPON); CMD3(CCC_Mask, "hud_info", &psHUD_Flags, HUD_INFO); #ifndef MASTER_GOLD CMD3(CCC_Mask, "hud_draw", &psHUD_Flags, HUD_DRAW); #endif // MASTER_GOLD // hud psHUD_Flags.set(HUD_CROSSHAIR, true); psHUD_Flags.set(HUD_WEAPON, true); psHUD_Flags.set(HUD_DRAW, true); psHUD_Flags.set(HUD_INFO, true); CMD3(CCC_Mask, "hud_crosshair", &psHUD_Flags, HUD_CROSSHAIR); CMD3(CCC_Mask, "hud_crosshair_dist", &psHUD_Flags, HUD_CROSSHAIR_DIST); #ifdef DEBUG CMD4(CCC_Float, "hud_fov", &psHUD_FOV, 0.1f, 1.0f); CMD4(CCC_Float, "fov", &g_fov, 5.0f, 180.0f); #endif // DEBUG // Demo CMD1(CCC_DemoPlay, "demo_play" ); CMD1(CCC_DemoRecord, "demo_record" ); #ifndef MASTER_GOLD // ai CMD3(CCC_Mask, "mt_ai_vision", &g_mt_config, mtAiVision); CMD3(CCC_Mask, "mt_level_path", &g_mt_config, mtLevelPath); CMD3(CCC_Mask, "mt_detail_path", &g_mt_config, mtDetailPath); CMD3(CCC_Mask, "mt_object_handler", &g_mt_config, mtObjectHandler); CMD3(CCC_Mask, "mt_sound_player", &g_mt_config, mtSoundPlayer); CMD3(CCC_Mask, "mt_bullets", &g_mt_config, mtBullets); CMD3(CCC_Mask, "mt_script_gc", &g_mt_config, mtLUA_GC); CMD3(CCC_Mask, "mt_level_sounds", &g_mt_config, mtLevelSounds); CMD3(CCC_Mask, "mt_alife", &g_mt_config, mtALife); #endif // MASTER_GOLD #ifdef DEBUG CMD4(CCC_Integer, "lua_gcstep", &psLUA_GCSTEP, 1, 1000); CMD3(CCC_Mask, "ai_debug", &psAI_Flags, aiDebug); CMD3(CCC_Mask, "ai_dbg_brain", &psAI_Flags, aiBrain); CMD3(CCC_Mask, "ai_dbg_motion", &psAI_Flags, aiMotion); CMD3(CCC_Mask, "ai_dbg_frustum", &psAI_Flags, aiFrustum); CMD3(CCC_Mask, "ai_dbg_funcs", &psAI_Flags, aiFuncs); CMD3(CCC_Mask, "ai_dbg_alife", &psAI_Flags, aiALife); CMD3(CCC_Mask, "ai_dbg_lua", &psAI_Flags, aiLua); CMD3(CCC_Mask, "ai_dbg_goap", &psAI_Flags, aiGOAP); CMD3(CCC_Mask, "ai_dbg_goap_script", &psAI_Flags, aiGOAPScript); CMD3(CCC_Mask, "ai_dbg_goap_object", &psAI_Flags, aiGOAPObject); CMD3(CCC_Mask, "ai_dbg_cover", &psAI_Flags, aiCover); CMD3(CCC_Mask, "ai_dbg_anim", &psAI_Flags, aiAnimation); CMD3(CCC_Mask, "ai_dbg_vision", &psAI_Flags, aiVision); CMD3(CCC_Mask, "ai_dbg_monster", &psAI_Flags, aiMonsterDebug); CMD3(CCC_Mask, "ai_dbg_stalker", &psAI_Flags, aiStalker); CMD3(CCC_Mask, "ai_stats", &psAI_Flags, aiStats); CMD3(CCC_Mask, "ai_dbg_destroy", &psAI_Flags, aiDestroy); CMD3(CCC_Mask, "ai_dbg_serialize", &psAI_Flags, aiSerialize); CMD3(CCC_Mask, "ai_dbg_dialogs", &psAI_Flags, aiDialogs); CMD3(CCC_Mask, "ai_dbg_infoportion", &psAI_Flags, aiInfoPortion); CMD3(CCC_Mask, "ai_draw_game_graph", &psAI_Flags, aiDrawGameGraph ); CMD3(CCC_Mask, "ai_draw_game_graph_stalkers", &psAI_Flags, aiDrawGameGraphStalkers ); CMD3(CCC_Mask, "ai_draw_game_graph_objects", &psAI_Flags, aiDrawGameGraphObjects ); CMD3(CCC_Mask, "ai_nil_object_access", &psAI_Flags, aiNilObjectAccess); CMD3(CCC_Mask, "ai_draw_visibility_rays", &psAI_Flags, aiDrawVisibilityRays); CMD3(CCC_Mask, "ai_animation_stats", &psAI_Flags, aiAnimationStats); #ifdef DEBUG_MEMORY_MANAGER CMD3(CCC_Mask, "debug_on_frame_gather_stats", &psAI_Flags, aiDebugOnFrameAllocs); CMD4(CCC_Float, "debug_on_frame_gather_stats_frequency", &debug_on_frame_gather_stats_frequency, 0.f, 1.f); CMD1(CCC_MemAllocShowStats, "debug_on_frame_show_stats"); CMD1(CCC_MemAllocClearStats,"debug_on_frame_clear_stats"); #endif // DEBUG_MEMORY_MANAGER CMD1(CCC_DumpModelBones, "debug_dump_model_bones"); CMD1(CCC_DrawGameGraphAll, "ai_draw_game_graph_all"); CMD1(CCC_DrawGameGraphCurrent, "ai_draw_game_graph_current_level"); CMD1(CCC_DrawGameGraphLevel, "ai_draw_game_graph_level"); CMD4(CCC_Integer, "ai_dbg_inactive_time", &g_AI_inactive_time, 0, 1000000); CMD1(CCC_DebugNode, "ai_dbg_node"); CMD1(CCC_ScriptDbg, "script_debug_break"); CMD1(CCC_ScriptDbg, "script_debug_stop"); CMD1(CCC_ScriptDbg, "script_debug_restart"); CMD1(CCC_ShowMonsterInfo, "ai_monster_info"); CMD1(CCC_DebugFonts, "debug_fonts"); CMD1(CCC_TuneAttachableItem,"dbg_adjust_attachable_item"); // adjust mode support CMD4(CCC_Integer, "hud_adjust_mode", &g_bHudAdjustMode, 0, 5); CMD4(CCC_Float, "hud_adjust_value", &g_fHudAdjustValue, 0.0f, 1.0f); CMD1(CCC_ShowAnimationStats,"ai_show_animation_stats"); #endif // DEBUG CMD4(CCC_Integer, "hud_adjust_mode", &g_bHudAdjustMode, 0, 5); CMD4(CCC_Float, "hud_adjust_value", &g_fHudAdjustValue, 0.0f, 1.0f); #ifndef MASTER_GOLD CMD3(CCC_Mask, "ai_ignore_actor", &psAI_Flags, aiIgnoreActor); #endif // MASTER_GOLD // Physics CMD1(CCC_PHFps, "ph_frequency" ); CMD1(CCC_PHIterations, "ph_iterations" ); #ifdef DEBUG CMD1(CCC_PHGravity, "ph_gravity" ); CMD4(CCC_FloatBlock, "ph_timefactor", &phTimefactor , 0.0001f ,1000.f ); CMD4(CCC_FloatBlock, "ph_break_common_factor", &phBreakCommonFactor , 0.f ,1000000000.f ); CMD4(CCC_FloatBlock, "ph_rigid_break_weapon_factor", &phRigidBreakWeaponFactor , 0.f ,1000000000.f ); CMD4(CCC_Integer, "ph_tri_clear_disable_count", &ph_tri_clear_disable_count , 0, 255 ); CMD4(CCC_FloatBlock, "ph_tri_query_ex_aabb_rate", &ph_tri_query_ex_aabb_rate , 1.01f ,3.f ); #endif // DEBUG //#ifndef MASTER_GOLD CMD1(CCC_JumpToLevel, "jump_to_level" ); CMD3(CCC_Mask, "g_god", &psActorFlags, AF_GODMODE ); CMD3(CCC_Mask, "g_unlimitedammo", &psActorFlags, AF_UNLIMITEDAMMO); CMD1(CCC_Script, "run_script"); CMD1(CCC_ScriptCommand, "run_string"); CMD1(CCC_TimeFactor, "time_factor"); //#endif // MASTER_GOLD CMD3(CCC_Mask, "g_autopickup", &psActorFlags, AF_AUTOPICKUP); CMD1(CCC_LuaHelp, "lua_help"); #ifdef DEBUG CMD1(CCC_ShowSmartCastStats, "show_smart_cast_stats"); CMD1(CCC_ClearSmartCastStats, "clear_smart_cast_stats"); CMD3(CCC_Mask, "dbg_draw_actor_alive", &dbg_net_Draw_Flags, (1<<0)); CMD3(CCC_Mask, "dbg_draw_actor_dead", &dbg_net_Draw_Flags, (1<<1)); CMD3(CCC_Mask, "dbg_draw_customzone", &dbg_net_Draw_Flags, (1<<2)); CMD3(CCC_Mask, "dbg_draw_teamzone", &dbg_net_Draw_Flags, (1<<3)); CMD3(CCC_Mask, "dbg_draw_invitem", &dbg_net_Draw_Flags, (1<<4)); CMD3(CCC_Mask, "dbg_draw_actor_phys", &dbg_net_Draw_Flags, (1<<5)); CMD3(CCC_Mask, "dbg_draw_customdetector", &dbg_net_Draw_Flags, (1<<6)); CMD3(CCC_Mask, "dbg_destroy", &dbg_net_Draw_Flags, (1<<7)); CMD3(CCC_Mask, "dbg_draw_autopickupbox", &dbg_net_Draw_Flags, (1<<8)); CMD3(CCC_Mask, "dbg_draw_rp", &dbg_net_Draw_Flags, (1<<9)); CMD3(CCC_Mask, "dbg_draw_climbable", &dbg_net_Draw_Flags, (1<<10)); CMD3(CCC_Mask, "dbg_draw_skeleton", &dbg_net_Draw_Flags, (1<<11)); CMD3(CCC_Mask, "dbg_draw_ph_contacts", &ph_dbg_draw_mask, phDbgDrawContacts); CMD3(CCC_Mask, "dbg_draw_ph_enabled_aabbs", &ph_dbg_draw_mask, phDbgDrawEnabledAABBS); CMD3(CCC_Mask, "dbg_draw_ph_intersected_tries",&ph_dbg_draw_mask, phDBgDrawIntersectedTries); CMD3(CCC_Mask, "dbg_draw_ph_saved_tries", &ph_dbg_draw_mask, phDbgDrawSavedTries); CMD3(CCC_Mask, "dbg_draw_ph_tri_trace", &ph_dbg_draw_mask, phDbgDrawTriTrace); CMD3(CCC_Mask, "dbg_draw_ph_positive_tries", &ph_dbg_draw_mask, phDBgDrawPositiveTries); CMD3(CCC_Mask, "dbg_draw_ph_negative_tries", &ph_dbg_draw_mask, phDBgDrawNegativeTries); CMD3(CCC_Mask, "dbg_draw_ph_tri_test_aabb", &ph_dbg_draw_mask, phDbgDrawTriTestAABB); CMD3(CCC_Mask, "dbg_draw_ph_tries_changes_sign",&ph_dbg_draw_mask, phDBgDrawTriesChangesSign); CMD3(CCC_Mask, "dbg_draw_ph_tri_point" ,&ph_dbg_draw_mask, phDbgDrawTriPoint); CMD3(CCC_Mask, "dbg_draw_ph_explosion_position",&ph_dbg_draw_mask, phDbgDrawExplosionPos); CMD3(CCC_Mask, "dbg_draw_ph_statistics" ,&ph_dbg_draw_mask, phDbgDrawObjectStatistics); CMD3(CCC_Mask, "dbg_draw_ph_mass_centres" ,&ph_dbg_draw_mask, phDbgDrawMassCenters); CMD3(CCC_Mask, "dbg_draw_ph_death_boxes" ,&ph_dbg_draw_mask, phDbgDrawDeathActivationBox); CMD3(CCC_Mask, "dbg_draw_ph_hit_app_pos" ,&ph_dbg_draw_mask, phHitApplicationPoints); CMD3(CCC_Mask, "dbg_draw_ph_cashed_tries_stats",&ph_dbg_draw_mask, phDbgDrawCashedTriesStat); CMD3(CCC_Mask, "dbg_draw_ph_car_dynamics" ,&ph_dbg_draw_mask, phDbgDrawCarDynamics); CMD3(CCC_Mask, "dbg_draw_ph_car_plots" ,&ph_dbg_draw_mask, phDbgDrawCarPlots); CMD3(CCC_Mask, "dbg_ph_ladder" ,&ph_dbg_draw_mask, phDbgLadder); CMD3(CCC_Mask, "dbg_draw_ph_explosions" ,&ph_dbg_draw_mask, phDbgDrawExplosions); CMD3(CCC_Mask, "dbg_draw_car_plots_all_trans" ,&ph_dbg_draw_mask, phDbgDrawCarAllTrnsm); CMD3(CCC_Mask, "dbg_draw_ph_zbuffer_disable" ,&ph_dbg_draw_mask, phDbgDrawZDisable); CMD3(CCC_Mask, "dbg_ph_obj_collision_damage" ,&ph_dbg_draw_mask, phDbgDispObjCollisionDammage); CMD_RADIOGROUPMASK2("dbg_ph_ai_always_phmove",&ph_dbg_draw_mask,phDbgAlwaysUseAiPhMove,"dbg_ph_ai_never_phmove",&ph_dbg_draw_mask,phDbgNeverUseAiPhMove); CMD3(CCC_Mask, "dbg_ph_ik" ,&ph_dbg_draw_mask, phDbgIK); CMD3(CCC_Mask, "dbg_ph_ik_off" ,&ph_dbg_draw_mask1,phDbgIKOff); CMD3(CCC_Mask, "dbg_draw_ph_ik_goal" ,&ph_dbg_draw_mask, phDbgDrawIKGoal); CMD3(CCC_Mask, "dbg_ph_ik_limits" ,&ph_dbg_draw_mask, phDbgIKLimits); CMD3(CCC_Mask, "dbg_ph_character_control" ,&ph_dbg_draw_mask, phDbgCharacterControl); CMD3(CCC_Mask, "dbg_draw_ph_ray_motions" ,&ph_dbg_draw_mask, phDbgDrawRayMotions); CMD4(CCC_Float, "dbg_ph_vel_collid_damage_to_display",&dbg_vel_collid_damage_to_display, 0.f, 1000.f); CMD4(CCC_DbgBullets,"dbg_draw_bullet_hit", &g_bDrawBulletHit, 0, 1) ; CMD1(CCC_DbgPhTrackObj,"dbg_track_obj"); CMD3(CCC_Mask, "dbg_ph_actor_restriction" ,&ph_dbg_draw_mask1,ph_m1_DbgActorRestriction); CMD3(CCC_Mask, "dbg_draw_ph_hit_anims" ,&ph_dbg_draw_mask1,phDbgHitAnims); CMD3(CCC_Mask, "dbg_draw_ph_ik_limits" ,&ph_dbg_draw_mask1,phDbgDrawIKLimits); #endif #ifdef DEBUG CMD4(CCC_Integer, "string_table_error_msg", &CStringTable::m_bWriteErrorsToLog, 0, 1); CMD1(CCC_DumpInfos, "dump_infos"); CMD1(CCC_DumpMap, "dump_map"); CMD1(CCC_DumpCreatures, "dump_creatures"); #endif CMD3(CCC_Mask, "cl_dynamiccrosshair", &psHUD_Flags, HUD_CROSSHAIR_DYNAMIC); CMD1(CCC_MainMenu, "main_menu" ); #ifndef MASTER_GOLD CMD1(CCC_StartTimeSingle, "start_time_single"); CMD4(CCC_TimeFactorSingle, "time_factor_single", &g_fTimeFactor, 0.f,flt_max); #endif // MASTER_GOLD g_uCommonFlags.zero(); g_uCommonFlags.set(flAiUseTorchDynamicLights, TRUE); CMD3(CCC_Mask, "ai_use_torch_dynamic_lights", &g_uCommonFlags, flAiUseTorchDynamicLights); #ifndef MASTER_GOLD CMD4(CCC_Vector3, "psp_cam_offset", &CCameraLook2::m_cam_offset, Fvector().set(-1000,-1000,-1000),Fvector().set(1000,1000,1000)); #endif // MASTER_GOLD CMD1(CCC_GSCheckForUpdates, "check_for_updates"); #ifdef DEBUG CMD1(CCC_DumpObjects, "dump_all_objects"); CMD3(CCC_String, "stalker_death_anim", dbg_stalker_death_anim, 32); CMD4(CCC_Integer, "death_anim_velocity", &b_death_anim_velocity, FALSE, TRUE ); CMD4(CCC_Integer, "show_wnd_rect", &g_show_wnd_rect, 0, 1); CMD4(CCC_Integer, "show_wnd_rect_all", &g_show_wnd_rect2, 0, 1); CMD1(CCC_Crash, "crash" ); CMD4(CCC_Integer, "dbg_show_ani_info", &g_ShowAnimationInfo, 0, 1) ; CMD4(CCC_Integer, "dbg_dump_physics_step", &g_bDebugDumpPhysicsStep, 0, 1); #endif *g_last_saved_game = 0; register_mp_console_commands (); }
bool CObjectHandler::can_use_dynamic_lights () { // flAiUseTorchDynamicLights == 1 return (!!g_uCommonFlags.test(1)); }
void CActor::Load (LPCSTR section ) { // Msg ("Loading actor: %s",section); inherited::Load (section); material().Load (section); CInventoryOwner::Load (section); memory().Load (section); m_location_manager->Load (section); if (GameID() == GAME_SINGLE) OnDifficultyChanged (); ////////////////////////////////////////////////////////////////////////// ISpatial* self = smart_cast<ISpatial*> (this); if (self) { self->spatial.type |= STYPE_VISIBLEFORAI; self->spatial.type &= ~STYPE_REACTTOSOUND; } ////////////////////////////////////////////////////////////////////////// // m_PhysicMovementControl: General //m_PhysicMovementControl->SetParent (this); Fbox bb;Fvector vBOX_center,vBOX_size; // m_PhysicMovementControl: BOX vBOX_center= pSettings->r_fvector3 (section,"ph_box2_center" ); vBOX_size = pSettings->r_fvector3 (section,"ph_box2_size" ); bb.set (vBOX_center,vBOX_center); bb.grow(vBOX_size); character_physics_support()->movement()->SetBox (2,bb); // m_PhysicMovementControl: BOX vBOX_center= pSettings->r_fvector3 (section,"ph_box1_center" ); vBOX_size = pSettings->r_fvector3 (section,"ph_box1_size" ); bb.set (vBOX_center,vBOX_center); bb.grow(vBOX_size); character_physics_support()->movement()->SetBox (1,bb); // m_PhysicMovementControl: BOX vBOX_center= pSettings->r_fvector3 (section,"ph_box0_center" ); vBOX_size = pSettings->r_fvector3 (section,"ph_box0_size" ); bb.set (vBOX_center,vBOX_center); bb.grow(vBOX_size); character_physics_support()->movement()->SetBox (0,bb); //// m_PhysicMovementControl: Foots //Fvector vFOOT_center= pSettings->r_fvector3 (section,"ph_foot_center" ); //Fvector vFOOT_size = pSettings->r_fvector3 (section,"ph_foot_size" ); //bb.set (vFOOT_center,vFOOT_center); bb.grow(vFOOT_size); ////m_PhysicMovementControl->SetFoots (vFOOT_center,vFOOT_size); // m_PhysicMovementControl: Crash speed and mass float cs_min = pSettings->r_float (section,"ph_crash_speed_min" ); float cs_max = pSettings->r_float (section,"ph_crash_speed_max" ); float mass = pSettings->r_float (section,"ph_mass" ); character_physics_support()->movement()->SetCrashSpeeds (cs_min,cs_max); character_physics_support()->movement()->SetMass (mass); if(pSettings->line_exist(section,"stalker_restrictor_radius")) character_physics_support()->movement()->SetActorRestrictorRadius(CPHCharacter::rtStalker,pSettings->r_float(section,"stalker_restrictor_radius")); if(pSettings->line_exist(section,"stalker_small_restrictor_radius")) character_physics_support()->movement()->SetActorRestrictorRadius(CPHCharacter::rtStalkerSmall,pSettings->r_float(section,"stalker_small_restrictor_radius")); if(pSettings->line_exist(section,"medium_monster_restrictor_radius")) character_physics_support()->movement()->SetActorRestrictorRadius(CPHCharacter::rtMonsterMedium,pSettings->r_float(section,"medium_monster_restrictor_radius")); character_physics_support()->movement()->Load(section); m_fWalkAccel = pSettings->r_float(section,"walk_accel"); m_fJumpSpeed = pSettings->r_float(section,"jump_speed"); m_fRunFactor = pSettings->r_float(section,"run_coef"); m_fRunBackFactor = pSettings->r_float(section,"run_back_coef"); m_fWalkBackFactor = pSettings->r_float(section,"walk_back_coef"); m_fCrouchFactor = pSettings->r_float(section,"crouch_coef"); m_fClimbFactor = pSettings->r_float(section,"climb_coef"); m_fSprintFactor = pSettings->r_float(section,"sprint_koef"); m_fWalk_StrafeFactor = READ_IF_EXISTS(pSettings, r_float, section, "walk_strafe_coef", 1.0f); m_fRun_StrafeFactor = READ_IF_EXISTS(pSettings, r_float, section, "run_strafe_coef", 1.0f); m_fCamHeightFactor = pSettings->r_float(section,"camera_height_factor"); character_physics_support()->movement() ->SetJumpUpVelocity(m_fJumpSpeed); float AirControlParam = pSettings->r_float (section,"air_control_param" ); character_physics_support()->movement() ->SetAirControlParam(AirControlParam); m_fPickupInfoRadius = pSettings->r_float(section,"pickup_info_radius"); m_fSleepTimeFactor = pSettings->r_float(section,"sleep_time_factor"); character_physics_support()->in_Load (section); //загрузить параметры эффектора // LoadShootingEffector ("shooting_effector"); LoadSleepEffector ("sleep_effector"); //загрузить параметры смещения firepoint m_vMissileOffset = pSettings->r_fvector3(section,"missile_throw_offset"); //Weapons = xr_new<CWeaponList> (this); if(!g_pGamePersistent->bDedicatedServer) { LPCSTR hit_snd_sect = pSettings->r_string(section,"hit_sounds"); for(int hit_type=0; hit_type<(int)ALife::eHitTypeMax; ++hit_type) { LPCSTR hit_name = ALife::g_cafHitType2String((ALife::EHitType)hit_type); LPCSTR hit_snds = pSettings->r_string(hit_snd_sect, hit_name); int cnt = _GetItemCount(hit_snds); string128 tmp; VERIFY (cnt!=0); for(int i=0; i<cnt;++i) { sndHit[hit_type].push_back (ref_sound()); sndHit[hit_type].back().create (_GetItem(hit_snds,i,tmp),st_Effect,sg_SourceType); } char buf[256]; ::Sound->create (sndDie[0], strconcat(buf,*cName(),"\\die0"), st_Effect,SOUND_TYPE_MONSTER_DYING); ::Sound->create (sndDie[1], strconcat(buf,*cName(),"\\die1"), st_Effect,SOUND_TYPE_MONSTER_DYING); ::Sound->create (sndDie[2], strconcat(buf,*cName(),"\\die2"), st_Effect,SOUND_TYPE_MONSTER_DYING); ::Sound->create (sndDie[3], strconcat(buf,*cName(),"\\die3"), st_Effect,SOUND_TYPE_MONSTER_DYING); m_HeavyBreathSnd.create (pSettings->r_string(section,"heavy_breath_snd"), st_Effect,SOUND_TYPE_MONSTER_INJURING); m_BloodSnd.create (pSettings->r_string(section,"heavy_blood_snd"), st_Effect,SOUND_TYPE_MONSTER_INJURING); } } if( psActorFlags.test(AF_PSP) ) cam_Set (eacLookAt); else cam_Set (eacFirstEye); // sheduler shedule.t_min = shedule.t_max = 1; // настройки дисперсии стрельбы m_fDispBase = pSettings->r_float (section,"disp_base" ); m_fDispBase = deg2rad(m_fDispBase); m_fDispAim = pSettings->r_float (section,"disp_aim" ); m_fDispAim = deg2rad(m_fDispAim); m_fDispVelFactor = pSettings->r_float (section,"disp_vel_factor" ); m_fDispAccelFactor = pSettings->r_float (section,"disp_accel_factor" ); m_fDispCrouchFactor = pSettings->r_float (section,"disp_crouch_factor"); m_fDispCrouchNoAccelFactor = pSettings->r_float (section,"disp_crouch_no_acc_factor"); LPCSTR default_outfit = READ_IF_EXISTS(pSettings,r_string,section,"default_outfit",0); SetDefaultVisualOutfit (default_outfit); invincibility_fire_shield_1st = READ_IF_EXISTS(pSettings,r_string,section,"Invincibility_Shield_1st",0); invincibility_fire_shield_3rd = READ_IF_EXISTS(pSettings,r_string,section,"Invincibility_Shield_3rd",0); //----------------------------------------- m_AutoPickUp_AABB = READ_IF_EXISTS(pSettings,r_fvector3,section,"AutoPickUp_AABB",Fvector().set(0.02f, 0.02f, 0.02f)); m_AutoPickUp_AABB_Offset = READ_IF_EXISTS(pSettings,r_fvector3,section,"AutoPickUp_AABB_offs",Fvector().set(0, 0, 0)); CStringTable string_table; m_sCharacterUseAction = "character_use"; m_sDeadCharacterUseAction = "dead_character_use"; m_sDeadCharacterUseOrDragAction = "dead_character_use_or_drag"; m_sCarCharacterUseAction = "car_character_use"; m_sInventoryItemUseAction = "inventory_item_use"; m_sInventoryBoxUseAction = "inventory_box_use"; //--------------------------------------------------------------------- m_sHeadShotParticle = READ_IF_EXISTS(pSettings,r_string,section,"HeadShotParticle",0); }
CActor::CActor() : CEntityAlive() { encyclopedia_registry = xr_new<CEncyclopediaRegistryWrapper >(); game_news_registry = xr_new<CGameNewsRegistryWrapper >(); // Cameras cameras[eacFirstEye] = xr_new<CCameraFirstEye> (this); cameras[eacFirstEye]->Load("actor_firsteye_cam"); if(strstr(Core.Params,"-psp")) psActorFlags.set(AF_PSP, TRUE); else psActorFlags.set(AF_PSP, FALSE); if( psActorFlags.test(AF_PSP) ) { cameras[eacLookAt] = xr_new<CCameraLook2> (this); cameras[eacLookAt]->Load("actor_look_cam_psp"); }else { cameras[eacLookAt] = xr_new<CCameraLook> (this); cameras[eacLookAt]->Load("actor_look_cam"); } cameras[eacFreeLook] = xr_new<CCameraLook> (this); cameras[eacFreeLook]->Load("actor_free_cam"); cam_active = eacFirstEye; fPrevCamPos = 0.0f; vPrevCamDir.set (0.f,0.f,1.f); fCurAVelocity = 0.0f; // эффекторы pCamBobbing = 0; m_pSleepEffector = NULL; m_pSleepEffectorPP = NULL; r_torso.yaw = 0; r_torso.pitch = 0; r_torso.roll = 0; r_torso_tgt_roll = 0; r_model_yaw = 0; r_model_yaw_delta = 0; r_model_yaw_dest = 0; b_DropActivated = 0; f_DropPower = 0.f; m_fRunFactor = 2.f; m_fCrouchFactor = 0.2f; m_fClimbFactor = 1.f; m_fCamHeightFactor = 0.87f; m_fFallTime = s_fFallTime; m_bAnimTorsoPlayed = false; m_pPhysicsShell = NULL; m_holder = NULL; m_holderID = u16(-1); #ifdef DEBUG Device.seqRender.Add (this,REG_PRIORITY_LOW); #endif //разрешить использование пояса в inventory inventory().SetBeltUseful(true); m_pPersonWeLookingAt = NULL; m_pVehicleWeLookingAt = NULL; m_pObjectWeLookingAt = NULL; m_bPickupMode = false; pStatGraph = NULL; m_pActorEffector = NULL; m_bZoomAimingMode = false; m_sDefaultObjAction = NULL; m_fSprintFactor = 4.f; hFriendlyIndicator.create(FVF::F_LIT,RCache.Vertex.Buffer(),RCache.QuadIB); m_pUsableObject = NULL; m_anims = xr_new<SActorMotions>(); m_vehicle_anims = xr_new<SActorVehicleAnims>(); m_entity_condition = NULL; m_iLastHitterID = u16(-1); m_iLastHittingWeaponID = u16(-1); m_game_task_manager = NULL; m_statistic_manager = NULL; //----------------------------------------------------------------------------------- m_memory = xr_new<CActorMemory>(this); m_bOutBorder = false; hit_probability = 1.f; m_feel_touch_characters = 0; //----------------------------------------------------------------------------------- m_dwILastUpdateTime = 0; m_location_manager = xr_new<CLocationManager>(this); }
void CLevel::g_sv_Spawn (CSE_Abstract* E) { #ifdef DEBUG_MEMORY_MANAGER u32 E_mem = 0; if (g_bMEMO) { lua_gc (ai().script_engine().lua(),LUA_GCCOLLECT,0); lua_gc (ai().script_engine().lua(),LUA_GCCOLLECT,0); E_mem = Memory.mem_usage(); Memory.stat_calls = 0; } #endif // DEBUG_MEMORY_MANAGER //----------------------------------------------------------------- // CTimer T(false); #ifdef DEBUG // Msg ("* CLIENT: Spawn: %s, ID=%d", *E->s_name, E->ID); #endif // Optimization for single-player only - minimize traffic between client and server if (GameID() == eGameIDSingle) psNET_Flags.set (NETFLAG_MINIMIZEUPDATES,TRUE); else psNET_Flags.set (NETFLAG_MINIMIZEUPDATES,FALSE); // Client spawn // T.Start (); CObject* O = Objects.Create (*E->s_name); // Msg ("--spawn--CREATE: %f ms",1000.f*T.GetAsync()); // T.Start (); #ifdef DEBUG_MEMORY_MANAGER mem_alloc_gather_stats (false); #endif // DEBUG_MEMORY_MANAGER if (0==O || (!O->net_Spawn (E))) { O->net_Destroy ( ); if(!g_dedicated_server) client_spawn_manager().clear(O->ID()); Objects.Destroy (O); Msg ("! Failed to spawn entity '%s'",*E->s_name); #ifdef DEBUG_MEMORY_MANAGER mem_alloc_gather_stats (!!psAI_Flags.test(aiDebugOnFrameAllocs)); #endif // DEBUG_MEMORY_MANAGER } else { #ifdef DEBUG_MEMORY_MANAGER mem_alloc_gather_stats (!!psAI_Flags.test(aiDebugOnFrameAllocs)); #endif // DEBUG_MEMORY_MANAGER if(!g_dedicated_server) client_spawn_manager().callback(O); //Msg ("--spawn--SPAWN: %f ms",1000.f*T.GetAsync()); if ((E->s_flags.is(M_SPAWN_OBJECT_LOCAL)) && (E->s_flags.is(M_SPAWN_OBJECT_ASPLAYER)) ) { if (IsDemoPlayStarted()) { if (E->s_flags.is(M_SPAWN_OBJECT_PHANTOM)) { SetControlEntity (O); SetEntity (O); //do not switch !!! SetDemoSpectator (O); } } else { if (CurrentEntity() != NULL) { CGameObject* pGO = smart_cast<CGameObject*>(CurrentEntity()); if (pGO) pGO->On_B_NotCurrentEntity(); } SetControlEntity (O); SetEntity (O); //do not switch !!! } } if (0xffff != E->ID_Parent) { /* // Generate ownership-event NET_Packet GEN; GEN.w_begin (M_EVENT); GEN.w_u32 (E->m_dwSpawnTime);//-NET_Latency); GEN.w_u16 (GE_OWNERSHIP_TAKE); GEN.w_u16 (E->ID_Parent); GEN.w_u16 (u16(O->ID())); game_events->insert (GEN); /*/ NET_Packet GEN; GEN.write_start(); GEN.read_start(); GEN.w_u16 (u16(O->ID())); cl_Process_Event(E->ID_Parent, GE_OWNERSHIP_TAKE, GEN); //*/ } } /*if (E->s_flags.is(M_SPAWN_UPDATE)) { NET_Packet temp; temp.B.count = 0; E->UPDATE_Write (temp); if (temp.B.count > 0) { temp.r_seek (0); O->net_Import (temp); } }*/ //:( //--------------------------------------------------------- Game().OnSpawn (O); //--------------------------------------------------------- #ifdef DEBUG_MEMORY_MANAGER if (g_bMEMO) { lua_gc (ai().script_engine().lua(),LUA_GCCOLLECT,0); lua_gc (ai().script_engine().lua(),LUA_GCCOLLECT,0); Msg ("* %20s : %d bytes, %d ops", *E->s_name,Memory.mem_usage()-E_mem, Memory.stat_calls ); } #endif // DEBUG_MEMORY_MANAGER }
IC u32 SetMask(u32 mask, Flags32 flags, u32 flag ) { return mask?(mask|(flags.is(flag)?PropItem::flCBChecked:PropItem::flDisabled)):0; }