static void distance_cue_read(Lib3dsAtmosphere at, Lib3dsIo io) { Lib3dsChunk c = new Lib3dsChunk(); Lib3dsChunks chunk; lib3ds_chunk_read_start(c, Lib3dsChunks.CHK_DISTANCE_CUE, io); at.dist_cue_near_plane = lib3ds_io_read_float(io); at.dist_cue_near_dimming = lib3ds_io_read_float(io); at.dist_cue_far_plane = lib3ds_io_read_float(io); at.dist_cue_far_dimming = lib3ds_io_read_float(io); lib3ds_chunk_read_tell(c, io); while ((chunk = lib3ds_chunk_read_next(c, io)) != 0) { switch (chunk) { case Lib3dsChunks.CHK_DCUE_BGND: at.dist_cue_background = true; break; default: lib3ds_chunk_unknown(chunk, io); break; } } lib3ds_chunk_read_end(c, io); }
static void fog_read(Lib3dsAtmosphere at, Lib3dsIo io) { Lib3dsChunk c = new Lib3dsChunk(); Lib3dsChunks chunk; lib3ds_chunk_read_start(c, Lib3dsChunks.CHK_FOG, io); at.fog_near_plane = lib3ds_io_read_float(io); at.fog_near_density = lib3ds_io_read_float(io); at.fog_far_plane = lib3ds_io_read_float(io); at.fog_far_density = lib3ds_io_read_float(io); lib3ds_chunk_read_tell(c, io); while ((chunk = lib3ds_chunk_read_next(c, io)) != 0) { switch (chunk) { case Lib3dsChunks.CHK_LIN_COLOR_F: for (int i = 0; i < 3; i++) { at.fog_color[i] = lib3ds_io_read_float(io); } break; case Lib3dsChunks.CHK_COLOR_F: break; case Lib3dsChunks.CHK_FOG_BGND: at.fog_background = true; break; default: lib3ds_chunk_unknown(chunk, io); break; } } lib3ds_chunk_read_end(c, io); }
static void layer_fog_read(Lib3dsAtmosphere at, Lib3dsIo io) { Lib3dsChunk c = new Lib3dsChunk(); Lib3dsChunks chunk; bool have_lin = false; lib3ds_chunk_read_start(c, Lib3dsChunks.CHK_LAYER_FOG, io); at.layer_fog_near_y = lib3ds_io_read_float(io); at.layer_fog_far_y = lib3ds_io_read_float(io); at.layer_fog_density = lib3ds_io_read_float(io); at.layer_fog_flags = lib3ds_io_read_dword(io); lib3ds_chunk_read_tell(c, io); while ((chunk = lib3ds_chunk_read_next(c, io)) != 0) { switch (chunk) { case Lib3dsChunks.CHK_LIN_COLOR_F: lib3ds_io_read_rgb(io, at.layer_fog_color); have_lin = true; break; case Lib3dsChunks.CHK_COLOR_F: lib3ds_io_read_rgb(io, at.layer_fog_color); break; default: lib3ds_chunk_unknown(chunk, io); break; } } lib3ds_chunk_read_end(c, io); }
public static void lib3ds_atmosphere_read(Lib3dsAtmosphere atmosphere, Lib3dsIo io) { Lib3dsChunk c = new Lib3dsChunk(); lib3ds_chunk_read(c, io); switch (c.chunk) { case Lib3dsChunks.CHK_FOG: lib3ds_chunk_read_reset(c, io); fog_read(atmosphere, io); break; case Lib3dsChunks.CHK_LAYER_FOG: lib3ds_chunk_read_reset(c, io); layer_fog_read(atmosphere, io); break; case Lib3dsChunks.CHK_DISTANCE_CUE: lib3ds_chunk_read_reset(c, io); distance_cue_read(atmosphere, io); break; case Lib3dsChunks.CHK_USE_FOG: atmosphere.use_fog = true; break; case Lib3dsChunks.CHK_USE_LAYER_FOG: atmosphere.use_layer_fog = true; break; case Lib3dsChunks.CHK_USE_DISTANCE_CUE: atmosphere.use_dist_cue = true; break; } }
static void layer_fog_read(Lib3dsAtmosphere at, Lib3dsIo io) { Lib3dsChunk c=new Lib3dsChunk(); Lib3dsChunks chunk; //bool have_lin=false; lib3ds_chunk_read_start(c, Lib3dsChunks.CHK_LAYER_FOG, io); at.layer_fog_near_y=lib3ds_io_read_float(io); at.layer_fog_far_y=lib3ds_io_read_float(io); at.layer_fog_density=lib3ds_io_read_float(io); at.layer_fog_flags=lib3ds_io_read_dword(io); lib3ds_chunk_read_tell(c, io); while((chunk=lib3ds_chunk_read_next(c, io))!=0) { switch(chunk) { case Lib3dsChunks.CHK_LIN_COLOR_F: lib3ds_io_read_rgb(io, at.layer_fog_color); //have_lin=true; break; case Lib3dsChunks.CHK_COLOR_F: lib3ds_io_read_rgb(io, at.layer_fog_color); break; default: lib3ds_chunk_unknown(chunk, io); break; } } lib3ds_chunk_read_end(c, io); }
static void fog_read(Lib3dsAtmosphere at, Lib3dsIo io) { Lib3dsChunk c=new Lib3dsChunk(); Lib3dsChunks chunk; lib3ds_chunk_read_start(c, Lib3dsChunks.CHK_FOG, io); at.fog_near_plane=lib3ds_io_read_float(io); at.fog_near_density=lib3ds_io_read_float(io); at.fog_far_plane=lib3ds_io_read_float(io); at.fog_far_density=lib3ds_io_read_float(io); lib3ds_chunk_read_tell(c, io); while((chunk=lib3ds_chunk_read_next(c, io))!=0) { switch(chunk) { case Lib3dsChunks.CHK_LIN_COLOR_F: for(int i=0; i<3; i++) at.fog_color[i]=lib3ds_io_read_float(io); break; case Lib3dsChunks.CHK_COLOR_F: break; case Lib3dsChunks.CHK_FOG_BGND: at.fog_background=true; break; default: lib3ds_chunk_unknown(chunk, io); break; } } lib3ds_chunk_read_end(c, io); }
static void distance_cue_read(Lib3dsAtmosphere at, Lib3dsIo io) { Lib3dsChunk c=new Lib3dsChunk(); Lib3dsChunks chunk; lib3ds_chunk_read_start(c, Lib3dsChunks.CHK_DISTANCE_CUE, io); at.dist_cue_near_plane=lib3ds_io_read_float(io); at.dist_cue_near_dimming=lib3ds_io_read_float(io); at.dist_cue_far_plane=lib3ds_io_read_float(io); at.dist_cue_far_dimming=lib3ds_io_read_float(io); lib3ds_chunk_read_tell(c, io); while((chunk=lib3ds_chunk_read_next(c, io))!=0) { switch(chunk) { case Lib3dsChunks.CHK_DCUE_BGND: at.dist_cue_background=true; break; default: lib3ds_chunk_unknown(chunk, io); break; } } lib3ds_chunk_read_end(c, io); }
public static void lib3ds_atmosphere_write(Lib3dsAtmosphere atmosphere, Lib3dsIo io) { if (atmosphere.use_fog) { // ---- LIB3DS_FOG ---- Lib3dsChunk c_fog = new Lib3dsChunk(); c_fog.chunk = Lib3dsChunks.CHK_FOG; lib3ds_chunk_write_start(c_fog, io); lib3ds_io_write_float(io, atmosphere.fog_near_plane); lib3ds_io_write_float(io, atmosphere.fog_near_density); lib3ds_io_write_float(io, atmosphere.fog_far_plane); lib3ds_io_write_float(io, atmosphere.fog_far_density); { Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_COLOR_F; c.size = 18; lib3ds_chunk_write(c, io); lib3ds_io_write_rgb(io, atmosphere.fog_color); } if (atmosphere.fog_background) { Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_FOG_BGND; c.size = 6; lib3ds_chunk_write(c, io); } lib3ds_chunk_write_end(c_fog, io); } if (atmosphere.use_layer_fog) { // ---- LIB3DS_LAYER_FOG ---- Lib3dsChunk c_layer_fog = new Lib3dsChunk(); c_layer_fog.chunk = Lib3dsChunks.CHK_LAYER_FOG; c_layer_fog.size = 40; lib3ds_chunk_write(c_layer_fog, io); lib3ds_io_write_float(io, atmosphere.layer_fog_near_y); lib3ds_io_write_float(io, atmosphere.layer_fog_far_y); lib3ds_io_write_float(io, atmosphere.layer_fog_near_y); lib3ds_io_write_dword(io, atmosphere.layer_fog_flags); { Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_COLOR_F; c.size = 18; lib3ds_chunk_write(c, io); lib3ds_io_write_rgb(io, atmosphere.fog_color); } } if (atmosphere.use_dist_cue) { // ---- LIB3DS_DISTANCE_CUE ---- Lib3dsChunk c_distance_cue = new Lib3dsChunk(); c_distance_cue.chunk = Lib3dsChunks.CHK_DISTANCE_CUE; lib3ds_chunk_write_start(c_distance_cue, io); lib3ds_io_write_float(io, atmosphere.dist_cue_near_plane); lib3ds_io_write_float(io, atmosphere.dist_cue_near_dimming); lib3ds_io_write_float(io, atmosphere.dist_cue_far_plane); lib3ds_io_write_float(io, atmosphere.dist_cue_far_dimming); if (atmosphere.dist_cue_background) { Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_DCUE_BGND; c.size = 6; lib3ds_chunk_write(c, io); } lib3ds_chunk_write_end(c_distance_cue, io); } if (atmosphere.use_fog) { // ---- LIB3DS_USE_FOG ---- Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_USE_FOG; c.size = 6; lib3ds_chunk_write(c, io); } if (atmosphere.use_layer_fog) { // ---- LIB3DS_USE_LAYER_FOG ---- Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_USE_LAYER_FOG; c.size = 6; lib3ds_chunk_write(c, io); } if (atmosphere.use_dist_cue) { // ---- LIB3DS_USE_DISTANCE_CUE ---- Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_USE_V_GRADIENT; c.size = 6; lib3ds_chunk_write(c, io); } }
public static void lib3ds_viewport_write(Lib3dsViewport viewport, Lib3dsIo io) { if(viewport.layout_views.Count!=0) { Lib3dsChunk c_viewport_layout=new Lib3dsChunk(); c_viewport_layout.chunk=Lib3dsChunks.CHK_VIEWPORT_LAYOUT; lib3ds_chunk_write_start(c_viewport_layout, io); lib3ds_io_write_word(io, (ushort)viewport.layout_style); lib3ds_io_write_intw(io, viewport.layout_active); lib3ds_io_write_intw(io, 0); lib3ds_io_write_intw(io, viewport.layout_swap); lib3ds_io_write_intw(io, 0); lib3ds_io_write_intw(io, viewport.layout_swap_prior); lib3ds_io_write_intw(io, viewport.layout_swap_view); { Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_VIEWPORT_SIZE; c.size=14; lib3ds_chunk_write(c, io); lib3ds_io_write_word(io, viewport.layout_position[0]); lib3ds_io_write_word(io, viewport.layout_position[1]); lib3ds_io_write_word(io, viewport.layout_size[0]); lib3ds_io_write_word(io, viewport.layout_size[1]); } foreach(Lib3dsView layout_view in viewport.layout_views) { Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_VIEWPORT_DATA_3; c.size=55; lib3ds_chunk_write(c, io); lib3ds_io_write_intw(io, 0); lib3ds_io_write_word(io, layout_view.axis_lock); lib3ds_io_write_intw(io, layout_view.position[0]); lib3ds_io_write_intw(io, layout_view.position[1]); lib3ds_io_write_intw(io, layout_view.size[0]); lib3ds_io_write_intw(io, layout_view.size[1]); lib3ds_io_write_word(io, (ushort)layout_view.type); lib3ds_io_write_float(io, layout_view.zoom); lib3ds_io_write_vector(io, layout_view.center); lib3ds_io_write_float(io, layout_view.horiz_angle); lib3ds_io_write_float(io, layout_view.vert_angle); lib3ds_io_write(io, layout_view.camera, 11); } lib3ds_chunk_write_end(c_viewport_layout, io); } if(viewport.default_type!=0) { Lib3dsChunk c_default_view=new Lib3dsChunk(); c_default_view.chunk=Lib3dsChunks.CHK_DEFAULT_VIEW; lib3ds_chunk_write_start(c_default_view, io); switch(viewport.default_type) { case Lib3dsViewType.LIB3DS_VIEW_TOP: { Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_VIEW_TOP; c.size=22; lib3ds_chunk_write(c, io); lib3ds_io_write_vector(io, viewport.default_position); lib3ds_io_write_float(io, viewport.default_width); } break; case Lib3dsViewType.LIB3DS_VIEW_BOTTOM: { Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_VIEW_BOTTOM; c.size=22; lib3ds_chunk_write(c, io); lib3ds_io_write_vector(io, viewport.default_position); lib3ds_io_write_float(io, viewport.default_width); } break; case Lib3dsViewType.LIB3DS_VIEW_LEFT: { Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_VIEW_LEFT; c.size=22; lib3ds_chunk_write(c, io); lib3ds_io_write_vector(io, viewport.default_position); lib3ds_io_write_float(io, viewport.default_width); } break; case Lib3dsViewType.LIB3DS_VIEW_RIGHT: { Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_VIEW_RIGHT; c.size=22; lib3ds_chunk_write(c, io); lib3ds_io_write_vector(io, viewport.default_position); lib3ds_io_write_float(io, viewport.default_width); } break; case Lib3dsViewType.LIB3DS_VIEW_FRONT: { Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_VIEW_FRONT; c.size=22; lib3ds_chunk_write(c, io); lib3ds_io_write_vector(io, viewport.default_position); lib3ds_io_write_float(io, viewport.default_width); } break; case Lib3dsViewType.LIB3DS_VIEW_BACK: { Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_VIEW_BACK; c.size=22; lib3ds_chunk_write(c, io); lib3ds_io_write_vector(io, viewport.default_position); lib3ds_io_write_float(io, viewport.default_width); } break; case Lib3dsViewType.LIB3DS_VIEW_USER: { Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_VIEW_USER; c.size=34; lib3ds_chunk_write(c, io); lib3ds_io_write_vector(io, viewport.default_position); lib3ds_io_write_float(io, viewport.default_width); lib3ds_io_write_float(io, viewport.default_horiz_angle); lib3ds_io_write_float(io, viewport.default_vert_angle); lib3ds_io_write_float(io, viewport.default_roll_angle); } break; case Lib3dsViewType.LIB3DS_VIEW_CAMERA: { Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_VIEW_CAMERA; c.size=17; lib3ds_chunk_write(c, io); lib3ds_io_write(io, viewport.default_camera, 11); } break; } lib3ds_chunk_write_end(c_default_view, io); } }
public static void lib3ds_viewport_read(Lib3dsViewport viewport, Lib3dsIo io) { Lib3dsChunk c=new Lib3dsChunk(); Lib3dsChunks chunk; viewport.Clear(); lib3ds_chunk_read_start(c, 0, io); switch(c.chunk) { case Lib3dsChunks.CHK_VIEWPORT_LAYOUT: viewport.layout_style=(Lib3dsLayoutStyle)lib3ds_io_read_word(io); viewport.layout_active=lib3ds_io_read_intw(io); lib3ds_io_read_intw(io); viewport.layout_swap=lib3ds_io_read_intw(io); lib3ds_io_read_intw(io); viewport.layout_swap_prior=lib3ds_io_read_intw(io); viewport.layout_swap_view=lib3ds_io_read_intw(io); lib3ds_chunk_read_tell(c, io); while((chunk=lib3ds_chunk_read_next(c, io))!=0) { switch(chunk) { case Lib3dsChunks.CHK_VIEWPORT_SIZE: viewport.layout_position[0]=lib3ds_io_read_word(io); viewport.layout_position[1]=lib3ds_io_read_word(io); viewport.layout_size[0]=lib3ds_io_read_word(io); viewport.layout_size[1]=lib3ds_io_read_word(io); break; case Lib3dsChunks.CHK_VIEWPORT_DATA_3: { lib3ds_io_read_intw(io); Lib3dsView layout_view=new Lib3dsView(); layout_view.axis_lock=lib3ds_io_read_word(io); layout_view.position[0]=lib3ds_io_read_intw(io); layout_view.position[1]=lib3ds_io_read_intw(io); layout_view.size[0]=lib3ds_io_read_intw(io); layout_view.size[1]=lib3ds_io_read_intw(io); layout_view.type=(Lib3dsViewType)lib3ds_io_read_word(io); layout_view.zoom=lib3ds_io_read_float(io); lib3ds_io_read_vector(io, layout_view.center); layout_view.horiz_angle=lib3ds_io_read_float(io); layout_view.vert_angle=lib3ds_io_read_float(io); lib3ds_io_read(io, layout_view.camera, 11); viewport.layout_views.Add(layout_view); } break; case Lib3dsChunks.CHK_VIEWPORT_DATA: break; // 3DS R2 & R3 chunk unsupported default: lib3ds_chunk_unknown(chunk, io); break; } } break; case Lib3dsChunks.CHK_DEFAULT_VIEW: while((chunk=lib3ds_chunk_read_next(c, io))!=0) { switch(chunk) { case Lib3dsChunks.CHK_VIEW_TOP: viewport.default_type=Lib3dsViewType.LIB3DS_VIEW_TOP; lib3ds_io_read_vector(io, viewport.default_position); viewport.default_width=lib3ds_io_read_float(io); break; case Lib3dsChunks.CHK_VIEW_BOTTOM: viewport.default_type=Lib3dsViewType.LIB3DS_VIEW_BOTTOM; lib3ds_io_read_vector(io, viewport.default_position); viewport.default_width=lib3ds_io_read_float(io); break; case Lib3dsChunks.CHK_VIEW_LEFT: viewport.default_type=Lib3dsViewType.LIB3DS_VIEW_LEFT; lib3ds_io_read_vector(io, viewport.default_position); viewport.default_width=lib3ds_io_read_float(io); break; case Lib3dsChunks.CHK_VIEW_RIGHT: viewport.default_type=Lib3dsViewType.LIB3DS_VIEW_RIGHT; lib3ds_io_read_vector(io, viewport.default_position); viewport.default_width=lib3ds_io_read_float(io); break; case Lib3dsChunks.CHK_VIEW_FRONT: viewport.default_type=Lib3dsViewType.LIB3DS_VIEW_FRONT; lib3ds_io_read_vector(io, viewport.default_position); viewport.default_width=lib3ds_io_read_float(io); break; case Lib3dsChunks.CHK_VIEW_BACK: viewport.default_type=Lib3dsViewType.LIB3DS_VIEW_BACK; lib3ds_io_read_vector(io, viewport.default_position); viewport.default_width=lib3ds_io_read_float(io); break; case Lib3dsChunks.CHK_VIEW_USER: viewport.default_type=Lib3dsViewType.LIB3DS_VIEW_USER; lib3ds_io_read_vector(io, viewport.default_position); viewport.default_width=lib3ds_io_read_float(io); viewport.default_horiz_angle=lib3ds_io_read_float(io); viewport.default_vert_angle=lib3ds_io_read_float(io); viewport.default_roll_angle=lib3ds_io_read_float(io); break; case Lib3dsChunks.CHK_VIEW_CAMERA: viewport.default_type=Lib3dsViewType.LIB3DS_VIEW_CAMERA; lib3ds_io_read(io, viewport.default_camera, 11); break; default: lib3ds_chunk_unknown(chunk, io); break; } } break; } lib3ds_chunk_read_end(c, io); }
public static void lib3ds_atmosphere_read(Lib3dsAtmosphere atmosphere, Lib3dsIo io) { Lib3dsChunk c=new Lib3dsChunk(); lib3ds_chunk_read(c, io); switch(c.chunk) { case Lib3dsChunks.CHK_FOG: lib3ds_chunk_read_reset(c, io); fog_read(atmosphere, io); break; case Lib3dsChunks.CHK_LAYER_FOG: lib3ds_chunk_read_reset(c, io); layer_fog_read(atmosphere, io); break; case Lib3dsChunks.CHK_DISTANCE_CUE: lib3ds_chunk_read_reset(c, io); distance_cue_read(atmosphere, io); break; case Lib3dsChunks.CHK_USE_FOG: atmosphere.use_fog=true; break; case Lib3dsChunks.CHK_USE_LAYER_FOG: atmosphere.use_layer_fog=true; break; case Lib3dsChunks.CHK_USE_DISTANCE_CUE: atmosphere.use_dist_cue=true; break; } }
public static void lib3ds_atmosphere_write(Lib3dsAtmosphere atmosphere, Lib3dsIo io) { if(atmosphere.use_fog) { // ---- LIB3DS_FOG ---- Lib3dsChunk c_fog=new Lib3dsChunk(); c_fog.chunk=Lib3dsChunks.CHK_FOG; lib3ds_chunk_write_start(c_fog, io); lib3ds_io_write_float(io, atmosphere.fog_near_plane); lib3ds_io_write_float(io, atmosphere.fog_near_density); lib3ds_io_write_float(io, atmosphere.fog_far_plane); lib3ds_io_write_float(io, atmosphere.fog_far_density); { Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_COLOR_F; c.size=18; lib3ds_chunk_write(c, io); lib3ds_io_write_rgb(io, atmosphere.fog_color); } if(atmosphere.fog_background) { Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_FOG_BGND; c.size=6; lib3ds_chunk_write(c, io); } lib3ds_chunk_write_end(c_fog, io); } if(atmosphere.use_layer_fog) { // ---- LIB3DS_LAYER_FOG ---- Lib3dsChunk c_layer_fog=new Lib3dsChunk(); c_layer_fog.chunk=Lib3dsChunks.CHK_LAYER_FOG; c_layer_fog.size=40; lib3ds_chunk_write(c_layer_fog, io); lib3ds_io_write_float(io, atmosphere.layer_fog_near_y); lib3ds_io_write_float(io, atmosphere.layer_fog_far_y); lib3ds_io_write_float(io, atmosphere.layer_fog_near_y); lib3ds_io_write_dword(io, atmosphere.layer_fog_flags); { Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_COLOR_F; c.size=18; lib3ds_chunk_write(c, io); lib3ds_io_write_rgb(io, atmosphere.fog_color); } } if(atmosphere.use_dist_cue) { // ---- LIB3DS_DISTANCE_CUE ---- Lib3dsChunk c_distance_cue=new Lib3dsChunk(); c_distance_cue.chunk=Lib3dsChunks.CHK_DISTANCE_CUE; lib3ds_chunk_write_start(c_distance_cue, io); lib3ds_io_write_float(io, atmosphere.dist_cue_near_plane); lib3ds_io_write_float(io, atmosphere.dist_cue_near_dimming); lib3ds_io_write_float(io, atmosphere.dist_cue_far_plane); lib3ds_io_write_float(io, atmosphere.dist_cue_far_dimming); if(atmosphere.dist_cue_background) { Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_DCUE_BGND; c.size=6; lib3ds_chunk_write(c, io); } lib3ds_chunk_write_end(c_distance_cue, io); } if(atmosphere.use_fog) { // ---- LIB3DS_USE_FOG ---- Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_USE_FOG; c.size=6; lib3ds_chunk_write(c, io); } if(atmosphere.use_layer_fog) { // ---- LIB3DS_USE_LAYER_FOG ---- Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_USE_LAYER_FOG; c.size=6; lib3ds_chunk_write(c, io); } if(atmosphere.use_dist_cue) { // ---- LIB3DS_USE_DISTANCE_CUE ---- Lib3dsChunk c=new Lib3dsChunk(); c.chunk=Lib3dsChunks.CHK_USE_V_GRADIENT; c.size=6; lib3ds_chunk_write(c, io); } }
public static void lib3ds_viewport_write(Lib3dsViewport viewport, Lib3dsIo io) { if (viewport.layout_views.Count != 0) { Lib3dsChunk c_viewport_layout = new Lib3dsChunk(); c_viewport_layout.chunk = Lib3dsChunks.CHK_VIEWPORT_LAYOUT; lib3ds_chunk_write_start(c_viewport_layout, io); lib3ds_io_write_word(io, (ushort)viewport.layout_style); lib3ds_io_write_intw(io, viewport.layout_active); lib3ds_io_write_intw(io, 0); lib3ds_io_write_intw(io, viewport.layout_swap); lib3ds_io_write_intw(io, 0); lib3ds_io_write_intw(io, viewport.layout_swap_prior); lib3ds_io_write_intw(io, viewport.layout_swap_view); { Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_VIEWPORT_SIZE; c.size = 14; lib3ds_chunk_write(c, io); lib3ds_io_write_word(io, viewport.layout_position[0]); lib3ds_io_write_word(io, viewport.layout_position[1]); lib3ds_io_write_word(io, viewport.layout_size[0]); lib3ds_io_write_word(io, viewport.layout_size[1]); } foreach (Lib3dsView layout_view in viewport.layout_views) { Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_VIEWPORT_DATA_3; c.size = 55; lib3ds_chunk_write(c, io); lib3ds_io_write_intw(io, 0); lib3ds_io_write_word(io, layout_view.axis_lock); lib3ds_io_write_intw(io, layout_view.position[0]); lib3ds_io_write_intw(io, layout_view.position[1]); lib3ds_io_write_intw(io, layout_view.size[0]); lib3ds_io_write_intw(io, layout_view.size[1]); lib3ds_io_write_word(io, (ushort)layout_view.type); lib3ds_io_write_float(io, layout_view.zoom); lib3ds_io_write_vector(io, layout_view.center); lib3ds_io_write_float(io, layout_view.horiz_angle); lib3ds_io_write_float(io, layout_view.vert_angle); lib3ds_io_write(io, layout_view.camera, 11); } lib3ds_chunk_write_end(c_viewport_layout, io); } if (viewport.default_type != 0) { Lib3dsChunk c_default_view = new Lib3dsChunk(); c_default_view.chunk = Lib3dsChunks.CHK_DEFAULT_VIEW; lib3ds_chunk_write_start(c_default_view, io); switch (viewport.default_type) { case Lib3dsViewType.LIB3DS_VIEW_TOP: { Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_VIEW_TOP; c.size = 22; lib3ds_chunk_write(c, io); lib3ds_io_write_vector(io, viewport.default_position); lib3ds_io_write_float(io, viewport.default_width); } break; case Lib3dsViewType.LIB3DS_VIEW_BOTTOM: { Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_VIEW_BOTTOM; c.size = 22; lib3ds_chunk_write(c, io); lib3ds_io_write_vector(io, viewport.default_position); lib3ds_io_write_float(io, viewport.default_width); } break; case Lib3dsViewType.LIB3DS_VIEW_LEFT: { Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_VIEW_LEFT; c.size = 22; lib3ds_chunk_write(c, io); lib3ds_io_write_vector(io, viewport.default_position); lib3ds_io_write_float(io, viewport.default_width); } break; case Lib3dsViewType.LIB3DS_VIEW_RIGHT: { Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_VIEW_RIGHT; c.size = 22; lib3ds_chunk_write(c, io); lib3ds_io_write_vector(io, viewport.default_position); lib3ds_io_write_float(io, viewport.default_width); } break; case Lib3dsViewType.LIB3DS_VIEW_FRONT: { Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_VIEW_FRONT; c.size = 22; lib3ds_chunk_write(c, io); lib3ds_io_write_vector(io, viewport.default_position); lib3ds_io_write_float(io, viewport.default_width); } break; case Lib3dsViewType.LIB3DS_VIEW_BACK: { Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_VIEW_BACK; c.size = 22; lib3ds_chunk_write(c, io); lib3ds_io_write_vector(io, viewport.default_position); lib3ds_io_write_float(io, viewport.default_width); } break; case Lib3dsViewType.LIB3DS_VIEW_USER: { Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_VIEW_USER; c.size = 34; lib3ds_chunk_write(c, io); lib3ds_io_write_vector(io, viewport.default_position); lib3ds_io_write_float(io, viewport.default_width); lib3ds_io_write_float(io, viewport.default_horiz_angle); lib3ds_io_write_float(io, viewport.default_vert_angle); lib3ds_io_write_float(io, viewport.default_roll_angle); } break; case Lib3dsViewType.LIB3DS_VIEW_CAMERA: { Lib3dsChunk c = new Lib3dsChunk(); c.chunk = Lib3dsChunks.CHK_VIEW_CAMERA; c.size = 17; lib3ds_chunk_write(c, io); lib3ds_io_write(io, viewport.default_camera, 11); } break; } lib3ds_chunk_write_end(c_default_view, io); } }
public static void lib3ds_viewport_read(Lib3dsViewport viewport, Lib3dsIo io) { Lib3dsChunk c = new Lib3dsChunk(); Lib3dsChunks chunk; viewport.Clear(); lib3ds_chunk_read_start(c, 0, io); switch (c.chunk) { case Lib3dsChunks.CHK_VIEWPORT_LAYOUT: viewport.layout_style = (Lib3dsLayoutStyle)lib3ds_io_read_word(io); viewport.layout_active = lib3ds_io_read_intw(io); lib3ds_io_read_intw(io); viewport.layout_swap = lib3ds_io_read_intw(io); lib3ds_io_read_intw(io); viewport.layout_swap_prior = lib3ds_io_read_intw(io); viewport.layout_swap_view = lib3ds_io_read_intw(io); lib3ds_chunk_read_tell(c, io); while ((chunk = lib3ds_chunk_read_next(c, io)) != 0) { switch (chunk) { case Lib3dsChunks.CHK_VIEWPORT_SIZE: viewport.layout_position[0] = lib3ds_io_read_word(io); viewport.layout_position[1] = lib3ds_io_read_word(io); viewport.layout_size[0] = lib3ds_io_read_word(io); viewport.layout_size[1] = lib3ds_io_read_word(io); break; case Lib3dsChunks.CHK_VIEWPORT_DATA_3: { lib3ds_io_read_intw(io); Lib3dsView layout_view = new Lib3dsView(); layout_view.axis_lock = lib3ds_io_read_word(io); layout_view.position[0] = lib3ds_io_read_intw(io); layout_view.position[1] = lib3ds_io_read_intw(io); layout_view.size[0] = lib3ds_io_read_intw(io); layout_view.size[1] = lib3ds_io_read_intw(io); layout_view.type = (Lib3dsViewType)lib3ds_io_read_word(io); layout_view.zoom = lib3ds_io_read_float(io); lib3ds_io_read_vector(io, layout_view.center); layout_view.horiz_angle = lib3ds_io_read_float(io); layout_view.vert_angle = lib3ds_io_read_float(io); lib3ds_io_read(io, layout_view.camera, 11); viewport.layout_views.Add(layout_view); } break; case Lib3dsChunks.CHK_VIEWPORT_DATA: break; // 3DS R2 & R3 chunk unsupported default: lib3ds_chunk_unknown(chunk, io); break; } } break; case Lib3dsChunks.CHK_DEFAULT_VIEW: while ((chunk = lib3ds_chunk_read_next(c, io)) != 0) { switch (chunk) { case Lib3dsChunks.CHK_VIEW_TOP: viewport.default_type = Lib3dsViewType.LIB3DS_VIEW_TOP; lib3ds_io_read_vector(io, viewport.default_position); viewport.default_width = lib3ds_io_read_float(io); break; case Lib3dsChunks.CHK_VIEW_BOTTOM: viewport.default_type = Lib3dsViewType.LIB3DS_VIEW_BOTTOM; lib3ds_io_read_vector(io, viewport.default_position); viewport.default_width = lib3ds_io_read_float(io); break; case Lib3dsChunks.CHK_VIEW_LEFT: viewport.default_type = Lib3dsViewType.LIB3DS_VIEW_LEFT; lib3ds_io_read_vector(io, viewport.default_position); viewport.default_width = lib3ds_io_read_float(io); break; case Lib3dsChunks.CHK_VIEW_RIGHT: viewport.default_type = Lib3dsViewType.LIB3DS_VIEW_RIGHT; lib3ds_io_read_vector(io, viewport.default_position); viewport.default_width = lib3ds_io_read_float(io); break; case Lib3dsChunks.CHK_VIEW_FRONT: viewport.default_type = Lib3dsViewType.LIB3DS_VIEW_FRONT; lib3ds_io_read_vector(io, viewport.default_position); viewport.default_width = lib3ds_io_read_float(io); break; case Lib3dsChunks.CHK_VIEW_BACK: viewport.default_type = Lib3dsViewType.LIB3DS_VIEW_BACK; lib3ds_io_read_vector(io, viewport.default_position); viewport.default_width = lib3ds_io_read_float(io); break; case Lib3dsChunks.CHK_VIEW_USER: viewport.default_type = Lib3dsViewType.LIB3DS_VIEW_USER; lib3ds_io_read_vector(io, viewport.default_position); viewport.default_width = lib3ds_io_read_float(io); viewport.default_horiz_angle = lib3ds_io_read_float(io); viewport.default_vert_angle = lib3ds_io_read_float(io); viewport.default_roll_angle = lib3ds_io_read_float(io); break; case Lib3dsChunks.CHK_VIEW_CAMERA: viewport.default_type = Lib3dsViewType.LIB3DS_VIEW_CAMERA; lib3ds_io_read(io, viewport.default_camera, 11); break; default: lib3ds_chunk_unknown(chunk, io); break; } } break; } lib3ds_chunk_read_end(c, io); }