Esempio n. 1
0
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  );

}
Esempio n. 2
0
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	();
}
Esempio n. 3
0
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);

}
Esempio n. 4
0
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 );
////////////////////////////////////////////////////////////////////////////
}
Esempio n. 5
0
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();
}
Esempio n. 6
0
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());
}
Esempio n. 7
0
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 );
	}
}
Esempio n. 8
0
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		();
}
Esempio n. 9
0
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	();
    
}
Esempio n. 10
0
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	();
}
Esempio n. 11
0
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  	();
}