MCPcopy Create free account
hub / github.com/OGSR/OGSR-Engine / set_geometry_env

Method set_geometry_env

ogsr_engine/xrSound/SoundRender_Core.cpp:266–309  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

264}
265
266void CSoundRender_Core::set_geometry_env(IReader* I)
267{
268 xr_delete(geom_ENV);
269 s_environment_ids.clear();
270
271 if (0 == I)
272 return;
273 if (0 == s_environment)
274 return;
275
276 // Assosiate names
277 IReader* names = I->open_chunk(0);
278 while (!names->eof())
279 {
280 string256 n;
281 names->r_stringZ(n, sizeof(n));
282 int id = s_environment->GetID(n);
283 R_ASSERT(id >= 0);
284 s_environment_ids.push_back(u16(id));
285 Msg("~ set_geometry_env id=%d name[%s]=environment id[%d]", s_environment_ids.size() - 1, n, id);
286 }
287 names->close();
288
289 // Load geometry
290 IReader* geom_ch = I->open_chunk(1);
291
292 u8* _data = (u8*)xr_malloc(geom_ch->length());
293
294 Memory.mem_copy(_data, geom_ch->pointer(), geom_ch->length());
295
296 IReader* geom = xr_new<IReader>(_data, geom_ch->length(), 0);
297
298 hdrCFORM H;
299 geom->r(&H, sizeof(hdrCFORM));
300 R_ASSERT(H.version == CFORM_CURRENT_VERSION);
301 Fvector* verts = (Fvector*)geom->pointer();
302 CDB::TRI* tris = (CDB::TRI*)(verts + H.vertcount);
303
304 geom_ENV = xr_new<CDB::MODEL>();
305 geom_ENV->build(verts, H.vertcount, tris, H.facecount);
306 geom_ch->close();
307 geom->close();
308 xr_free(_data);
309}
310
311void CSoundRender_Core::create(ref_sound& S, LPCSTR fName, esound_type sound_type, int game_type)
312{

Callers 2

~CObjectSpaceMethod · 0.80

Calls 15

xr_deleteFunction · 0.85
MsgFunction · 0.85
xr_mallocFunction · 0.85
xr_freeFunction · 0.85
eofMethod · 0.80
pointerMethod · 0.80
clearMethod · 0.45
open_chunkMethod · 0.45
r_stringZMethod · 0.45
GetIDMethod · 0.45
push_backMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected