void xrLC_GlobalData :: write( IWriter &w, const base_Face *f ) const { if(!f) { w.w_u8( smit_null ); return; } const Face *face = dynamic_cast<const Face*>( f ); if(face) { VERIFY( write_faces ); w.w_u8( smit_plain ); write_faces->write( w, face ); return; } const _face *model_face = dynamic_cast<const _face*>( f ); VERIFY(model_face); w.w_u8( smit_model ); std::pair<u32,u32> id = get_id( _mu_models, model_face ); w.w_u32( id.first ); _mu_models[ id.first ]->write( w, id.second, model_face ); }
void ESceneLightTools::Save(IWriter& F) { inherited::Save (F); F.w_chunk (CHUNK_VERSION,(u16*)&LIGHT_TOOLS_VERSION,sizeof(LIGHT_TOOLS_VERSION)); F.open_chunk (CHUNK_FLAGS); F.w_u32 (m_Flags.get()); F.close_chunk (); F.open_chunk (CHUNK_SUN_SHADOW); F.w_u8 (0); F.w_fvector2 (m_SunShadowDir); F.close_chunk (); F.open_chunk (CHUNK_LCONTROLS_LAST); F.w_u32 (lcontrol_last_idx); F.close_chunk (); F.open_chunk (CHUNK_LCONTROLS); RTokenVecIt _I = lcontrols.begin(); RTokenVecIt _E = lcontrols.end(); for (;_I!=_E; _I++){ F.w_stringZ (_I->name); F.w_u32 (_I->id); } F.close_chunk (); }
void CSMotion::Save(IWriter& F) { CCustomMotion::Save(F); F.w_u16 (EOBJ_SMOTION_VERSION); F.w_s8 (m_Flags.get()); F.w_u16 (m_BoneOrPart); F.w_float (fSpeed); F.w_float (fAccrue); F.w_float (fFalloff); F.w_float (fPower); F.w_u16 ((u16)bone_mots.size()); for(BoneMotionIt bm_it=bone_mots.begin(); bm_it!=bone_mots.end(); bm_it++) { xr_strlwr (bm_it->name); F.w_stringZ (bm_it->name); F.w_u8 (bm_it->m_Flags.get()); for (int ch=0; ch<ctMaxChannel; ch++) bm_it->envs[ch]->Save(F); } u32 sz = marks.size(); F.w_u32 (sz); for(u32 i=0; i<sz; ++i) marks[i].Save(&F); }
void xrLC_GlobalData ::write_base ( IWriter &w ) const { ///////////////////////////////////////////////////////// w.w_u8(_b_nosun); w.w_u8(_gl_linear); w_pod( w, _cl_globs._g_params ); _cl_globs._L_static.write( w ); w_vector( w, _cl_globs._textures ); w_pod_vector( w, _cl_globs._materials ); w_pod_vector( w, _cl_globs._shaders.Library () ); // CMemoryWriter _err_invalid; write_lightmaps= xr_new< twrite_lightmaps >( &_g_lightmaps ); write_lightmaps->write( w ); write_mu_models( w ); //////////////////////////////////////////////////////////////////////////// }
void st_LevelOptions::Save( IWriter& F ) { F.open_chunk( CHUNK_LO_VERSION ); F.w_u32 ( CURRENT_LEVELOP_VERSION ); F.close_chunk(); F.open_chunk( CHUNK_LO_NAMES ); F.w_stringZ ( m_FNLevelPath.size()?m_FNLevelPath.c_str():"" ); F.close_chunk(); F.open_chunk( CHUNK_LO_PREFIX ); F.w_stringZ ( m_LevelPrefix.size()?m_LevelPrefix.c_str():""); F.close_chunk(); F.open_chunk( CHUNK_LO_BOP ); F.w_stringZ ( m_BOPText.size()?m_BOPText.c_str():"" ); F.close_chunk(); F.open_chunk( CHUNK_LO_MAP_VER ); F.w_stringZ ( m_map_version.size()?m_map_version.c_str():"1.0" ); F.close_chunk(); F.open_chunk( CHUNK_LO_BP_VERSION ); F.w_u32 ( CURRENT_LEVELOP_BP_VERSION ); F.close_chunk(); F.open_chunk( CHUNK_BUILD_PARAMS ); F.w ( &m_BuildParams, sizeof(m_BuildParams) ); F.close_chunk(); F.open_chunk( CHUNK_LIGHT_QUALITY ); F.w_u8 ( m_LightHemiQuality ); F.w_u8 ( m_LightSunQuality ); F.close_chunk(); F.open_chunk( CHUNK_MAP_USAGE ); F.w_u16 ( m_mapUsage.m_GameType.get() ); F.close_chunk(); }
void SAINode::SaveStream(IWriter& F, ESceneAIMapTool* tools) { u32 id; u16 pl; NodePosition np; id = n1?(u32)n1->idx:InvalidNode; F.w(&id,3); id = n2?(u32)n2->idx:InvalidNode; F.w(&id,3); id = n3?(u32)n3->idx:InvalidNode; F.w(&id,3); id = n4?(u32)n4->idx:InvalidNode; F.w(&id,3); pl = pvCompress (Plane.n); F.w_u16(pl); tools->PackPosition(np,Pos,tools->m_AIBBox,tools->m_Params); F.w(&np,sizeof(np)); F.w_u8 (flags.get()); }
void write(IWriter &w, const b_texture &b) { w.w_string( b.name ); w.w_u32( b.dwWidth ); w.w_u32( b.dwHeight ); w.w_s32( b.bHasAlpha ); bool b_surface = !!b.pSurface; w.w_u8( u8( b_surface ) ); if(b_surface) { u32 size = sizeof( u32 ) * b.dwWidth * b.dwHeight; w.w( b.pSurface, size ); } }
void EDetailManager::SaveColorIndices(IWriter& F) { // objects F.open_chunk (DETMGR_CHUNK_OBJECTS); for (DetailIt it=objects.begin(); it!=objects.end(); it++){ F.open_chunk (it-objects.begin()); ((EDetail*)(*it))->Save (F); F.close_chunk (); } F.close_chunk (); // color index map F.open_chunk (DETMGR_CHUNK_COLOR_INDEX); F.w_u8 ((u8)m_ColorIndices.size()); ColorIndexPairIt S = m_ColorIndices.begin(); ColorIndexPairIt E = m_ColorIndices.end(); ColorIndexPairIt i_it= S; for(; i_it!=E; i_it++){ F.w_u32 (i_it->first); F.w_u8 ((u8)i_it->second.size()); for (DOIt d_it=i_it->second.begin(); d_it!=i_it->second.end(); d_it++) F.w_stringZ ((*d_it)->GetName()); } F.close_chunk (); }
void CEditShape::SaveStream(IWriter& F) { inherited::SaveStream (F); F.open_chunk (SHAPE_CHUNK_VERSION); F.w_u16 (SHAPE_CURRENT_VERSION); F.close_chunk (); F.open_chunk (SHAPE_CHUNK_SHAPES); F.w_u32 (shapes.size()); F.w (shapes.begin(),shapes.size()*sizeof(shape_def)); F.close_chunk (); F.open_chunk (SHAPE_CHUNK_DATA); F.w_u8 (m_shape_type); F.close_chunk (); }
void STextureParams::Save(IWriter& F) { F.open_chunk (THM_CHUNK_TEXTUREPARAM); F.w (&fmt,sizeof(ETFormat)); F.w_u32 (flags.get()); F.w_u32 (border_color); F.w_u32 (fade_color); F.w_u32 (fade_amount); F.w_u32 (mip_filter); F.w_u32 (width); F.w_u32 (height); F.close_chunk (); F.open_chunk (THM_CHUNK_TEXTURE_TYPE); F.w_u32 (type); F.close_chunk (); F.open_chunk (THM_CHUNK_DETAIL_EXT); F.w_stringZ (detail_name); F.w_float (detail_scale); F.close_chunk (); F.open_chunk (THM_CHUNK_MATERIAL); F.w_u32 (material); F.w_float (material_weight); F.close_chunk (); F.open_chunk (THM_CHUNK_BUMP); F.w_float (bump_virtual_height); F.w_u32 (bump_mode); F.w_stringZ (bump_name); F.close_chunk (); F.open_chunk (THM_CHUNK_EXT_NORMALMAP); F.w_stringZ (ext_normal_map_name); F.close_chunk (); F.open_chunk (THM_CHUNK_FADE_DELAY); F.w_u8 (fade_delay); F.close_chunk (); }
void CEditableMesh::SaveMesh(IWriter& F){ F.open_chunk (EMESH_CHUNK_VERSION); F.w_u16 (EMESH_CURRENT_VERSION); F.close_chunk (); F.open_chunk (EMESH_CHUNK_MESHNAME); F.w_stringZ (m_Name); F.close_chunk (); F.w_chunk (EMESH_CHUNK_BBOX,&m_Box, sizeof(m_Box)); F.w_chunk (EMESH_CHUNK_FLAGS,&m_Flags,1); F.w_chunk (EMESH_CHUNK_BOP,&m_Ops, sizeof(m_Ops)); F.open_chunk (EMESH_CHUNK_VERTS); F.w_u32 (m_VertCount); F.w (m_Verts, m_VertCount*sizeof(Fvector)); /* for (AdjIt a_it=m_Adjs.begin(); a_it!=m_Adjs.end(); a_it++){ int sz = a_it->size(); VERIFY(sz<=255); F.w_u8 ((u8)sz); F.w (&*a_it->begin(), sizeof(int)*sz); } */ F.close_chunk (); F.open_chunk (EMESH_CHUNK_FACES); F.w_u32 (m_FaceCount); /* polygon count */ F.w (m_Faces, m_FaceCount*sizeof(st_Face)); F.close_chunk (); if (m_SGs){ F.open_chunk (EMESH_CHUNK_SG); F.w (m_SGs, m_FaceCount*sizeof(u32)); F.close_chunk (); } F.open_chunk (EMESH_CHUNK_VMREFS); F.w_u32 (m_VMRefs.size()); for (VMRefsIt r_it=m_VMRefs.begin(); r_it!=m_VMRefs.end(); r_it++){ int sz = r_it->count; VERIFY(sz<=255); F.w_u8 ((u8)sz); F.w (r_it->pts, sizeof(st_VMapPt)*sz); } F.close_chunk (); F.open_chunk (EMESH_CHUNK_SFACE); F.w_u16 ((u16)m_SurfFaces.size()); /* surface polygon count*/ for (SurfFacesPairIt plp_it=m_SurfFaces.begin(); plp_it!=m_SurfFaces.end(); plp_it++){ F.w_stringZ (plp_it->first->_Name()); /* surface name*/ IntVec& pol_lst = plp_it->second; F.w_u32 (pol_lst.size()); /* surface-polygon indices*/ F.w (&*pol_lst.begin(), sizeof(int)*pol_lst.size()); } F.close_chunk (); F.open_chunk (EMESH_CHUNK_VMAPS_2); F.w_u32 (m_VMaps.size()); for (VMapIt vm_it=m_VMaps.begin(); vm_it!=m_VMaps.end(); vm_it++){ F.w_stringZ ((*vm_it)->name); F.w_u8 ((*vm_it)->dim); F.w_u8 ((u8)(*vm_it)->polymap); F.w_u8 ((*vm_it)->type); F.w_u32 ((*vm_it)->size()); F.w ((*vm_it)->getVMdata(), (*vm_it)->VMdatasize()); F.w ((*vm_it)->getVIdata(), (*vm_it)->VIdatasize()); if ((*vm_it)->polymap) F.w ((*vm_it)->getPIdata(), (*vm_it)->PIdatasize()); } F.close_chunk (); }