Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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;
            }
        }
Пример #5
0
		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);
		}
Пример #6
0
		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);
		}
Пример #7
0
		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);
		}
Пример #8
0
        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);
            }
        }
Пример #9
0
		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);
			}
		}
Пример #10
0
		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);
		}
Пример #11
0
		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;
			}
		}
Пример #12
0
		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);
			}
		}
Пример #13
0
        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);
            }
        }
Пример #14
0
        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);
        }