Exemple #1
0
        static void object_flags_write(Lib3dsObjectFlags flags, Lib3dsIo io)
        {
            if (flags == 0)
            {
                return;
            }

            Lib3dsChunk c = new Lib3dsChunk();

            c.size = 6;

            if ((flags & Lib3dsObjectFlags.LIB3DS_OBJECT_HIDDEN) != 0)
            {
                c.chunk = Lib3dsChunks.CHK_OBJ_HIDDEN;
                lib3ds_chunk_write(c, io);
            }
            if ((flags & Lib3dsObjectFlags.LIB3DS_OBJECT_VIS_LOFTER) != 0)
            {
                c.chunk = Lib3dsChunks.CHK_OBJ_VIS_LOFTER;
                lib3ds_chunk_write(c, io);
            }
            if ((flags & Lib3dsObjectFlags.LIB3DS_OBJECT_DOESNT_CAST) != 0)
            {
                c.chunk = Lib3dsChunks.CHK_OBJ_DOESNT_CAST;
                lib3ds_chunk_write(c, io);
            }
            if ((flags & Lib3dsObjectFlags.LIB3DS_OBJECT_MATTE) != 0)
            {
                c.chunk = Lib3dsChunks.CHK_OBJ_MATTE;
                lib3ds_chunk_write(c, io);
            }
            if ((flags & Lib3dsObjectFlags.LIB3DS_OBJECT_DONT_RCVSHADOW) != 0)
            {
                c.chunk = Lib3dsChunks.CHK_OBJ_DOESNT_CAST;
                lib3ds_chunk_write(c, io);
            }
            if ((flags & Lib3dsObjectFlags.LIB3DS_OBJECT_FAST) != 0)
            {
                c.chunk = Lib3dsChunks.CHK_OBJ_FAST;
                lib3ds_chunk_write(c, io);
            }
            if ((flags & Lib3dsObjectFlags.LIB3DS_OBJECT_FROZEN) != 0)
            {
                c.chunk = Lib3dsChunks.CHK_OBJ_FROZEN;
                lib3ds_chunk_write(c, io);
            }
        }
		static void object_flags_write(Lib3dsObjectFlags flags, Lib3dsIo io)
		{
			if(flags==0) return;

			Lib3dsChunk c=new Lib3dsChunk();
			c.size=6;

			if((flags&Lib3dsObjectFlags.LIB3DS_OBJECT_HIDDEN)!=0)
			{
				c.chunk=Lib3dsChunks.CHK_OBJ_HIDDEN;
				lib3ds_chunk_write(c, io);
			}
			if((flags&Lib3dsObjectFlags.LIB3DS_OBJECT_VIS_LOFTER)!=0)
			{
				c.chunk=Lib3dsChunks.CHK_OBJ_VIS_LOFTER;
				lib3ds_chunk_write(c, io);
			}
			if((flags&Lib3dsObjectFlags.LIB3DS_OBJECT_DOESNT_CAST)!=0)
			{
				c.chunk=Lib3dsChunks.CHK_OBJ_DOESNT_CAST;
				lib3ds_chunk_write(c, io);
			}
			if((flags&Lib3dsObjectFlags.LIB3DS_OBJECT_MATTE)!=0)
			{
				c.chunk=Lib3dsChunks.CHK_OBJ_MATTE;
				lib3ds_chunk_write(c, io);
			}
			if((flags&Lib3dsObjectFlags.LIB3DS_OBJECT_DONT_RCVSHADOW)!=0)
			{
				c.chunk=Lib3dsChunks.CHK_OBJ_DOESNT_CAST;
				lib3ds_chunk_write(c, io);
			}
			if((flags&Lib3dsObjectFlags.LIB3DS_OBJECT_FAST)!=0)
			{
				c.chunk=Lib3dsChunks.CHK_OBJ_FAST;
				lib3ds_chunk_write(c, io);
			}
			if((flags&Lib3dsObjectFlags.LIB3DS_OBJECT_FROZEN)!=0)
			{
				c.chunk=Lib3dsChunks.CHK_OBJ_FROZEN;
				lib3ds_chunk_write(c, io);
			}
		}
Exemple #3
0
        static void named_object_read(Lib3dsFile file, Lib3dsIo io)
        {
            Lib3dsChunk  c = new Lib3dsChunk();
            string       name;
            Lib3dsChunks chunk;

            Lib3dsMesh        mesh         = null;
            Lib3dsCamera      camera       = null;
            Lib3dsLight       light        = null;
            Lib3dsObjectFlags object_flags = 0;

            lib3ds_chunk_read_start(c, Lib3dsChunks.CHK_NAMED_OBJECT, io);

            name = lib3ds_io_read_string(io, 64);
            lib3ds_io_log(io, Lib3dsLogLevel.LIB3DS_LOG_INFO, "NAME={0}", name);
            lib3ds_chunk_read_tell(c, io);

            while ((chunk = lib3ds_chunk_read_next(c, io)) != 0)
            {
                switch (chunk)
                {
                case Lib3dsChunks.CHK_N_TRI_OBJECT:
                    mesh = lib3ds_mesh_new(name);
                    lib3ds_file_insert_mesh(file, mesh, -1);
                    lib3ds_chunk_read_reset(c, io);
                    lib3ds_mesh_read(file, mesh, io);
                    break;

                case Lib3dsChunks.CHK_N_CAMERA:
                    camera = lib3ds_camera_new(name);
                    lib3ds_file_insert_camera(file, camera, -1);
                    lib3ds_chunk_read_reset(c, io);
                    lib3ds_camera_read(camera, io);
                    break;

                case Lib3dsChunks.CHK_N_DIRECT_LIGHT:
                    light = lib3ds_light_new(name);
                    lib3ds_file_insert_light(file, light, -1);
                    lib3ds_chunk_read_reset(c, io);
                    lib3ds_light_read(light, io);
                    break;

                case Lib3dsChunks.CHK_OBJ_HIDDEN: object_flags |= Lib3dsObjectFlags.LIB3DS_OBJECT_HIDDEN; break;

                case Lib3dsChunks.CHK_OBJ_DOESNT_CAST: object_flags |= Lib3dsObjectFlags.LIB3DS_OBJECT_DOESNT_CAST; break;

                case Lib3dsChunks.CHK_OBJ_VIS_LOFTER: object_flags |= Lib3dsObjectFlags.LIB3DS_OBJECT_VIS_LOFTER; break;

                case Lib3dsChunks.CHK_OBJ_MATTE: object_flags |= Lib3dsObjectFlags.LIB3DS_OBJECT_MATTE; break;

                case Lib3dsChunks.CHK_OBJ_DONT_RCVSHADOW: object_flags |= Lib3dsObjectFlags.LIB3DS_OBJECT_DONT_RCVSHADOW; break;

                case Lib3dsChunks.CHK_OBJ_FAST: object_flags |= Lib3dsObjectFlags.LIB3DS_OBJECT_FAST; break;

                case Lib3dsChunks.CHK_OBJ_FROZEN: object_flags |= Lib3dsObjectFlags.LIB3DS_OBJECT_FROZEN; break;

                default: lib3ds_chunk_unknown(chunk, io); break;
                }
            }

            if (mesh != null)
            {
                mesh.object_flags = object_flags;
            }
            if (camera != null)
            {
                camera.object_flags = object_flags;
            }
            if (light != null)
            {
                light.object_flags = object_flags;
            }

            lib3ds_chunk_read_end(c, io);
        }