Rev 6081 | Rev 6510 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6081 | Rev 6509 | ||
---|---|---|---|
Line 23... | Line 23... | ||
23 | y_scale dd ? |
23 | y_scale dd ? |
24 | z_max dd ? |
24 | z_max dd ? |
25 | z_min dd ? |
25 | z_min dd ? |
26 | z_centr dd ? |
26 | z_centr dd ? |
27 | z_scale dd ? |
27 | z_scale dd ? |
- | 28 | mat1_data dd ? ;¤ ë¥ 1-£® ¬ â¥à¨ « ¢ ®¡ê¥ªâ¥ |
|
28 | ends |
29 | ends |
Line 29... | Line 30... | ||
29 | 30 | ||
30 | offs_obj_poi_data equ 0 ;㪠§ â¥«ì ª®®à¤¨ âë ¢¥àè¨ |
31 | offs_obj_poi_data equ 0 ;㪠§ â¥«ì ª®®à¤¨ âë ¢¥àè¨ |
31 | offs_obj_poi_count equ 4 ;ª®««¨ç¥á⢮ ¢¥àè¨ |
32 | offs_obj_poi_count equ 4 ;ª®««¨ç¥á⢮ ¢¥àè¨ |
Line 45... | Line 46... | ||
45 | offs_obj_y_scale equ 60 |
46 | offs_obj_y_scale equ 60 |
46 | offs_obj_z_max equ 64 |
47 | offs_obj_z_max equ 64 |
47 | offs_obj_z_min equ 68 |
48 | offs_obj_z_min equ 68 |
48 | offs_obj_z_centr equ 72 |
49 | offs_obj_z_centr equ 72 |
49 | offs_obj_z_scale equ 76 |
50 | offs_obj_z_scale equ 76 |
- | 51 | offs_obj_mat1_data equ 80 |
|
Line 50... | Line 52... | ||
50 | 52 | ||
51 | struct material |
53 | struct material |
52 | name dd ? |
54 | name dd ? |
53 | col_ambient dd ? ;梥⠬ â¥à¨ « |
55 | col_ambient dd ? ;梥⠬ â¥à¨ « |
Line 62... | Line 64... | ||
62 | 64 | ||
63 | bit_vertexes equ 0 |
65 | bit_vertexes equ 0 |
64 | bit_faces equ 1 |
66 | bit_faces equ 1 |
65 | bit_faces_fill equ 2 |
67 | bit_faces_fill equ 2 |
- | 68 | bit_light equ 3 |
|
Line 66... | Line 69... | ||
66 | bit_light equ 3 |
69 | bit_faces_mat equ 4 |
67 | 70 | ||
68 | ini_name db 'info3ds.ini',0 |
71 | ini_name db 'info3ds.ini',0 |
69 | ini_sec_w3d db 'Window 3d',0 |
72 | ini_sec_w3d db 'Window 3d',0 |
Line 116... | Line 119... | ||
116 | mov dword[edi+offs_obj_poi_count],0 |
119 | mov dword[edi+offs_obj_poi_count],0 |
117 | mov dword[edi+offs_obj_tri_data],0 |
120 | mov dword[edi+offs_obj_tri_data],0 |
118 | mov dword[edi+offs_obj_tri_count],0 |
121 | mov dword[edi+offs_obj_tri_count],0 |
119 | mov dword[edi+offs_obj_normals_tri_count],0 |
122 | mov dword[edi+offs_obj_normals_tri_count],0 |
120 | mov dword[edi+offs_obj_normals_poi_count],0 |
123 | mov dword[edi+offs_obj_normals_poi_count],0 |
- | 124 | mov dword[edi+offs_obj_mat1_data],0 |
|
121 | cmp dword[edi+offs_obj_normals_tri_data],0 |
125 | cmp dword[edi+offs_obj_normals_tri_data],0 |
122 | je @f |
126 | je @f |
123 | stdcall mem.Free,[edi+offs_obj_normals_tri_data] |
127 | stdcall mem.Free,[edi+offs_obj_normals_tri_data] |
124 | mov dword[edi+offs_obj_normals_tri_data],0 |
128 | mov dword[edi+offs_obj_normals_tri_data],0 |
125 | @@: |
129 | @@: |
Line 524... | Line 528... | ||
524 | ;¥á«¨ 諨 âà¥ã£®«ì¨ª¨ |
528 | ;¥á«¨ 諨 âà¥ã£®«ì¨ª¨ |
525 | movzx edx,word[esi+6] |
529 | movzx edx,word[esi+6] |
526 | mov [edi+offs_obj_tri_count],edx |
530 | mov [edi+offs_obj_tri_count],edx |
527 | add esi,8 ;2+4+2 (chunk+size+count) |
531 | add esi,8 ;2+4+2 (chunk+size+count) |
528 | mov [edi+offs_obj_tri_data],esi |
532 | mov [edi+offs_obj_tri_data],esi |
- | 533 | ||
- | 534 | ;¯®¨áª ¬ â¥à¨ «®¢ £à ¥© |
|
- | 535 | shl edx,3 |
|
- | 536 | add esi,edx |
|
- | 537 | cmp word[esi],CHUNK_FACEMAT |
|
- | 538 | jne .end_points |
|
- | 539 | mov [edi+offs_obj_mat1_data],esi |
|
529 | .end_points: |
540 | .end_points: |
Line 530... | Line 541... | ||
530 | 541 | ||
531 | stdcall obj_set_sizes, edi |
542 | stdcall obj_set_sizes, edi |
532 | stdcall obj_set_normals, edi |
543 | stdcall obj_set_normals, edi |
Line 537... | Line 548... | ||
537 | popad |
548 | popad |
538 | ret |
549 | ret |
539 | endp |
550 | endp |
Line 540... | Line 551... | ||
540 | 551 | ||
- | 552 | ; áâனª ¬ â¥à¨ « |
|
- | 553 | ;input: |
|
- | 554 | ; m_data - 㪠§ â¥«ì § ¯®«ï¥¬ãî áâàãªâãàã á ¬ â¥à¨ «®¬ |
|
541 | ; áâனª ¬ â¥à¨ « |
555 | ; f_data - 㪠§ â¥«ì ¡«®ª CHUNK_MATERIAL ¨§ ä ©« 3ds |
542 | align 4 |
556 | align 4 |
543 | proc mat_init, m_data:dword |
557 | proc mat_init, m_data:dword, f_data:dword |
544 | pushad |
558 | pushad |
Line 545... | Line 559... | ||
545 | mov edi,[m_data] |
559 | mov edi,[m_data] |
546 | 560 | ||
547 | ;... clear edi ... |
561 | ;... clear edi ... |
548 | mov dword[edi+offs_mat_name],0 |
562 | mov dword[edi+offs_mat_name],0 |
549 | mov dword[edi+offs_mat_col_ambient],0 |
563 | mov dword[edi+offs_mat_col_ambient],0 |
Line 550... | Line -... | ||
550 | mov dword[edi+offs_mat_col_diffuse],0 |
- | |
551 | mov dword[edi+offs_mat_col_specular],0 |
564 | mov dword[edi+offs_mat_col_diffuse],0 |
552 | - | ||
553 | stdcall [tl_node_get_data],tree1 |
- | |
554 | xor edx,edx |
- | |
555 | cmp eax,0 |
565 | mov dword[edi+offs_mat_col_specular],0 |
556 | je .no_material |
566 | |
557 | mov ebx,[eax] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ë¡à ®£® ¡«®ª |
567 | xor edx,edx |
558 | add ebx,[open_file_data] |
568 | mov ebx,[f_data] |
559 | xor ecx,ecx |
569 | xor ecx,ecx |
560 | cmp word[ebx],CHUNK_MATERIAL |
570 | cmp word[ebx],CHUNK_MATERIAL |
561 | jne .no_material |
571 | jne .no_material |
562 | mov ecx,ebx |
572 | mov ecx,ebx |
563 | add ecx,dword[ecx+2] ;£à ¨æ ¡«®ª |
573 | add ecx,dword[ecx+2] ;£à ¨æ ¡«®ª |
564 | add ebx,6 |
574 | add ebx,6 |
565 | cmp word[ebx],CHUNK_MATNAME |
575 | cmp word[ebx],CHUNK_MATNAME |
566 | jne .no_material |
576 | jne .no_material |
567 | ;*** (0) *** |
577 | ;*** (0) *** |
568 | mov esi,ebx |
578 | mov esi,ebx |
569 | add ebx,6 |
579 | add ebx,6 |
570 | mov [edi+offs_mat_name],ebx |
580 | mov [edi+offs_mat_name],ebx |
571 | sub ebx,6 |
581 | sub ebx,6 |
572 | ;*** (1) *** |
582 | ;*** (1) *** |
573 | .cycle_0: ;横« ¤«ï ¯®¨áª 梥⠬ â¥à¨ « |
583 | .cycle_0: ;横« ¤«ï ¯®¨áª 梥⠬ â¥à¨ « |
574 | add esi,dword[esi+2] |
584 | add esi,dword[esi+2] |
575 | cmp word[esi],0xa010 |
585 | cmp word[esi],0xa010 |
576 | je @f |
586 | je @f |
577 | cmp ecx,esi |
587 | cmp ecx,esi |
578 | jg .cycle_0 ;¯®ª ¥ ¤®á⨣ãâ £à¨æ áâ à襣® ¡«®ª |
588 | jg .cycle_0 ;¯®ª ¥ ¤®á⨣ãâ £à¨æ áâ à襣® ¡«®ª |
- | 589 | jmp .end_material ;¥á«¨ ¥ 諨 梥⠬ â¥à¨ « |
|
- | 590 | @@: |
|
- | 591 | ;¥á«¨ 諨 梥⠬ â¥à¨ « |
|
579 | jmp .end_material ;¥á«¨ ¥ 諨 梥⠬ â¥à¨ « |
592 | add esi,6 |
580 | @@: |
- | |
581 | ;¥á«¨ 諨 梥⠬ â¥à¨ « |
- | |
582 | add esi,6 |
- | |
583 | cmp word[esi],0x0011 |
593 | cmp word[esi],0x0011 |
584 | jne .end_material |
594 | jne .end_material |
585 | add esi,6 |
595 | add esi,6 |
586 | mov dl,byte[esi] |
596 | mov dl,byte[esi] |
587 | mov [edi+offs_mat_col_ambient+2],dl |
597 | mov [edi+offs_mat_col_ambient+2],dl |
588 | mov dx,word[esi+1] |
598 | mov dx,word[esi+1] |
589 | ror dx,8 |
599 | ror dx,8 |
590 | mov [edi+offs_mat_col_ambient],dx |
600 | mov [edi+offs_mat_col_ambient],dx |
591 | ;*** (2) *** |
601 | ;*** (2) *** |
592 | mov esi,ebx |
602 | mov esi,ebx |
593 | .cycle_1: ;横« ¤«ï ¯®¨áª 梥⠬ â¥à¨ « |
603 | .cycle_1: ;横« ¤«ï ¯®¨áª 梥⠬ â¥à¨ « |
594 | add esi,dword[esi+2] |
604 | add esi,dword[esi+2] |
595 | cmp word[esi],0xa020 |
605 | cmp word[esi],0xa020 |
596 | je @f |
606 | je @f |
597 | cmp ecx,esi |
607 | cmp ecx,esi |
598 | jg .cycle_1 ;¯®ª ¥ ¤®á⨣ãâ £à¨æ áâ à襣® ¡«®ª |
608 | jg .cycle_1 ;¯®ª ¥ ¤®á⨣ãâ £à¨æ áâ à襣® ¡«®ª |
- | 609 | jmp .end_material ;¥á«¨ ¥ 諨 梥⠬ â¥à¨ « |
|
- | 610 | @@: |
|
- | 611 | ;¥á«¨ 諨 梥⠬ â¥à¨ « |
|
599 | jmp .end_material ;¥á«¨ ¥ 諨 梥⠬ â¥à¨ « |
612 | add esi,6 |
600 | @@: |
- | |
601 | ;¥á«¨ 諨 梥⠬ â¥à¨ « |
- | |
602 | add esi,6 |
- | |
603 | cmp word[esi],0x0011 |
613 | cmp word[esi],0x0011 |
604 | jne .end_material |
614 | jne .end_material |
605 | add esi,6 |
615 | add esi,6 |
606 | mov dl,byte[esi] |
616 | mov dl,byte[esi] |
607 | mov [edi+offs_mat_col_diffuse+2],dl |
617 | mov [edi+offs_mat_col_diffuse+2],dl |
608 | mov dx,word[esi+1] |
618 | mov dx,word[esi+1] |
609 | ror dx,8 |
619 | ror dx,8 |
610 | mov [edi+offs_mat_col_diffuse],dx |
620 | mov [edi+offs_mat_col_diffuse],dx |
611 | ;*** (3) *** |
621 | ;*** (3) *** |
612 | mov esi,ebx |
622 | mov esi,ebx |
613 | .cycle_2: ;横« ¤«ï ¯®¨áª 梥⠬ â¥à¨ « |
623 | .cycle_2: ;横« ¤«ï ¯®¨áª 梥⠬ â¥à¨ « |
614 | add esi,dword[esi+2] |
624 | add esi,dword[esi+2] |
615 | cmp word[esi],0xa030 |
625 | cmp word[esi],0xa030 |
616 | je @f |
626 | je @f |
617 | cmp ecx,esi |
627 | cmp ecx,esi |
618 | jg .cycle_2 ;¯®ª ¥ ¤®á⨣ãâ £à¨æ áâ à襣® ¡«®ª |
628 | jg .cycle_2 ;¯®ª ¥ ¤®á⨣ãâ £à¨æ áâ à襣® ¡«®ª |
- | 629 | jmp .end_material ;¥á«¨ ¥ 諨 梥⠬ â¥à¨ « |
|
- | 630 | @@: |
|
- | 631 | ;¥á«¨ 諨 梥⠬ â¥à¨ « |
|
619 | jmp .end_material ;¥á«¨ ¥ 諨 梥⠬ â¥à¨ « |
632 | add esi,6 |
620 | @@: |
- | |
621 | ;¥á«¨ 諨 梥⠬ â¥à¨ « |
- | |
622 | add esi,6 |
- | |
623 | cmp word[esi],0x0011 |
633 | cmp word[esi],0x0011 |
624 | jne .end_material |
634 | jne .end_material |
625 | add esi,6 |
635 | add esi,6 |
626 | mov dl,byte[esi] |
636 | mov dl,byte[esi] |
627 | mov [edi+offs_mat_col_specular+2],dl |
637 | mov [edi+offs_mat_col_specular+2],dl |
Line 628... | Line 638... | ||
628 | mov dx,word[esi+1] |
638 | mov dx,word[esi+1] |
629 | ror dx,8 |
639 | ror dx,8 |
630 | mov [edi+offs_mat_col_specular],dx |
640 | mov [edi+offs_mat_col_specular],dx |
631 | 641 | ||
632 | .end_material: |
642 | .end_material: |
Line 712... | Line 722... | ||
712 | stdcall [glRotatef], [angle_z],0.0,0.0,1.0 |
722 | stdcall [glRotatef], [angle_z],0.0,0.0,1.0 |
713 | stdcall [glRotatef], [angle_y],0.0,1.0,0.0 |
723 | stdcall [glRotatef], [angle_y],0.0,1.0,0.0 |
714 | stdcall [glRotatef], [angle_x],1.0,0.0,0.0 |
724 | stdcall [glRotatef], [angle_x],1.0,0.0,0.0 |
715 | stdcall [glTranslatef], [edi+offs_obj_x_centr],[edi+offs_obj_y_centr],[edi+offs_obj_z_centr] |
725 | stdcall [glTranslatef], [edi+offs_obj_x_centr],[edi+offs_obj_y_centr],[edi+offs_obj_z_centr] |
Line -... | Line 726... | ||
- | 726 | ||
- | 727 | if version_edit eq 0 |
|
- | 728 | ;à¨á®¢ ¨¥ £à ¥© á ¨á¯®«ì§®¢ ¨¥¬ 梥⮢ ¬ â¥à¨ «®¢ |
|
- | 729 | bt dword[draw_mode],bit_faces_mat |
|
- | 730 | jnc @f |
|
- | 731 | mov eax,[edi+offs_obj_mat1_data] |
|
- | 732 | .b_found: |
|
- | 733 | cmp eax,0 |
|
- | 734 | je .end_triangles |
|
- | 735 | mov ebx,eax |
|
- | 736 | stdcall get_mat_color, eax |
|
- | 737 | stdcall draw_3d_faces_color, edi,ebx,eax |
|
- | 738 | stdcall found_mat_faces, ebx |
|
- | 739 | jmp .b_found |
|
- | 740 | @@: |
|
- | 741 | end if |
|
716 | 742 | ||
717 | ;à¨á®¢ ¨¥ â®ç¥ª |
743 | ;à¨á®¢ ¨¥ â®ç¥ª |
718 | bt dword[draw_mode],bit_vertexes |
744 | bt dword[draw_mode],bit_vertexes |
719 | jnc .end_points |
745 | jnc .end_points |
720 | stdcall [glColor3ub],[color_vert+2],[color_vert+1],[color_vert] |
746 | stdcall [glColor3ub],[color_vert+2],[color_vert+1],[color_vert] |
Line 861... | Line 887... | ||
861 | 887 | ||
862 | ;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ¨ï ¢¥àè¨ |
888 | ;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ¨ï ¢¥àè¨ |
863 | align 4 |
889 | align 4 |
864 | mnu_vertexes_on: |
890 | mnu_vertexes_on: |
865 | or dword[draw_mode], 1 shl bit_vertexes |
891 | or dword[draw_mode], 1 shl bit_vertexes |
866 | and dword[draw_mode], not (1 shl bit_faces) ;¢ëª«îç ¥¬ ०¨¬ à¨á®¢ ¨ï £à ¥© (çâ®-¡ë ¥ ¬¥è «¨) |
892 | and dword[draw_mode], not ((1 shl bit_faces)+(1 shl bit_faces_mat)) ;¢ëª«îç ¥¬ ०¨¬ë à¨á®¢ ¨ï, ª®â®àë¥ ¬®£ãâ ¬¥è âì |
867 | call update_obj |
893 | call update_obj |
Line 868... | Line 894... | ||
868 | ret |
894 | ret |
869 | 895 | ||
870 | ;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ¨ï ª ઠáëå £à ¥© |
896 | ;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ¨ï ª ઠáëå £à ¥© |
871 | align 4 |
897 | align 4 |
872 | mnu_edges_on: |
898 | mnu_edges_on: |
873 | or dword[draw_mode], 1 shl bit_faces |
899 | or dword[draw_mode], 1 shl bit_faces |
874 | and dword[draw_mode], not ((1 shl bit_vertexes)+(1 shl bit_faces_fill)) |
900 | and dword[draw_mode], not ((1 shl bit_vertexes)+(1 shl bit_faces_fill)+(1 shl bit_faces_mat)) |
Line 875... | Line 901... | ||
875 | call update_obj |
901 | call update_obj |
876 | ret |
902 | ret |
877 | 903 | ||
878 | ;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ¨ï ᯫ®èëå £à ¥© |
904 | ;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ¨ï ᯫ®èëå £à ¥© |
879 | align 4 |
905 | align 4 |
880 | mnu_faces_on: |
906 | mnu_faces_on: |
881 | or dword[draw_mode], (1 shl bit_faces)+(1 shl bit_faces_fill) |
907 | or dword[draw_mode], (1 shl bit_faces)+(1 shl bit_faces_fill) |
Line 882... | Line 908... | ||
882 | and dword[draw_mode], not (1 shl bit_vertexes) |
908 | and dword[draw_mode], not ((1 shl bit_vertexes)+(1 shl bit_faces_mat)) |
883 | call update_obj |
909 | call update_obj |
Line 906... | Line 932... | ||
906 | stdcall draw_3d, o3d |
932 | stdcall draw_3d, o3d |
907 | ret |
933 | ret |
Line 908... | Line 934... | ||
908 | 934 | ||
Line -... | Line 935... | ||
- | 935 | else |
|
- | 936 | ||
- | 937 | ;¢ª«îç ¥¬ ०¨¬ à¨á®¢ ¨ï ᯫ®èëå £à ¥© |
|
- | 938 | align 4 |
|
- | 939 | mnu_faces_mat: |
|
- | 940 | or dword[draw_mode], (1 shl bit_faces_mat) |
|
- | 941 | call update_obj |
|
909 | else |
942 | ret |
910 | 943 | ||
911 | align 4 |
944 | align 4 |
912 | update_obj: |
945 | update_obj: |
913 | push eax ebx |
946 | push eax ebx |
914 | stdcall [tl_node_get_data],tree1 |
947 | stdcall [tl_node_get_data],tree1 |
915 | cmp eax,0 |
948 | cmp eax,0 |
916 | je @f |
949 | je @f |
917 | mov ebx,dword[eax] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ë¡à ®£® ¡«®ª ®â®á¨â¥«ì® ç « ä ©« |
950 | mov ebx,dword[eax] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ë¡à ®£® ¡«®ª ®â®á¨â¥«ì® ç « ä ©« |
918 | add ebx,dword[open_file_data] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ ¯ ¬ï⨠|
951 | add ebx,dword[open_file_data] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ ¯ ¬ï⨠|
919 | cmp word[ebx],CHUNK_OBJBLOCK |
952 | cmp word[ebx],CHUNK_OBJBLOCK |
920 | jne @f |
953 | jne @f |
921 | add eax,14 ;14=list_offs_obj3d |
954 | add eax,list_offs_obj3d |
922 | stdcall draw_3d, eax |
955 | stdcall draw_3d,eax |
923 | @@: |
956 | @@: |
Line -... | Line 957... | ||
- | 957 | pop ebx eax |
|
- | 958 | ret |
|
- | 959 | ||
- | 960 | ;input: |
|
- | 961 | ; p_mat - 㪠§ â¥«ì ¤ ë¥ ¯à¥¤ë¤ã饣® ¬ â¥à¨ « |
|
- | 962 | align 4 |
|
- | 963 | proc found_mat_faces uses ebx, p_mat:dword |
|
- | 964 | mov eax,[p_mat] |
|
- | 965 | add eax,[eax+2] |
|
- | 966 | cmp word[eax],CHUNK_FACEMAT |
|
- | 967 | je @f |
|
- | 968 | xor eax,eax |
|
- | 969 | @@: |
|
- | 970 | ret |
|
- | 971 | endp |
|
- | 972 | ||
- | 973 | align 4 |
|
- | 974 | proc get_mat_color uses ebx ecx edx edi esi, p_mat:dword |
|
- | 975 | stdcall [tl_node_poi_get_info], tree1,0 |
|
- | 976 | mov ecx,eax |
|
- | 977 | .cycle_0: |
|
- | 978 | cmp ecx,0 |
|
- | 979 | je .cycle_0_end |
|
- | 980 | stdcall [tl_node_poi_get_data], tree1,ecx |
|
- | 981 | mov ebx,[eax] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ë¡à ®£® ¡«®ª |
|
- | 982 | add ebx,[open_file_data] |
|
- | 983 | cmp word[ebx],CHUNK_MATERIAL |
|
- | 984 | jne .end_add_p3 |
|
- | 985 | add eax,list_offs_obj3d |
|
- | 986 | mov esi,[eax+offs_mat_name] |
|
- | 987 | cmp esi,0 |
|
- | 988 | jne @f |
|
- | 989 | ;init material |
|
- | 990 | stdcall mat_init,eax,ebx |
|
- | 991 | mov esi,[eax+offs_mat_name] |
|
- | 992 | @@: |
|
- | 993 | mov edi,[p_mat] |
|
- | 994 | mov eax,5 |
|
- | 995 | add edi,eax |
|
- | 996 | align 4 |
|
- | 997 | @@: |
|
- | 998 | cmp al,0 |
|
- | 999 | je .found |
|
- | 1000 | lodsb |
|
- | 1001 | inc edi |
|
- | 1002 | cmp byte[edi],al |
|
- | 1003 | je @b |
|
- | 1004 | .end_add_p3: |
|
- | 1005 | stdcall [tl_node_poi_get_next_info], tree1,ecx |
|
- | 1006 | mov ecx,eax ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã |
|
- | 1007 | jmp .cycle_0 |
|
- | 1008 | .cycle_0_end: |
|
- | 1009 | ||
- | 1010 | .no_found: |
|
- | 1011 | xor eax,eax |
|
- | 1012 | jmp .end_f |
|
- | 1013 | .found: |
|
- | 1014 | stdcall [tl_node_poi_get_data], tree1,ecx |
|
- | 1015 | add eax,list_offs_obj3d |
|
- | 1016 | mov eax,[eax+offs_mat_col_diffuse] |
|
- | 1017 | .end_f: |
|
- | 1018 | ret |
|
- | 1019 | endp |
|
- | 1020 | ||
- | 1021 | align 4 |
|
- | 1022 | proc draw_3d_faces_color o_data:dword, p_mat:dword, color:dword |
|
- | 1023 | pushad |
|
- | 1024 | stdcall [glPolygonMode], GL_FRONT_AND_BACK,GL_FILL |
|
- | 1025 | stdcall [glColor3ub],[color+2],[color+1],[color] |
|
- | 1026 | stdcall [glBegin],GL_TRIANGLES |
|
- | 1027 | mov edi,[o_data] |
|
- | 1028 | mov esi,[p_mat] |
|
- | 1029 | add esi,6 |
|
- | 1030 | @@: |
|
- | 1031 | lodsb |
|
- | 1032 | cmp al,0 |
|
- | 1033 | jne @b |
|
- | 1034 | movzx ecx,word[esi] ;ecx - ç¨á«® £à ¥© á ¤ ë¬ ¬ â¥à¨ «®¬ |
|
- | 1035 | mov edx,[edi+offs_obj_poi_data] |
|
- | 1036 | align 4 |
|
- | 1037 | @@: |
|
- | 1038 | add esi,2 |
|
- | 1039 | ;word[esi] - ®¬¥à âà¥ã£®«ì¨ª |
|
- | 1040 | movzx ebx,word[esi] |
|
- | 1041 | shl ebx,3 |
|
- | 1042 | add ebx,[edi+offs_obj_tri_data] |
|
- | 1043 | ||
- | 1044 | movzx eax,word[ebx] ;1-ï ¢¥àè¨ |
|
- | 1045 | imul eax,12 ;float(x,y,z) |
|
- | 1046 | add eax,edx |
|
- | 1047 | stdcall [glVertex3f], [eax],[eax+4],[eax+8] |
|
- | 1048 | ||
- | 1049 | movzx eax,word[ebx+2] ;2-ï ¢¥àè¨ |
|
- | 1050 | imul eax,12 ;float(x,y,z) |
|
- | 1051 | add eax,edx |
|
- | 1052 | stdcall [glVertex3f], [eax],[eax+4],[eax+8] |
|
- | 1053 | ||
- | 1054 | movzx eax,word[ebx+4] ;3-ï ¢¥àè¨ |
|
- | 1055 | imul eax,12 ;float(x,y,z) |
|
- | 1056 | add eax,edx |
|
- | 1057 | stdcall [glVertex3f], [eax],[eax+4],[eax+8] |
|
- | 1058 | ||
- | 1059 | dec ecx |
|
- | 1060 | jnz @b |
|
- | 1061 | stdcall [glEnd] |
|
- | 1062 | ||
- | 1063 | .end_f: |
|
- | 1064 | popad |
|
924 | pop ebx eax |
1065 | ret |
Line 925... | Line 1066... | ||
925 | ret |
1066 | endp |
926 | 1067 | ||
927 | end if |
1068 | end if |