Expropriator 2 118 Опубликовано 29 Декабря 2016 Поделиться Опубликовано 29 Декабря 2016 (изменено) В чем проблема базовой брони или базового ХУДА РУК модели ГГ без брони в ЗП - я наблюдаю баг с гранатами. Анимации клинят, на гранату вешается анимка в частности пистолета, при отсутствии брони в слоте. А потом вообще невозможно гранаты сменить на другое оружие. Как исправить? Изменено 30 Декабря 2016 пользователем Дизель Ссылка на комментарий
aka_sektor 1 476 Опубликовано 29 Декабря 2016 Поделиться Опубликовано 29 Декабря 2016 @Дизель, эт в оригинале так? Запиши видео с багом. Discord-сервер modfaq.ru: https://discord.gg/9j42BXwB Ссылка на комментарий
Expropriator 2 118 Опубликовано 30 Декабря 2016 Поделиться Опубликовано 30 Декабря 2016 @aka_sektor, в оригинале всё нормально. Я пока не понял причину, так как у меня движок с видами правлен, да худ новый. Пока вероятно, что у меня худ рук баговый, так как на оригинальных худах, вроде всё в порядке. Ссылка на комментарий
Kondr48 314 Опубликовано 31 Декабря 2016 Поделиться Опубликовано 31 Декабря 2016 Кто нибудь в курсе про баги с солнцем в ТЧ? Почему-то в старых фиксах, там заставку запускали, чтоб оно появилась. Краем уха что-то слышал про какой-то движковый баг, что оно мол пропадает и все такое. Как лечить и где копать? Ссылка на комментарий
Expropriator 2 118 Опубликовано 31 Декабря 2016 Поделиться Опубликовано 31 Декабря 2016 @Kondr48, может про луну? Солнце вроде в Сталкере не пропадает... Если пропадает, то возможно нет апдаты или апдейта погоды в скриптах на ГГ? Добавлено HellRatz, 31 Декабря 2016 Нет, баг именно с солнцем, а вернее солнечным диском. Не светом или еще чем-либо. Прочитай про этот пункт у мода OGSM, он восстанавливал солнце через ролик. Ссылка на комментарий
Kondr48 314 Опубликовано 31 Декабря 2016 Поделиться Опубликовано 31 Декабря 2016 Дизель, ну луна точно пропадала, насчет солнца уверенности нету) Ссылка на комментарий
DDamian724 18 Опубликовано 1 Января 2017 Поделиться Опубликовано 1 Января 2017 Whats wrong? I'm trying to port CoP weather system into SoC engine. How to port this shit? Spasiba my friends! Ссылка на комментарий
Kondr48 314 Опубликовано 1 Января 2017 Поделиться Опубликовано 1 Января 2017 (изменено) DDamian724, try this (попробуй так): sun_dir.setHP( deg2rad(pSettings->r_float (S,"sun_altitude")), deg2rad(pSettings->r_float (S,"sun_longitude")) ); I have it working (у меня это работает). Изменено 1 Января 2017 пользователем Kondr48 1 Ссылка на комментарий
DDamian724 18 Опубликовано 1 Января 2017 Поделиться Опубликовано 1 Января 2017 Also, maybe you have working CoP weather system in ShoC? Ссылка на комментарий
Kondr48 314 Опубликовано 1 Января 2017 Поделиться Опубликовано 1 Января 2017 (изменено) Yes, I work in the engine SHoC weather system from CoP (Да, у меня в движке ТЧ система погоды из ЗП). [sect_af3_bright_clear_0] 00:00:00 = af3_bright_clear_0_00 01:00:00 = af3_bright_clear_0_01 02:00:00 = af3_bright_clear_0_02 03:00:00 = af3_bright_clear_0_03 04:00:00 = af3_bright_clear_0_04 04:30:00 = af3_day_clear_00 05:00:00 = af3_day_clear_01 05:30:00 = af3_day_clear_02 06:00:00 = af3_day_clear_03 06:10:00 = af3_day_clear_04 07:00:00 = af3_day_clear_05 08:00:00 = af3_day_clear_06 09:00:00 = af3_day_clear_07 10:00:00 = af3_day_clear_08 11:00:00 = af3_day_clear_09 12:00:00 = af3_day_clear_10 13:00:00 = af3_day_clear_11 14:00:00 = af3_day_clear_12 15:00:00 = af3_day_clear_13 16:00:00 = af3_day_clear_14 17:00:00 = af3_day_clear_15 18:00:00 = af3_day_clear_16 19:00:00 = af3_day_clear_17 19:50:00 = af3_day_clear_18 20:00:00 = af3_day_clear_19 20:30:00 = af3_day_clear_20 21:00:00 = af3_day_clear_21 21:30:00 = af3_day_clear_22 22:00:00 = af3_bright_clear_0_05 23:00:00 = af3_bright_clear_0_06 [af3_bright_clear_0_00] ambient = ambient_env_night ambient_color = 0.007813, 0.007813, 0.007813 clouds_color = 0.000000, 0.000000, 0.000000, 1.000000 clouds_texture = sky\sky_oblaka far_plane = 1000.000000 fog_color = 0.007813, 0.007813, 0.007813 fog_density = 1.000000 fog_distance = 1000.000000 hemisphere_color = 0.574219, 0.621094, 0.726563, 1.000000 rain_color = 0.679688, 0.640625, 0.601563 rain_density = 0.000000 sky_texture = sky\af3_clear\00-00-nm sky_color = 0.378906, 0.378906, 0.378906 sky_rotation = 0.000000 sun = none sun_color = 0.000000, 0.000000, 0.000000 sun_longitude = -26.543000 sun_altitude = 14.870000 sun_shafts_intensity = 0.000000 thunderbolt_collection = thunderbolt_duration = 0.000000 thunderbolt_period = 0.000000 water_intensity = 0.100000 wind_direction = 0.000000 wind_velocity = 0.000000 Part config, where the clock and associated sections, I left as in the original, I feel so comfortable. (Часть конфига, где связаны часы и секции сделаны как и в ТЧ, мне лично так удобнее.) Изменено 1 Января 2017 пользователем Kondr48 Ссылка на комментарий
DDamian724 18 Опубликовано 1 Января 2017 Поделиться Опубликовано 1 Января 2017 I know it but i mean "engine part" with CoP system. Can you upload your weather system? I dont know how to FULL port of CoP system into my source code. Thank you Ссылка на комментарий
Kondr48 314 Опубликовано 1 Января 2017 Поделиться Опубликовано 1 Января 2017 (изменено) DDamian724, Yes, here my source code (да, вот файл из исходников): #include "stdafx.h" #pragma hdrstop #include "Environment.h" #include "xr_efflensflare.h" #include "thunderbolt.h" #include "rain.h" #include "resourcemanager.h" //----------------------------------------------------------------------------- // Environment modifier //----------------------------------------------------------------------------- bool CEnvModifier::load (IReader* fs) { // Проверка на корректность файла. Real Wolf. if (fs->tell() + 76 > fs->length()) return false; fs->r_fvector3 (position); // 4*3=12 radius = fs->r_float (); // 4 power = fs->r_float (); // 4 far_plane = fs->r_float (); // 4 fs->r_fvector3 (fog_color); // 4*3=12 fog_density = fs->r_float (); // 4 fs->r_fvector3 (ambient); // 4*3=12 fs->r_fvector3 (sky_color); // 4*3=12 fs->r_fvector3 (hemi_color); // 4*3=12 return true; } float CEnvModifier::sum (CEnvModifier& M, Fvector3& view) { float _dist_sq = view.distance_to_sqr(M.position); if (_dist_sq>=(M.radius*M.radius)) return 0; float _att = 1-_sqrt(_dist_sq)/M.radius; //[0..1]; float _power = M.power*_att; far_plane += M.far_plane*_power; fog_color.mad (M.fog_color,_power); fog_density += M.fog_density*_power; ambient.mad (M.ambient,_power); // lmap_color.mad (M.lmap_color,_power); sky_color.mad (M.sky_color,_power); hemi_color.mad (M.hemi_color,_power); return _power; } //----------------------------------------------------------------------------- // Environment ambient //----------------------------------------------------------------------------- void CEnvAmbient::load(const shared_str& sect) { section = sect; string_path tmp; // sounds if (pSettings->line_exist(sect,"sounds")){ Fvector2 t = pSettings->r_fvector2 (sect,"sound_period"); sound_period.set(iFloor(t.x*1000.f),iFloor(t.y*1000.f)); sound_dist = pSettings->r_fvector2 (sect,"sound_dist"); if (sound_dist[0]>sound_dist[1]) std::swap(sound_dist[0],sound_dist[1]); LPCSTR snds = pSettings->r_string (sect,"sounds"); u32 cnt = _GetItemCount(snds); if (cnt){ sounds.resize(cnt); for (u32 k=0; k<cnt; ++k) sounds[k].create(_GetItem(snds,k,tmp),st_Effect,sg_SourceType); } } // effects if (pSettings->line_exist(sect,"effects")){ Fvector2 t = pSettings->r_fvector2 (sect,"effect_period"); effect_period.set(iFloor(t.x*1000.f),iFloor(t.y*1000.f)); LPCSTR effs = pSettings->r_string (sect,"effects"); u32 cnt = _GetItemCount(effs); if (cnt){ effects.resize(cnt); for (u32 k=0; k<cnt; ++k){ _GetItem(effs,k,tmp); effects[k].life_time = iFloor(pSettings->r_float(tmp,"life_time")*1000.f); effects[k].particles = pSettings->r_string (tmp,"particles"); VERIFY(effects[k].particles.size()); effects[k].offset = pSettings->r_fvector3 (tmp,"offset"); effects[k].wind_gust_factor = pSettings->r_float (tmp,"wind_gust_factor"); if (pSettings->line_exist(tmp,"sound")) effects[k].sound.create (pSettings->r_string(tmp,"sound"),st_Effect,sg_SourceType); } } } #ifndef DEBUG VERIFY(!sounds.empty() || !effects.empty()); #endif } //----------------------------------------------------------------------------- // Environment descriptor //----------------------------------------------------------------------------- CEnvDescriptor::CEnvDescriptor() { exec_time = 0.0f; exec_time_loaded = 0.0f; clouds_color.set (1,1,1,1); sky_color.set (1,1,1); sky_rotation = 0.0f; far_plane = 400.0f;; fog_color.set (1,1,1); fog_density = 0.0f; fog_distance = 400.0f; rain_density = 0.0f; rain_color.set (0,0,0); bolt_period = 0.0f; bolt_duration = 0.0f; wind_velocity = 0.0f; wind_direction = 0.0f; ambient.set (0,0,0); hemi_color.set (1,1,1,1); sun_color.set (1,1,1); sun_dir.set (0,-1,0); m_fSunShaftsIntensity = 0; m_fWaterIntensity = 1; //m_fColorGrading.set (0,0,0); lens_flare_id = -1; tb_id = -1; env_ambient = NULL; } #define C_CHECK(C) if (C.x<0 || C.x>2 || C.y<0 || C.y>2 || C.z<0 || C.z>2) { Msg("! Invalid '%s' in env-section '%s'",#C,S);} void CEnvDescriptor::load (LPCSTR exec_tm, LPCSTR S, CEnvironment* parent) { Ivector3 tm ={0,0,0}; sscanf (exec_tm,"%d:%d:%d",&tm.x,&tm.y,&tm.z); R_ASSERT3 ((tm.x>=0)&&(tm.x<24)&&(tm.y>=0)&&(tm.y<60)&&(tm.z>=0)&&(tm.z<60),"Incorrect weather time",S); exec_time = tm.x*3600.f+tm.y*60.f+tm.z; exec_time_loaded = exec_time; string_path st,st_env; strcpy_s (st,pSettings->r_string (S,"sky_texture")); strconcat (sizeof(st_env),st_env,st,"#small" ); sky_texture_name = st; sky_texture_env_name = st_env; clouds_texture_name = pSettings->r_string (S,"clouds_texture"); LPCSTR cldclr = pSettings->r_string (S,"clouds_color"); float multiplier = 0, save=0; sscanf (cldclr,"%f,%f,%f,%f,%f",&clouds_color.x,&clouds_color.y,&clouds_color.z,&clouds_color.w,&multiplier); save=clouds_color.w; clouds_color.mul (.5f*multiplier); clouds_color.w = save; sky_color = pSettings->r_fvector3 (S,"sky_color"); sky_color.mul(.5f); if (pSettings->line_exist(S,"sky_rotation")) sky_rotation = deg2rad(pSettings->r_float(S,"sky_rotation")); else sky_rotation = 0; far_plane = pSettings->r_float (S,"far_plane"); fog_color = pSettings->r_fvector3 (S,"fog_color"); fog_density = pSettings->r_float (S,"fog_density"); fog_distance = pSettings->r_float (S,"fog_distance"); rain_density = pSettings->r_float (S,"rain_density"); clamp(rain_density,0.f,1.f); rain_color = pSettings->r_fvector3 (S,"rain_color"); wind_velocity = pSettings->r_float (S,"wind_velocity"); wind_direction = deg2rad(pSettings->r_float(S,"wind_direction")); ambient = pSettings->r_fvector3 (S,"ambient"); hemi_color = pSettings->r_fvector4 (S,"hemisphere_color"); sun_color = pSettings->r_fvector3 (S,"sun_color"); sun_dir.setHP( deg2rad(pSettings->r_float (S,"sun_altitude")), deg2rad(pSettings->r_float (S,"sun_longitude")) ); R_ASSERT(_valid(sun_dir)); VERIFY2(sun_dir.y < 0, "Invalid sun direction settings while loading"); lens_flare_id = parent->eff_LensFlare->AppendDef(pSettings,pSettings->r_string(S,"sun")); tb_id = parent->eff_Thunderbolt->AppendDef(pSettings,pSettings->r_string(S,"thunderbolt_collection")); bolt_period = (tb_id>=0)?pSettings->r_float (S,"thunderbolt_period"):0.f; bolt_duration = (tb_id>=0)?pSettings->r_float (S,"thunderbolt_duration"):0.f; env_ambient = pSettings->line_exist(S,"env_ambient")?parent->AppendEnvAmb (pSettings->r_string(S,"env_ambient")):0; if (pSettings->line_exist(S,"sun_shafts_intensity")) m_fSunShaftsIntensity = pSettings->r_float (S,"sun_shafts_intensity"); if (pSettings->line_exist(S,"water_intensity")) m_fWaterIntensity = pSettings->r_float (S,"water_intensity"); /*if (pSettings->line_exist(S,"color_grading")) m_fColorGrading = pSettings->r_fvector3 (S,"color_grading");*/ C_CHECK (clouds_color); C_CHECK (sky_color ); C_CHECK (fog_color ); C_CHECK (rain_color ); C_CHECK (ambient ); // C_CHECK (lmap_color ); C_CHECK (hemi_color ); C_CHECK (sun_color ); on_device_create (); } void CEnvDescriptor::on_device_create () { if (sky_texture_name.size()) sky_texture.create (sky_texture_name.c_str()); if (sky_texture_env_name.size())sky_texture_env.create (sky_texture_env_name.c_str()); if (clouds_texture_name.size()) clouds_texture.create (clouds_texture_name.c_str()); } void CEnvDescriptor::on_device_destroy () { sky_texture.destroy (); sky_texture_env.destroy (); clouds_texture.destroy (); } //----------------------------------------------------------------------------- // Environment Mixer //----------------------------------------------------------------------------- void CEnvDescriptorMixer::destroy() { sky_r_textures.clear (); sky_r_textures_env.clear (); clouds_r_textures.clear (); sky_texture.destroy (); sky_texture_env.destroy (); clouds_texture.destroy (); } void CEnvDescriptorMixer::clear () { std::pair<u32,ref_texture> zero = mk_pair(u32(0),ref_texture(0)); sky_r_textures.clear (); sky_r_textures.push_back (zero); sky_r_textures.push_back (zero); sky_r_textures.push_back (zero); sky_r_textures_env.clear (); sky_r_textures_env.push_back(zero); sky_r_textures_env.push_back(zero); sky_r_textures_env.push_back(zero); clouds_r_textures.clear (); clouds_r_textures.push_back (zero); clouds_r_textures.push_back (zero); clouds_r_textures.push_back (zero); } int get_ref_count(IUnknown* ii); void CEnvDescriptorMixer::lerp (CEnvironment* , CEnvDescriptor& A, CEnvDescriptor& B, float f, CEnvModifier& M, float m_power) { float _power = 1.f/(m_power+1); // the environment itself float fi = 1-f; sky_r_textures.clear (); sky_r_textures.push_back (mk_pair(0,A.sky_texture)); sky_r_textures.push_back (mk_pair(1,B.sky_texture)); sky_r_textures_env.clear (); sky_r_textures_env.push_back(mk_pair(0,A.sky_texture_env)); sky_r_textures_env.push_back(mk_pair(1,B.sky_texture_env)); clouds_r_textures.clear (); clouds_r_textures.push_back (mk_pair(0,A.clouds_texture)); clouds_r_textures.push_back (mk_pair(1,B.clouds_texture)); weight = f; clouds_color.lerp (A.clouds_color,B.clouds_color,f); sky_rotation = (fi*A.sky_rotation + f*B.sky_rotation); far_plane = (fi*A.far_plane + f*B.far_plane + M.far_plane)*psVisDistance*_power; fog_color.lerp (A.fog_color,B.fog_color,f).add(M.fog_color).mul(_power); fog_density = (fi*A.fog_density + f*B.fog_density + M.fog_density)*_power; fog_distance = (fi*A.fog_distance + f*B.fog_distance); fog_near = (1.0f - fog_density)*0.85f * fog_distance; fog_far = 0.99f * fog_distance; rain_density = fi*A.rain_density + f*B.rain_density; rain_color.lerp (A.rain_color,B.rain_color,f); bolt_period = fi*A.bolt_period + f*B.bolt_period; bolt_duration = fi*A.bolt_duration + f*B.bolt_duration; // wind wind_velocity = fi*A.wind_velocity + f*B.wind_velocity; wind_direction = fi*A.wind_direction + f*B.wind_direction; m_fSunShaftsIntensity = fi*A.m_fSunShaftsIntensity + f*B.m_fSunShaftsIntensity; m_fWaterIntensity = fi*A.m_fWaterIntensity + f*B.m_fWaterIntensity; //m_fColorGrading.lerp (A.m_fColorGrading,B.m_fColorGrading,f); // colors sky_color.lerp (A.sky_color,B.sky_color,f).add(M.sky_color).mul(_power); ambient.lerp (A.ambient,B.ambient,f).add(M.ambient).mul(_power); hemi_color.lerp (A.hemi_color,B.hemi_color,f); hemi_color.x += M.hemi_color.x; hemi_color.y += M.hemi_color.y; hemi_color.z += M.hemi_color.z; hemi_color.x *= _power; hemi_color.y *= _power; hemi_color.z *= _power; sun_color.lerp (A.sun_color,B.sun_color,f); sun_dir.lerp (A.sun_dir,B.sun_dir,f).normalize(); VERIFY2 (sun_dir.y<0,"Invalid sun direction settings while lerp"); } //----------------------------------------------------------------------------- // Environment IO //----------------------------------------------------------------------------- CEnvAmbient* CEnvironment::AppendEnvAmb (const shared_str& sect) { for (EnvAmbVecIt it=Ambients.begin(); it!=Ambients.end(); it++) if ((*it)->name().equal(sect)) return *it; Ambients.push_back (xr_new<CEnvAmbient>()); Ambients.back()->load (sect); return Ambients.back(); } void CEnvironment::mods_load () { Modifiers.clear_and_free (); string_path path; if (FS.exist(path,"$level$","level.env_mod")) { IReader* fs = FS.r_open (path); u32 id = 0; while (fs->find_chunk(id)) { CEnvModifier E; // Надо обязательно проверять, что файл корректный, даже если чанк был найден. Real Wolf. if (!E.load(fs)) break; Modifiers.push_back (E); id ++; } FS.r_close (fs); } } void CEnvironment::mods_unload () { Modifiers.clear_and_free (); } void CEnvironment::load () { tonemap = Device.Resources->_CreateTexture("$user$tonemap"); //. hack if (!eff_Rain) eff_Rain = xr_new<CEffect_Rain>(); if (!eff_LensFlare) eff_LensFlare = xr_new<CLensFlare>(); if (!eff_Thunderbolt) eff_Thunderbolt = xr_new<CEffect_Thunderbolt>(); // load weathers if (WeatherCycles.empty()){ LPCSTR first_weather=0; int weather_count = pSettings->line_count("weathers"); for (int w_idx=0; w_idx<weather_count; w_idx++){ LPCSTR weather, sect_w; if (pSettings->r_line("weathers",w_idx,&weather,§_w)){ if (0==first_weather) first_weather=weather; int env_count = pSettings->line_count(sect_w); LPCSTR exec_tm, sect_e; for (int env_idx=0; env_idx<env_count; env_idx++){ if (pSettings->r_line(sect_w,env_idx,&exec_tm,§_e)){ CEnvDescriptor* D=xr_new<CEnvDescriptor>(); D->load (exec_tm,sect_e,this); WeatherCycles[weather].push_back (D); #ifdef DEBUG D->sect_name = sect_e; #endif } } } } // sorting weather envs EnvsMapIt _I=WeatherCycles.begin(); EnvsMapIt _E=WeatherCycles.end(); for (; _I!=_E; _I++){ R_ASSERT3 (_I->second.size()>1,"Environment in weather must >=2",*_I->first); std::sort(_I->second.begin(),_I->second.end(),sort_env_etl_pred); } R_ASSERT2 (!WeatherCycles.empty(),"Empty weathers."); SetWeather (first_weather); } // load weather effects if (WeatherFXs.empty()){ int line_count = pSettings->line_count("weather_effects"); for (int w_idx=0; w_idx<line_count; w_idx++){ LPCSTR weather, sect_w; if (pSettings->r_line("weather_effects",w_idx,&weather,§_w)){ EnvVec& env = WeatherFXs[weather]; env.push_back (xr_new<CEnvDescriptor>()); env.back()->exec_time_loaded = 0; env.push_back (xr_new<CEnvDescriptor>()); env.back()->exec_time_loaded = 0; int env_count = pSettings->line_count(sect_w); LPCSTR exec_tm, sect_e; for (int env_idx=0; env_idx<env_count; env_idx++){ if (pSettings->r_line(sect_w,env_idx,&exec_tm,§_e)){ CEnvDescriptor* D=xr_new<CEnvDescriptor>(); D->load (exec_tm,sect_e,this); env.push_back (D); #ifdef DEBUG D->sect_name = sect_e; #endif } } env.push_back (xr_new<CEnvDescriptor>()); env.back()->exec_time_loaded = DAY_LENGTH; } } // sorting weather envs EnvsMapIt _I=WeatherFXs.begin(); EnvsMapIt _E=WeatherFXs.end(); for (; _I!=_E; _I++){ R_ASSERT3 (_I->second.size()>1,"Environment in weather must >=2",*_I->first); std::sort(_I->second.begin(),_I->second.end(),sort_env_etl_pred); } } } void CEnvironment::unload () { EnvsMapIt _I,_E; // clear weathers _I = WeatherCycles.begin(); _E = WeatherCycles.end(); for (; _I!=_E; _I++){ for (EnvIt it=_I->second.begin(); it!=_I->second.end(); it++) xr_delete (*it); } WeatherCycles.clear (); // clear weather effect _I = WeatherFXs.begin(); _E = WeatherFXs.end(); for (; _I!=_E; _I++){ for (EnvIt it=_I->second.begin(); it!=_I->second.end(); it++) xr_delete (*it); } WeatherFXs.clear (); // clear ambient for (EnvAmbVecIt it=Ambients.begin(); it!=Ambients.end(); it++) xr_delete (*it); Ambients.clear (); // misc xr_delete (eff_Rain); xr_delete (eff_LensFlare); xr_delete (eff_Thunderbolt); CurrentWeather = 0; CurrentWeatherName = 0; CurrentEnv.clear (); Invalidate (); tonemap = 0; } Maybe Google translation is not entirely correct, I do not have a full port of Call of Pripyat system, but only partially. I stayed on a small part of the Shadow of Chernobyl weather system. (Может быть гугл переводит не совсем корректно, у меня не полный порт системы ЗП, а только частичный. У меня осталась от ТЧ небольшая часть погодной системы.) Изменено 1 Января 2017 пользователем Kondr48 1 Ссылка на комментарий
DDamian724 18 Опубликовано 1 Января 2017 Поделиться Опубликовано 1 Января 2017 Spasiba You will credited in my mod (if i release him). 2 Ссылка на комментарий
Kondr48 314 Опубликовано 6 Января 2017 Поделиться Опубликовано 6 Января 2017 Как можно ускорить сборку исходников? Надоело собирать xr_game по полчаса, причем не пересборка, а именно build так долго идет... Ссылка на комментарий
krop 11 Опубликовано 6 Января 2017 Поделиться Опубликовано 6 Января 2017 Можешь вырубить оптимизацию. 1 Ссылка на комментарий
Kondr48 314 Опубликовано 7 Января 2017 Поделиться Опубликовано 7 Января 2017 (изменено) Что вообще делает функция UpdateXForm() у худовых предметов? void CArtefact::UpdateXForm() { if (Device.dwFrame!=dwXF_Frame) { dwXF_Frame = Device.dwFrame; if (0==H_Parent()) return; // Get access to entity and its visual CEntityAlive* E = smart_cast<CEntityAlive*>(H_Parent()); if(!E) return ; const CInventoryOwner *parent = smart_cast<const CInventoryOwner*>(E); if (parent && parent->use_simplified_visual()) return; VERIFY (E); CKinematics* V = smart_cast<CKinematics*> (E->Visual()); VERIFY (V); // Get matrices int boneL,boneR,boneR2; E->g_WeaponBones (boneL,boneR,boneR2); boneL = boneR2; V->CalculateBones (); Fmatrix& mL = V->LL_GetTransform(u16(boneL)); Fmatrix& mR = V->LL_GetTransform(u16(boneR)); // Calculate Fmatrix mRes; Fvector R,D,N; D.sub (mL.c,mR.c); D.normalize_safe(); R.crossproduct (mR.j,D); R.normalize_safe(); N.crossproduct (D,R); N.normalize_safe(); mRes.set (R,N,D,mR.c); mRes.mulA_43 (E->XFORM()); // UpdatePosition (mRes); XFORM().mul (mRes,offset()); } } Изменено 7 Января 2017 пользователем Kondr48 Ссылка на комментарий
Expropriator 2 118 Опубликовано 7 Января 2017 Поделиться Опубликовано 7 Января 2017 @Kondr48, движковое обновление. Возвращает визуал при смене худа, при повторной загрузке сохранения, при выходе в меню, у нехудовых при отдаление и последующем возврате к объекту. Примерно так, может не прав. xr_game по полчаса у меня час двадцать 1 Ссылка на комментарий
User_X.A.R26 261 Опубликовано 7 Января 2017 Поделиться Опубликовано 7 Января 2017 (изменено) Надоело собирать xr_game по полчаса у меня час двадцать От часа до трёх или даже четырёх часов Изменено 7 Января 2017 пользователем User_X.A.R26 1 Ссылка на комментарий
Kondr48 314 Опубликовано 7 Января 2017 Поделиться Опубликовано 7 Января 2017 (изменено) Дизель, User_X.A.R26 это пересборка прям? Или просто build?--- Правильно ли я понял, что "конструкции" типа: void CCustomDetector::OnH_A_Chield() { inherited::OnH_A_Chield (); } По сути служат для того чтобы продублировать в дочернем классе аналогичную функцию родительского и добавить что-то свое? В таком случае есть ли толк от такой "пустой" функции? Изменено 7 Января 2017 пользователем Kondr48 Ссылка на комментарий
User_X.A.R26 261 Опубликовано 7 Января 2017 Поделиться Опубликовано 7 Января 2017 @Kondr48, полная сборка xrGame. Инкрементальная сборка на дебаге может и минут 20 быть, а на релизе - около часа из-за всяких там оптимизаций Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти