Subversion Repositories Kolibri OS

Rev

Rev 6510 | Rev 6889 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6510 Rev 6513
Line 61... Line 61...
61
offs_mat_col_ambient equ 4
61
offs_mat_col_ambient equ 4
62
offs_mat_col_diffuse equ 8
62
offs_mat_col_diffuse equ 8
63
offs_mat_col_specular equ 12
63
offs_mat_col_specular equ 12
Line 64... Line 64...
64
 
64
 
65
bit_vertexes equ 0
65
bit_vertexes equ 0
66
bit_faces equ 1
66
bit_faces equ 1 ;£à ­¨ à¨áãîâáï ª®­âãà ¬¨
67
bit_faces_fill equ 2
67
bit_faces_fill equ 2 ;£à ­¨ á § «¨¢ª®©
68
bit_light equ 3
68
bit_light equ 3
-
 
69
bit_faces_mat equ 4 ;£à ­¨ á 梥⮬ ¬ â¥à¨ « 
Line 69... Line 70...
69
bit_faces_mat equ 4
70
bit_smooth equ 5 ;£à ­¨ ᮠᣫ ¦¨¢ ­¨¥¬
70
 
71
 
71
ini_name db 'info3ds.ini',0
72
ini_name db 'info3ds.ini',0
72
ini_sec_w3d db 'Window 3d',0
73
ini_sec_w3d db 'Window 3d',0
73
key_dv  db 'draw_vertices',0
74
key_dv  db 'draw_vertices',0
-
 
75
key_df  db 'draw_faces',0
74
key_df  db 'draw_faces',0
76
key_dff db 'draw_faces_fill',0
-
 
77
key_dfm db 'draw_faces_material',0
75
key_dff db 'draw_faces_fill',0
78
key_dl  db 'draw_light',0
76
key_dl  db 'draw_light',0
79
key_ds  db 'draw_smooth',0
77
key_ox  db 'col_ox',0
80
key_ox  db 'col_ox',0
78
key_oy  db 'col_oy',0
81
key_oy  db 'col_oy',0
79
key_oz  db 'col_oz',0
82
key_oz  db 'col_oz',0
Line 344... Line 347...
344
	ret
347
	ret
345
endp
348
endp
Line 346... Line 349...
346
 
349
 
347
;description:
350
;description:
-
 
351
; ¢ëç¨á«¥­¨¥ ­®à¬ «¥© ¤«ï £à ­¥© ¯® 3-¬ ¢¥à設 ¬
348
; ¢ëç¨á«¥­¨¥ ­®à¬ «¥© ¤«ï £à ­¥© ¯® 3-¬ ¢¥à設 ¬
352
;   â ª¦¥ ­®à¬ «¥© ¤«ï ᣫ ¦¨¢ ­¨ï ª ¢¥à設 ¬
349
align 4
353
align 4
350
proc obj_set_normals, o_data:dword
354
proc obj_set_normals, o_data:dword
351
locals
355
locals
352
	tbl1 rd 9 ;ebp-72
356
	tbl1 rd 9 ;ebp-72
Line 447... Line 451...
447
			fld dword[esi+4]
451
			fld dword[esi+4]
448
			fmul dword[esi+24]
452
			fmul dword[esi+24]
449
			fsubp
453
			fsubp
450
			fstp dword[eax+8] ;set normal.c
454
			fstp dword[eax+8] ;set normal.c
Line -... Line 455...
-
 
455
 
-
 
456
			stdcall V3_Norm,eax
451
			
457
 
452
			add edx,8 ;à §¬¥à âà¥ã£®«ì­¨ª  = (3 ¢¥à設ë (¯® 2¡) + ᢮©á⢠ (2¡))
458
			add edx,8 ;à §¬¥à âà¥ã£®«ì­¨ª  = (3 ¢¥à設ë (¯® 2¡) + ᢮©á⢠ (2¡))
453
			add eax,12
459
			add eax,12
454
			dec ebx
460
			dec ebx
-
 
461
			jnz @b
-
 
462
 
-
 
463
		;­®à¬ «¨ ª ¢¥à設 ¬
-
 
464
		mov ebx,[o_data]
-
 
465
		mov ecx,[ebx+offs_obj_poi_count]
-
 
466
		mov [ebx+offs_obj_normals_poi_count],ecx
-
 
467
		cmp ecx,0
-
 
468
		je .end
-
 
469
		imul ecx,12
-
 
470
		stdcall mem.Alloc,ecx
-
 
471
		mov [ebx+offs_obj_normals_poi_data],eax
-
 
472
 
-
 
473
		mov edi,eax
-
 
474
		mov eax,0.0
-
 
475
		shr ecx,2
-
 
476
		rep stosd ;®ç¨á⪠ 0-¬¨ float
-
 
477
 
-
 
478
		mov edx,[ebx+offs_obj_tri_count]
-
 
479
		mov edi,[ebx+offs_obj_tri_data]
-
 
480
		mov eax,[ebx+offs_obj_normals_tri_data]
-
 
481
		mov ecx,[ebx+offs_obj_poi_data]
-
 
482
		mov ebx,[ebx+offs_obj_normals_poi_data]
-
 
483
align 4
-
 
484
		.cycle_0: ;¯® £à ­ï¬
-
 
485
			movzx esi,word[edi] ;1-ï ¢¥à設 
-
 
486
			imul esi,12
-
 
487
			add esi,ecx
-
 
488
			push esi
-
 
489
			movzx esi,word[edi+2] ;2-ï ¢¥à設 
-
 
490
			imul esi,12
-
 
491
			add esi,ecx
-
 
492
			push esi
-
 
493
			movzx esi,word[edi+4] ;3-ï ¢¥à設 
-
 
494
			imul esi,12
-
 
495
			add esi,ecx
-
 
496
			push esi
-
 
497
 
-
 
498
			movzx esi,word[edi] ;1-ï ¢¥à設 
-
 
499
			imul esi,12
-
 
500
			add esi,ebx
-
 
501
			push esi
-
 
502
			movzx esi,word[edi+2] ;2-ï ¢¥à設 
-
 
503
			imul esi,12
-
 
504
			add esi,ebx
-
 
505
			push esi
-
 
506
			movzx esi,word[edi+4] ;3-ï ¢¥à設 
-
 
507
			imul esi,12
-
 
508
			add esi,ebx
-
 
509
			push esi
-
 
510
 
-
 
511
			stdcall poi_normal_add,eax
-
 
512
 
-
 
513
			add edi,8
-
 
514
			add eax,12
-
 
515
			dec edx
-
 
516
			jnz .cycle_0
455
			jnz @b
517
		.cycle_0_end:
456
	.end:
518
	.end:
457
popad
519
popad
458
	ret
520
	ret
Line -... Line 521...
-
 
521
endp
-
 
522
 
-
 
523
;input:
-
 
524
; norm_tr - 㪠§ â¥«ì ­  ­®à¬ «ì ª £à ­¨
-
 
525
; n1, n2, n3 - 㪠§ â¥«¨ ­  ­®à¬ «¨ ¢¥à設
-
 
526
; c1, c2, c3 - 㪠§ â¥«¨ ­  ª®®à¤¨­ âë ¢¥à設
-
 
527
align 4
-
 
528
proc poi_normal_add uses eax ebx,\
-
 
529
	norm_tr:dword, n1:dword, n2:dword, n3:dword, c1:dword, c2:dword, c3:dword
-
 
530
 
-
 
531
	mov ebx,[norm_tr]
-
 
532
 
-
 
533
	mov eax,[n1]
-
 
534
	fld dword[eax]
-
 
535
	fadd dword[ebx]
-
 
536
	fstp dword[eax]
-
 
537
	fld dword[eax+4]
-
 
538
	fadd dword[ebx+4]
-
 
539
	fstp dword[eax+4]
-
 
540
	fld dword[eax+8]
-
 
541
	fadd dword[ebx+8]
-
 
542
	fstp dword[eax+8]
-
 
543
 
-
 
544
	mov eax,[n2]
-
 
545
	fld dword[eax]
-
 
546
	fadd dword[ebx]
-
 
547
	fstp dword[eax]
-
 
548
	fld dword[eax+4]
-
 
549
	fadd dword[ebx+4]
-
 
550
	fstp dword[eax+4]
-
 
551
	fld dword[eax+8]
-
 
552
	fadd dword[ebx+8]
-
 
553
	fstp dword[eax+8]
-
 
554
 
-
 
555
	mov eax,[n3]
-
 
556
	fld dword[eax]
-
 
557
	fadd dword[ebx]
-
 
558
	fstp dword[eax]
-
 
559
	fld dword[eax+4]
-
 
560
	fadd dword[ebx+4]
-
 
561
	fstp dword[eax+4]
-
 
562
	fld dword[eax+8]
-
 
563
	fadd dword[ebx+8]
-
 
564
	fstp dword[eax+8]
-
 
565
 
-
 
566
	ret
-
 
567
endp
-
 
568
 
-
 
569
;description:
-
 
570
; normalize vector
-
 
571
align 4
-
 
572
proc V3_Norm uses eax ebx, a:dword
-
 
573
	mov ebx,[a]
-
 
574
	fld dword[ebx]
-
 
575
	fmul st0,st0
-
 
576
	fld dword[ebx+4]
-
 
577
	fmul st0,st0
-
 
578
	faddp
-
 
579
	fld dword[ebx+8]
-
 
580
	fmul st0,st0
-
 
581
	faddp
-
 
582
	fsqrt ;st0 = sqrt(a.X^2 +a.Y^2 +a.Z^2)
-
 
583
	ftst
-
 
584
	fstsw ax
-
 
585
	sahf
-
 
586
	je .r1 ;if (sqrt(...)==0) return 1
-
 
587
		fld dword[ebx] ;offs_X = 0
-
 
588
		fdiv st0,st1
-
 
589
		fstp dword[ebx] ;a.X/=sqrt(...)
-
 
590
		fld dword[ebx+4]
-
 
591
		fdiv st0,st1
-
 
592
		fstp dword[ebx+4] ;a.Y/=sqrt(...)
-
 
593
		fld dword[ebx+8]
-
 
594
		fdiv st0,st1
-
 
595
		fstp dword[ebx+8] ;a.Z/=sqrt(...)
-
 
596
	.r1:
-
 
597
	ffree st0
-
 
598
	fincstp
-
 
599
	ret
459
endp
600
endp
460
 
601
 
461
;­ áâனª  áâàãªâãàë 3d ®¡ê¥ªâ 
602
;­ áâனª  áâàãªâãàë 3d ®¡ê¥ªâ 
462
align 4
603
align 4
463
proc obj_init, o_data:dword
604
proc obj_init, o_data:dword
Line 676... Line 817...
676
 
817
 
677
;à¨á®¢ ­¨¥ â®ç¥ª ¢ 3d
818
;à¨á®¢ ­¨¥ â®ç¥ª ¢ 3d
678
align 4
819
align 4
679
proc draw_3d uses eax ebx ecx edi, o_data:dword
820
proc draw_3d uses eax ebx ecx edi, o_data:dword
680
	mov edi,[o_data]
-
 
681
if 0 ;debug
-
 
682
	stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT
-
 
683
	mov eax,[edi+offs_obj_poi_data]
-
 
684
	stdcall convert_int_to_str, txt_select_vert.count,16
-
 
685
	stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_select_vert,5,3,[color_select]
-
 
686
	stdcall [kosglSwapBuffers]
-
 
687
	jmp .end_f
-
 
688
end if
821
	mov edi,[o_data]
689
	cmp dword[edi+offs_obj_poi_count],2
822
	cmp dword[edi+offs_obj_poi_count],2
690
	jl .end_f
823
	jl .end_f
691
	stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;®ç¨á⨬ ¡ãä¥à æ¢¥â  ¨ £«ã¡¨­ë
824
	stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;®ç¨á⨬ ¡ãä¥à æ¢¥â  ¨ £«ã¡¨­ë
692
	stdcall [glPushMatrix]
825
	stdcall [glPushMatrix]
Line 710... Line 843...
710
	bt dword[draw_mode],bit_faces_mat
843
	bt dword[draw_mode],bit_faces_mat
711
	jnc @f
844
	jnc @f
712
		mov eax,[edi+offs_obj_mat1_data]
845
		mov eax,[edi+offs_obj_mat1_data]
713
		.b_found:
846
		.b_found:
714
		cmp eax,0
847
		cmp eax,0
715
		je .end_triangles
848
		je .end_points
716
			mov ebx,eax
849
			mov ebx,eax
717
			stdcall get_mat_color, eax
850
			stdcall get_mat_color, eax
718
			stdcall draw_3d_faces_color, edi,ebx,eax
851
			stdcall draw_3d_faces_color, edi,ebx,eax
719
			stdcall found_mat_faces, ebx
852
			stdcall found_mat_faces, ebx
720
		jmp .b_found
853
		jmp .b_found
721
	@@:
854
	@@:
722
end if
855
end if
Line -... Line 856...
-
 
856
 
-
 
857
	;à¨á®¢ ­¨¥ £à ­¥© ¡¥§ 梥⮢ ¬ â¥à¨ «®¢
-
 
858
	bt dword[draw_mode],bit_faces
-
 
859
	jnc .end_triangles
-
 
860
	cmp dword[edi+offs_obj_tri_count],0
-
 
861
	je .end_triangles
-
 
862
	cmp dword[edi+offs_obj_poi_count],0
-
 
863
	je .end_triangles
-
 
864
		bt dword[draw_mode],bit_faces_fill
-
 
865
		jc @f
-
 
866
			push GL_LINE
-
 
867
			jmp .end_0
-
 
868
		@@:
-
 
869
			push GL_FILL
-
 
870
		.end_0:
-
 
871
		stdcall [glPolygonMode], GL_FRONT_AND_BACK ;mode - 㦥 ¢ á⥪¥
-
 
872
		stdcall [glColor3ub],[color_face+2],[color_face+1],[color_face]
-
 
873
		
-
 
874
		bt dword[draw_mode],bit_smooth
-
 
875
		jnc .triangles_flat
-
 
876
		bt dword[draw_mode],bit_light
-
 
877
		jnc .triangles_flat
-
 
878
			;triangles smooth
-
 
879
			stdcall [glBegin],GL_TRIANGLES
-
 
880
			mov eax,[edi+offs_obj_tri_data]
-
 
881
			mov ecx,[edi+offs_obj_tri_count]
-
 
882
			mov edx,[edi+offs_obj_normals_tri_data]
-
 
883
align 4
-
 
884
			@@:
-
 
885
				movzx ebx,word[eax] ;1-ï ¢¥à設 
-
 
886
				imul ebx,12
-
 
887
					add ebx,[edi+offs_obj_normals_poi_data]
-
 
888
					stdcall [glNormal3fv], ebx
-
 
889
					sub ebx,[edi+offs_obj_normals_poi_data]
-
 
890
				add ebx,[edi+offs_obj_poi_data]
-
 
891
				stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
-
 
892
				movzx ebx,word[eax+2] ;2-ï ¢¥à設 
-
 
893
				imul ebx,12
-
 
894
					add ebx,[edi+offs_obj_normals_poi_data]
-
 
895
					stdcall [glNormal3fv], ebx
-
 
896
					sub ebx,[edi+offs_obj_normals_poi_data]
-
 
897
				add ebx,[edi+offs_obj_poi_data]
-
 
898
				stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
-
 
899
				movzx ebx,word[eax+4] ;3-ï ¢¥à設 
-
 
900
				imul ebx,12
-
 
901
					add ebx,[edi+offs_obj_normals_poi_data]
-
 
902
					stdcall [glNormal3fv], ebx
-
 
903
					sub ebx,[edi+offs_obj_normals_poi_data]
-
 
904
				add ebx,[edi+offs_obj_poi_data]
-
 
905
				stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
-
 
906
				add eax,8 ;à §¬¥à âà¥ã£®«ì­¨ª  = (3 ¢¥à設ë (¯® 2¡) + ᢮©á⢠ (2¡))
-
 
907
				dec ecx
-
 
908
				jnz @b
-
 
909
			stdcall [glEnd]
-
 
910
			jmp .end_points
-
 
911
 
-
 
912
		.triangles_flat:
-
 
913
		stdcall [glBegin],GL_TRIANGLES
-
 
914
		mov eax,[edi+offs_obj_tri_data]
-
 
915
		mov ecx,[edi+offs_obj_tri_count]
-
 
916
		mov edx,[edi+offs_obj_normals_tri_data]
-
 
917
align 4
-
 
918
		@@:
-
 
919
			;
-
 
920
			bt dword[draw_mode],bit_light
-
 
921
			jnc .norm1
-
 
922
				stdcall [glNormal3fv], edx
-
 
923
				add edx,12
-
 
924
			.norm1:
-
 
925
			movzx ebx,word[eax] ;1-ï ¢¥à設 
-
 
926
			imul ebx,12
-
 
927
			add ebx,[edi+offs_obj_poi_data]
-
 
928
			stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
-
 
929
			movzx ebx,word[eax+2] ;2-ï ¢¥à設 
-
 
930
			imul ebx,12
-
 
931
			add ebx,[edi+offs_obj_poi_data]
-
 
932
			stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
-
 
933
			movzx ebx,word[eax+4] ;3-ï ¢¥à設 
-
 
934
			imul ebx,12
-
 
935
			add ebx,[edi+offs_obj_poi_data]
-
 
936
			stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
-
 
937
			add eax,8 ;à §¬¥à âà¥ã£®«ì­¨ª  = (3 ¢¥à設ë (¯® 2¡) + ᢮©á⢠ (2¡))
-
 
938
			dec ecx
-
 
939
			jnz @b
-
 
940
		stdcall [glEnd]
-
 
941
		jmp .end_points
-
 
942
	.end_triangles:
723
 
943
 
724
	;à¨á®¢ ­¨¥ â®ç¥ª
944
	;à¨á®¢ ­¨¥ â®ç¥ª
725
	bt dword[draw_mode],bit_vertexes
945
	bt dword[draw_mode],bit_vertexes
726
	jnc .end_points
946
	jnc .end_points
727
		stdcall [glColor3ub],[color_vert+2],[color_vert+1],[color_vert]
947
		stdcall [glColor3ub],[color_vert+2],[color_vert+1],[color_vert]
728
		stdcall [glBegin],GL_POINTS
948
		stdcall [glBegin],GL_POINTS
729
		mov eax,[edi+offs_obj_poi_data]
949
		mov eax,[edi+offs_obj_poi_data]
-
 
950
		mov ebx,[edi+offs_obj_poi_count]
-
 
951
		mov edx,[edi+offs_obj_normals_poi_data]
730
		mov ebx,[edi+offs_obj_poi_count]
952
align 4
-
 
953
		@@:
-
 
954
			bt dword[draw_mode],bit_light
-
 
955
			jnc .norm0
-
 
956
				stdcall [glNormal3fv], edx
-
 
957
				add edx,12
731
		@@:
958
			.norm0:
732
			stdcall [glVertex3f], [eax],[eax+4],[eax+8]
959
			stdcall [glVertex3f], [eax],[eax+4],[eax+8]
733
			add eax,12
960
			add eax,12
734
			dec ebx
961
			dec ebx
735
			jnz @b
962
			jnz @b
Line 767... Line 994...
767
	cmp dword[obj_poi_sel_c],0
994
	cmp dword[obj_poi_sel_c],0
768
	je .end_select
995
	je .end_select
769
		mov ecx,dword[obj_poi_sel_c]
996
		mov ecx,dword[obj_poi_sel_c]
770
		stdcall [glColor3ub],[color_select+2],[color_select+1],[color_select]
997
		stdcall [glColor3ub],[color_select+2],[color_select+1],[color_select]
771
		stdcall dword[tl_node_poi_get_info], tree3,0
998
		stdcall dword[tl_node_poi_get_info], tree3,0
-
 
999
align 4
772
		@@:
1000
		@@:
773
			cmp eax,0
1001
			cmp eax,0
774
			je .end_select
1002
			je .end_select
775
			mov ebx,eax
1003
			mov ebx,eax
776
			cmp word[ebx],ID_ICON_POINT_SEL
1004
			cmp word[ebx],ID_ICON_POINT_SEL
Line 787... Line 1015...
787
			stdcall dword[tl_node_poi_get_next_info], tree3,ebx
1015
			stdcall dword[tl_node_poi_get_next_info], tree3,ebx
788
			jmp @b
1016
			jmp @b
789
    .end_select:
1017
    .end_select:
790
end if
1018
end if
Line 791... Line -...
791
 
-
 
792
	;à¨á®¢ ­¨¥ £à ­¥©
-
 
793
	bt dword[draw_mode],bit_faces
-
 
794
	jnc .end_triangles
-
 
795
	cmp dword[edi+offs_obj_tri_count],0
-
 
796
	je .end_triangles
-
 
797
	cmp dword[edi+offs_obj_poi_count],0
-
 
798
	je .end_triangles
-
 
799
		bt dword[draw_mode],bit_faces_fill
-
 
800
		jc @f
-
 
801
			push GL_LINE
-
 
802
			jmp .end_0
-
 
803
		@@:
-
 
804
			push GL_FILL
-
 
805
		.end_0:
-
 
806
		stdcall [glPolygonMode], GL_FRONT_AND_BACK ;mode - 㦥 ¢ á⥪¥
-
 
807
		stdcall [glColor3ub],[color_face+2],[color_face+1],[color_face]
-
 
808
		stdcall [glBegin],GL_TRIANGLES
-
 
809
		mov eax,[edi+offs_obj_tri_data]
-
 
810
		mov ecx,[edi+offs_obj_tri_count]
-
 
811
		mov edx,[edi+offs_obj_normals_tri_data]
-
 
812
		@@:
-
 
813
			;
-
 
814
			bt dword[draw_mode],bit_light
-
 
815
			jnc .norm
-
 
816
				stdcall [glNormal3fv], edx
-
 
817
				add edx,12
-
 
818
			.norm:
-
 
819
			;
-
 
820
			movzx ebx,word[eax] ;1-ï ¢¥à設 
-
 
821
			imul ebx,12
-
 
822
			add ebx,[edi+offs_obj_poi_data]
-
 
823
			stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
-
 
824
			movzx ebx,word[eax+2] ;2-ï ¢¥à設 
-
 
825
			imul ebx,12
-
 
826
			add ebx,[edi+offs_obj_poi_data]
-
 
827
			stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
-
 
828
			movzx ebx,word[eax+4] ;3-ï ¢¥à設 
-
 
829
			imul ebx,12
-
 
830
			add ebx,[edi+offs_obj_poi_data]
-
 
831
			stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
-
 
832
			add eax,8 ;à §¬¥à âà¥ã£®«ì­¨ª  = (3 ¢¥à設ë (¯® 2¡) + ᢮©á⢠ (2¡))
-
 
833
			dec ecx
-
 
834
			jnz @b
-
 
835
		stdcall [glEnd]
-
 
836
	.end_triangles:
-
 
837
 
1019
 
838
	stdcall [glPopMatrix]
1020
	stdcall [glPopMatrix]
839
if version_edit eq 1
1021
if version_edit eq 1
840
	cmp dword[obj_poi_sel_c],0
1022
	cmp dword[obj_poi_sel_c],0
841
	je @f
1023
	je @f
Line 895... Line 1077...
895
	xor dword[draw_mode], 1 shl bit_light
1077
	xor dword[draw_mode], 1 shl bit_light
896
	call update_obj
1078
	call update_obj
897
	ret
1079
	ret
Line 898... Line 1080...
898
 
1080
 
-
 
