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