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"); } }
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); }
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); }
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; }
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 }
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 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 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 }
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 }