Rev 6046 | Rev 6081 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6046 | Rev 6060 | ||
---|---|---|---|
Line 81... | Line 81... | ||
81 | mov dword[edi+offs_obj_poi_count],0 |
81 | mov dword[edi+offs_obj_poi_count],0 |
82 | mov dword[edi+offs_obj_tri_data],0 |
82 | mov dword[edi+offs_obj_tri_data],0 |
83 | mov dword[edi+offs_obj_tri_count],0 |
83 | mov dword[edi+offs_obj_tri_count],0 |
84 | mov dword[edi+offs_obj_normals_tri_count],0 |
84 | mov dword[edi+offs_obj_normals_tri_count],0 |
85 | mov dword[edi+offs_obj_normals_poi_count],0 |
85 | mov dword[edi+offs_obj_normals_poi_count],0 |
- | 86 | cmp dword[edi+offs_obj_normals_tri_data],0 |
|
- | 87 | je @f |
|
86 | stdcall mem.Free,[edi+offs_obj_normals_tri_data] |
88 | stdcall mem.Free,[edi+offs_obj_normals_tri_data] |
87 | stdcall mem.Free,[edi+offs_obj_normals_poi_data] |
- | |
88 | mov dword[edi+offs_obj_normals_tri_data],0 |
89 | mov dword[edi+offs_obj_normals_tri_data],0 |
- | 90 | @@: |
|
- | 91 | cmp dword[edi+offs_obj_normals_poi_data],0 |
|
- | 92 | je @f |
|
- | 93 | stdcall mem.Free,[edi+offs_obj_normals_poi_data] |
|
89 | mov dword[edi+offs_obj_normals_poi_data],0 |
94 | mov dword[edi+offs_obj_normals_poi_data],0 |
90 | 95 | @@: |
|
91 | ;ãáâ ®¢ª ¯ à ¬¥â஢ ®â®¡à ¦¥¨ï |
- | |
92 | call mnu_reset_settings |
- | |
93 | ret |
96 | ret |
94 | endp |
97 | endp |
Line 95... | Line 98... | ||
95 | 98 | ||
96 | ;¯®¨áª ¤ ëå |
99 | ;¯®¨áª ¤ ëå |
Line 433... | Line 436... | ||
433 | .end: |
436 | .end: |
434 | popad |
437 | popad |
435 | ret |
438 | ret |
436 | endp |
439 | endp |
Line -... | Line 440... | ||
- | 440 | ||
- | 441 | ; áâனª áâàãªâãàë 3d ®¡ê¥ªâ |
|
- | 442 | align 4 |
|
- | 443 | proc obj_init, o_data:dword |
|
- | 444 | pushad |
|
- | 445 | mov edi,[o_data] |
|
- | 446 | stdcall obj_clear_param, edi |
|
- | 447 | stdcall [tl_node_get_data],tree1 |
|
- | 448 | xor edx,edx |
|
- | 449 | cmp eax,0 |
|
- | 450 | je .no_points |
|
- | 451 | mov ebx,[eax] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ë¡à ®£® ¡«®ª |
|
- | 452 | add ebx,[open_file_data] |
|
- | 453 | xor ecx,ecx |
|
- | 454 | cmp word[ebx],CHUNK_OBJBLOCK |
|
- | 455 | jne @f |
|
- | 456 | mov ecx,ebx |
|
- | 457 | add ecx,dword[ecx+2] ;£à ¨æ ¡«®ª |
|
- | 458 | push eax edi |
|
- | 459 | mov edi,ebx |
|
- | 460 | add edi,6 |
|
- | 461 | cld |
|
- | 462 | xor al,al |
|
- | 463 | repne scasb ;¯à®¯ã᪠¨¬¥¨ ®¡ê¥ªâ |
|
- | 464 | mov ebx,edi |
|
- | 465 | pop edi eax |
|
- | 466 | @@: |
|
- | 467 | cmp word[ebx],CHUNK_TRIMESH |
|
- | 468 | jne @f |
|
- | 469 | mov ecx,ebx |
|
- | 470 | add ecx,dword[ecx+2] ;£à ¨æ ¡«®ª |
|
- | 471 | add ebx,6 |
|
- | 472 | @@: |
|
- | 473 | cmp word[ebx],CHUNK_VERTLIST |
|
- | 474 | jne .no_points |
|
- | 475 | mov esi,ebx |
|
- | 476 | movzx edx,word[ebx+6] ;ª®««¨ç¥á⢮ â®ç¥ª |
|
- | 477 | add ebx,8 |
|
- | 478 | mov [edi+offs_obj_poi_data],ebx |
|
- | 479 | mov [edi+offs_obj_poi_count],edx |
|
- | 480 | ||
- | 481 | .cycle_0: ;横« ¤«ï ¯®¨áª âà¥ã£®«ì¨ª®¢ |
|
- | 482 | add esi,dword[esi+2] |
|
- | 483 | cmp word[esi],CHUNK_FACELIST |
|
- | 484 | je @f |
|
- | 485 | cmp ecx,esi |
|
- | 486 | jg .cycle_0 ;¯®ª ¥ ¤®á⨣ãâ £à¨æ áâ à襣® ¡«®ª |
|
- | 487 | jmp .end_points ;¥á«¨ ¥ 諨 âà¥ã£®«ì¨ª¨ |
|
- | 488 | @@: |
|
- | 489 | ;¥á«¨ 諨 âà¥ã£®«ì¨ª¨ |
|
- | 490 | movzx edx,word[esi+6] |
|
- | 491 | mov [edi+offs_obj_tri_count],edx |
|
- | 492 | add esi,8 ;2+4+2 (chunk+size+count) |
|
- | 493 | mov [edi+offs_obj_tri_data],esi |
|
- | 494 | .end_points: |
|
- | 495 | ||
- | 496 | stdcall obj_set_sizes, edi |
|
- | 497 | stdcall obj_set_normals, edi |
|
- | 498 | if version_edit eq 0 |
|
- | 499 | stdcall draw_3d, edi |
|
- | 500 | end if |
|
- | 501 | .no_points: |
|
- | 502 | popad |
|
- | 503 | ret |
|
- | 504 | endp |
|
437 | 505 | ||
438 | ;à¨á®¢ ¨¥ â®ç¥ª ¢ 3d |
506 | ;à¨á®¢ ¨¥ â®ç¥ª ¢ 3d |
439 | align 4 |
507 | align 4 |
440 | proc draw_3d uses eax ebx ecx edi, o_data:dword |
508 | proc draw_3d uses eax ebx ecx edi, o_data:dword |
- | 509 | mov edi,[o_data] |
|
- | 510 | if 0 ;debug |
|
- | 511 | stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT |
|
- | 512 | mov eax,[edi+offs_obj_poi_data] |
|
- | 513 | stdcall convert_int_to_str, txt_select_vert.count,16 |
|
- | 514 | stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_select_vert,5,3,[color_select] |
|
- | 515 | stdcall [kosglSwapBuffers] |
|
- | 516 | jmp .end_f |
|
441 | mov edi,[o_data] |
517 | end if |
442 | cmp dword[edi+offs_obj_poi_count],2 |
518 | cmp dword[edi+offs_obj_poi_count],2 |
443 | jl .end_f |
519 | jl .end_f |
444 | stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;®ç¨á⨬ ¡ãä¥à 梥⠨ £«ã¡¨ë |
520 | stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;®ç¨á⨬ ¡ãä¥à 梥⠨ £«ã¡¨ë |
445 | stdcall [glPushMatrix] |
521 | stdcall [glPushMatrix] |
Line 601... | Line 677... | ||
601 | 677 | ||
602 | stdcall [glEnable],GL_LIGHTING |
678 | stdcall [glEnable],GL_LIGHTING |
603 | stdcall [glEnable],GL_LIGHT0 |
679 | stdcall [glEnable],GL_LIGHT0 |
Line 604... | Line 680... | ||
604 | ret |
680 | ret |
605 | 681 | ||
606 | ;¨§¬¥ï¥¬ ०¨¬ à¨á®¢ ¨ï ¢¥àè¨ |
682 | ;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ¨ï ¢¥àè¨ |
607 | align 4 |
683 | align 4 |
- | 684 | mnu_vertexes_on: |
|
608 | mnu_vertexes_on_off: |
685 | or dword[draw_mode], 1 shl bit_vertexes |
609 | xor dword[draw_mode], 1 shl bit_vertexes |
686 | and dword[draw_mode], not (1 shl bit_faces) ;¢ëª«îç ¥¬ ०¨¬ à¨á®¢ ¨ï £à ¥© (çâ®-¡ë ¥ ¬¥è «¨) |
Line 610... | Line 687... | ||
610 | stdcall draw_3d, o3d |
687 | call update_obj |
611 | ret |
688 | ret |
612 | 689 | ||
613 | ;¨§¬¥ï¥¬ ०¨¬ à¨á®¢ ¨ï £à ¥© |
690 | ;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ¨ï ª ઠáëå £à ¥© |
- | 691 | align 4 |
|
614 | align 4 |
692 | mnu_edges_on: |
615 | mnu_faces_on_off: |
693 | or dword[draw_mode], 1 shl bit_faces |
Line 616... | Line 694... | ||
616 | xor dword[draw_mode], 1 shl bit_faces |
694 | and dword[draw_mode], not ((1 shl bit_vertexes)+(1 shl bit_faces_fill)) |
617 | stdcall draw_3d, o3d |
695 | call update_obj |
618 | ret |
696 | ret |
619 | 697 | ||
620 | ;¨§¬¥ï¥¬ ª ઠáë¥ ¨«¨ ᯫ®èë¥ £à ¨ |
698 | ;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ¨ï ᯫ®èëå £à ¥© |
621 | align 4 |
699 | align 4 |
622 | mnu_faces_fill_on_off: |
700 | mnu_faces_on: |
Line 623... | Line 701... | ||
623 | xor dword[draw_mode], 1 shl bit_faces_fill |
701 | or dword[draw_mode], (1 shl bit_faces)+(1 shl bit_faces_fill) |
624 | or dword[draw_mode], 1 shl bit_faces ;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ¨ï £à ¥© (¥á«¨ ¢¤à㣠¡ë« ®âª«îç¥) |
702 | and dword[draw_mode], not (1 shl bit_vertexes) |
625 | stdcall draw_3d, o3d |
703 | call update_obj |
626 | ret |
704 | ret |
627 | 705 | ||
628 | ;¢ª«îç ¥¬ ¨«¨ ®âª«îç ¥¬ ®á¢¥é¥¨¥ |
706 | ;¢ª«îç ¥¬ ¨«¨ ®âª«îç ¥¬ ®á¢¥é¥¨¥ |
Line 629... | Line 707... | ||
629 | align 4 |
707 | align 4 |
630 | mnu_light_on_off: |
708 | mnu_light_on_off: |
631 | xor dword[draw_mode], 1 shl bit_light |
709 | xor dword[draw_mode], 1 shl bit_light |
632 | stdcall draw_3d, o3d |
710 | call update_obj |
633 | ret |
711 | ret |
634 | 712 | ||
- | 713 | align 4 |
|
- | 714 | mnu_reset_settings: |
|
- | 715 | mov dword[angle_x],0.0 |
|
- | 716 | mov dword[angle_y],0.0 |
|
- | 717 | mov dword[angle_z],0.0 |
|
- | 718 | m2m dword[draw_mode],dword[def_dr_mode] |
|
- | 719 | call update_obj |
|
635 | align 4 |
720 | ret |
636 | mnu_reset_settings: |
721 | |
Line -... | Line 722... | ||
- | 722 | if version_edit eq 1 |
|
- | 723 | ||
- | 724 | align 4 |
|
- | 725 | update_obj: |
|
- | 726 | stdcall draw_3d, o3d |
|
- | 727 | ret |
|
- | 728 | ||
- | 729 | else |
|
- | 730 | ||
- | 731 | align 4 |
|
- | 732 | update_obj: |
|
- | 733 | push eax |
|
- | 734 | stdcall [tl_node_get_data],tree1 |
|
- | 735 | cmp eax,0 |
|
- | 736 | je @f |
|
- | 737 | add eax,14 ;14=list_offs_obj3d |
|
637 | mov dword[angle_x],0.0 |
738 | stdcall draw_3d, eax |
638 | mov dword[angle_y],0.0 |
739 | @@: |
639 | mov dword[angle_z],0.0 |
740 | pop eax |
640 | m2m dword[draw_mode],dword[def_dr_mode] |
741 | ret |
641 | stdcall draw_3d, o3d |
742 |