Beispiel #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);
        }
Beispiel #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);
        }
Beispiel #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);
        }
Beispiel #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;
            }
        }
		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);
		}
Beispiel #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);
            }
        }
		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);
			}
		}