1081
align 4
-
 
1082
mnu_smooth_on_off:
-
 
1083
	xor dword[draw_mode], 1 shl bit_smooth
-
 
1084
	call update_obj
-
 
1085
	ret
-
 
1086
 
899
align 4
1087
align 4
900
mnu_reset_settings:
1088
mnu_reset_settings:
901
	mov dword[angle_x],0.0
1089
	mov dword[angle_x],0.0
902
	mov dword[angle_y],0.0
1090
	mov dword[angle_y],0.0
903
	mov dword[angle_z],0.0
1091
	mov dword[angle_z],0.0
Line 1011... Line 1199...
1011
		lodsb
1199
		lodsb
1012
		cmp al,0
1200
		cmp al,0
1013
		jne @b
1201
		jne @b
1014
	movzx ecx,word[esi] ;ecx - ç¨á«® £à ­¥© á ¤ ­­ë¬ ¬ â¥à¨ «®¬
1202
	movzx ecx,word[esi] ;ecx - ç¨á«® £à ­¥© á ¤ ­­ë¬ ¬ â¥à¨ «®¬
1015
	mov edx,[edi+offs_obj_poi_data]
1203
	mov edx,[edi+offs_obj_poi_data]
-
 
1204
 
-
 
1205
	bt dword[draw_mode],bit_smooth
-
 
1206
	jnc @f
-
 
1207
	bt dword[draw_mode],bit_light
-
 
1208
	jnc @f
-
 
1209
align 4
-
 
1210
	.cycle_0:
-
 
1211
		add esi,2
-
 
1212
		;word[esi] - ­®¬¥à âà¥ã£®«ì­¨ª 
-
 
1213
		movzx ebx,word[esi]
-
 
1214
 
-
 
1215
		shl ebx,3
-
 
1216
		add ebx,[edi+offs_obj_tri_data]
-
 
1217
	
-
 
1218
		movzx eax,word[ebx] ;1-ï ¢¥à設 
-
 
1219
		imul eax,12 ;float(x,y,z)
-
 
1220
			add eax,[edi+offs_obj_normals_poi_data]
-
 
1221
			stdcall [glNormal3fv], eax
-
 
1222
			sub eax,[edi+offs_obj_normals_poi_data]
-
 
1223
		add eax,edx
-
 
1224
		stdcall [glVertex3f], [eax],[eax+4],[eax+8]
-
 
1225
 
-
 
1226
		movzx eax,word[ebx+2] ;2-ï ¢¥à設 
-
 
1227
		imul eax,12 ;float(x,y,z)
-
 
1228
			add eax,[edi+offs_obj_normals_poi_data]
-
 
1229
			stdcall [glNormal3fv], eax
-
 
1230
			sub eax,[edi+offs_obj_normals_poi_data]
-
 
1231
		add eax,edx
-
 
1232
		stdcall [glVertex3f], [eax],[eax+4],[eax+8]
-
 
1233
 
-
 
1234
		movzx eax,word[ebx+4] ;3-ï ¢¥à設 
-
 
1235
		imul eax,12 ;float(x,y,z)
-
 
1236
			add eax,[edi+offs_obj_normals_poi_data]
-
 
1237
			stdcall [glNormal3fv], eax
-
 
1238
			sub eax,[edi+offs_obj_normals_poi_data]
-
 
1239
		add eax,edx
-
 
1240
		stdcall [glVertex3f], [eax],[eax+4],[eax+8]
-
 
1241
		
-
 
1242
		dec ecx
-
 
1243
		jnz .cycle_0
-
 
1244
	stdcall [glEnd]
-
 
1245
	jmp .end_f
-
 
1246
 
1016
align 4
1247
align 4
1017
	@@:
1248
	@@:
1018
		add esi,2
1249
		add esi,2
1019
		;word[esi] - ­®¬¥à âà¥ã£®«ì­¨ª 
1250
		;word[esi] - ­®¬¥à âà¥ã£®«ì­¨ª 
1020
		movzx ebx,word[esi]
1251
		movzx ebx,word[esi]