Subversion Repositories Kolibri OS

Rev

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

Rev 5948 Rev 6022
Line 211... Line 211...
211
			cmp edx,0
211
			cmp edx,0
212
			jg .new_point
212
			jg .new_point
213
			stdcall dword[tl_cur_beg], tree3
213
			stdcall dword[tl_cur_beg], tree3
214
	.no_object:
214
	.no_object:
215
	call obj_set_sizes
215
	call obj_set_sizes
-
 
216
	call obj_set_normals
216
	edit_boxes_set_sys_color edit1,editboxes_end,sc ;ãáâ ­®¢ª  á¨á⥬­ëå 梥⮢
217
	edit_boxes_set_sys_color edit1,editboxes_end,sc ;ãáâ ­®¢ª  á¨á⥬­ëå 梥⮢
217
	stdcall [edit_box_set_text], edit1, txt_q
218
	stdcall [edit_box_set_text], edit1, txt_q
218
	stdcall [edit_box_set_text], edit2, txt_q
219
	stdcall [edit_box_set_text], edit2, txt_q
219
	stdcall [edit_box_set_text], edit3, txt_q
220
	stdcall [edit_box_set_text], edit3, txt_q
220
	mov eax,0xc0c0c0
221
	mov eax,0xc0c0c0
Line 331... Line 332...
331
	mov dword[obj_poi_data],0
332
	mov dword[obj_poi_data],0
332
	mov dword[obj_poi_count],0
333
	mov dword[obj_poi_count],0
333
	mov dword[obj_poi_sel_c],0
334
	mov dword[obj_poi_sel_c],0
334
	mov dword[obj_tri_data],0
335
	mov dword[obj_tri_data],0
335
	mov dword[obj_tri_count],0
336
	mov dword[obj_tri_count],0
-
 
337
	mov dword[obj_normals_tri_count],0
-
 
338
	mov dword[obj_normals_poi_count],0
-
 
339
	stdcall mem.Free,[obj_normals_tri_data]
-
 
340
	stdcall mem.Free,[obj_normals_poi_data]
-
 
341
	mov dword[obj_normals_tri_data],0
-
 
342
	mov dword[obj_normals_poi_data],0
336
	ret
343
	ret
Line 337... Line 344...
337
 
344
 
338
;¯®¨áª ¤ ­­ëå
345
;¯®¨áª ¤ ­­ëå
339
;input:
346
;input:
Line 541... Line 548...
541
		fstp dword[obj_x_scale]
548
		fstp dword[obj_x_scale]
542
	.end:
549
	.end:
543
	ret
550
	ret
544
endp
551
endp
Line -... Line 552...
-
 
552
 
-
 
553
;ãáâ ­®¢ª  ­®à¬ «¥© ¤«ï £à ­¥©
-
 
554
align 4
-
 
555
proc obj_set_normals
-
 
556
locals
-
 
557
	tbl1 rd 9 ;ebp-72
-
 
558
	tbl2 rd 9 ;ebp-36
-
 
559
endl
-
 
560
pushad
-
 
561
	cmp dword[obj_poi_count],0
-
 
562
	je .end
-
 
563
		finit
-
 
564
		mov ecx,[obj_tri_count]
-
 
565
		mov [obj_normals_tri_count],ecx ;­  ª ¦¤ë© âà¥ã£®«ì­¨ª 1 ­ à¬ «ì
-
 
566
		cmp ecx,0
-
 
567
		je .end
-
 
568
		imul ecx,12
-
 
569
		stdcall mem.Alloc, ecx
-
 
570
		mov [obj_normals_tri_data],eax
-
 
571
 
-
 
572
		mov edx,[obj_tri_data]
-
 
573
		mov ebx,[obj_tri_count]
-
 
574
align 4
-
 
575
		@@:
-
 
576
			mov edi,ebp
-
 
577
			sub edi,36 ;tbl2
-
 
578
			movzx esi,word[edx] ;1-ï ¢¥à設 
-
 
579
			imul esi,12
-
 
580
			add esi,[obj_poi_data]
-
 
581
			mov ecx,3
-
 
582
			rep movsd
-
 
583
			movzx esi,word[edx+2] ;2-ï ¢¥à設 
-
 
584
			imul esi,12
-
 
585
			add esi,[obj_poi_data]
-
 
586
			mov ecx,3
-
 
587
			rep movsd
-
 
588
			movzx esi,word[edx+4] ;3-ï ¢¥à設 
-
 
589
			imul esi,12
-
 
590
			add esi,[obj_poi_data]
-
 
591
			mov ecx,3
-
 
592
			rep movsd
-
 
593
 
-
 
594
			mov esi,ebp
-
 
595
			sub esi,72 ;tbl1
-
 
596
			sub edi,36 ;tbl2
-
 
597
			;v1 <-> v2
-
 
598
			fld dword[edi+12]
-
 
599
			fsub dword[edi]
-
 
600
			fstp dword[esi] ;(x1-x2)
-
 
601
			fld dword[edi+16]
-
 
602
			fsub dword[edi+4]
-
 
603
			fstp dword[esi+4] ;(y1-y2)
-
 
604
			fld dword[edi+20]
-
 
605
			fsub dword[edi+8]
-
 
606
			fstp dword[esi+8] ;(z1-z2)
-
 
607
			;v2 <-> v3
-
 
608
			fld dword[edi+24]
-
 
609
			fsub dword[edi+12]
-
 
610
			fstp dword[esi+12] ;(x2-x3)
-
 
611
			fld dword[edi+28]
-
 
612
			fsub dword[edi+16]
-
 
613
			fstp dword[esi+16] ;(y2-y3)
-
 
614
			fld dword[edi+32]
-
 
615
			fsub dword[edi+20]
-
 
616
			fstp dword[esi+20] ;(z2-z3)
-
 
617
			;v3 <-> v1
-
 
618
			fld dword[edi]
-
 
619
			fsub dword[edi+24]
-
 
620
			fstp dword[esi+24] ;(x3-x1)
-
 
621
			fld dword[edi+4]
-
 
622
			fsub dword[edi+28]
-
 
623
			fstp dword[esi+28] ;(y3-y1)
-
 
624
			fld dword[edi+8]
-
 
625
			fsub dword[edi+32]
-
 
626
			fstp dword[esi+32] ;(z3-z1)
-
 
627
 
-
 
628
			;a1,a2,a3
-
 
629
			fld dword[esi+4]
-
 
630
			fmul dword[esi+8]
-
 
631
			fstp dword[edi] ;a1=(y1-y2)*(z1-z2)
-
 
632
			fld dword[esi+16]
-
 
633
			fmul dword[esi+20]
-
 
634
			fstp dword[edi+4] ;a2=(y2-y3)*(z2-z3)
-
 
635
			fld dword[esi+28]
-
 
636
			fmul dword[esi+32]
-
 
637
			fstp dword[edi+8] ;a3=(y3-y1)*(z3-z1)
-
 
638
			;b1,b2,b3
-
 
639
			fld dword[esi]
-
 
640
			fmul dword[esi+8]
-
 
641
			fstp dword[edi] ;b1=(x1-x2)*(z1-z2)
-
 
642
			fld dword[esi+12]
-
 
643
			fmul dword[esi+20]
-
 
644
			fstp dword[edi+4] ;b2=(x2-x3)*(z2-z3)
-
 
645
			fld dword[esi+24]
-
 
646
			fmul dword[esi+32]
-
 
647
			fstp dword[edi+8] ;b3=(x3-x1)*(z3-z1)
-
 
648
			;c1,á2,á3
-
 
649
			fld dword[esi]
-
 
650
			fmul dword[esi+4]
-
 
651
			fstp dword[edi] ;c1=(x1-x2)*(y1-y2)
-
 
652
			fld dword[esi+12]
-
 
653
			fmul dword[esi+16]
-
 
654
			fstp dword[edi+4] ;c2=(x2-x3)*(y2-y3)
-
 
655
			fld dword[esi+24]
-
 
656
			fmul dword[esi+28]
-
 
657
			fstp dword[edi+8] ;c3=(x3-x1)*(y3-y1)
-
 
658
			
-
 
659
			fld dword[edi]
-
 
660
			fadd dword[edi+4]
-
 
661
			fadd dword[edi+8]
-
 
662
			fstp dword[eax] ;set normal.a
-
 
663
			fld dword[edi+12]
-
 
664
			fadd dword[edi+16]
-
 
665
			fadd dword[edi+20]
-
 
666
			fstp dword[eax+4] ;set normal.b
-
 
667
			fld dword[edi+24]
-
 
668
			fadd dword[edi+28]
-
 
669
			fadd dword[edi+32]
-
 
670
			fstp dword[eax+8] ;set normal.c
-
 
671
			
-
 
672
			add edx,8 ;à §¬¥à âà¥ã£®«ì­¨ª  = (3 ¢¥à設ë (¯® 2¡) + ᢮©á⢠ (2¡))
-
 
673
			add eax,12
-
 
674
			dec ebx
-
 
675
			jnz @b
-
 
676
	.end:
-
 
677
popad
-
 
678
	ret
-
 
679
endp
545
 
680
 
546
;à¨á®¢ ­¨¥ â®ç¥ª ¢ 3d
681
;à¨á®¢ ­¨¥ â®ç¥ª ¢ 3d
547
align 4
682
align 4
548
draw_3d:
683
draw_3d:
549
	cmp dword[obj_poi_count],2
684
	cmp dword[obj_poi_count],2
Line 648... Line 783...
648
		stdcall [glPolygonMode], GL_FRONT_AND_BACK ;mode - 㦥 ¢ á⥪¥
783
		stdcall [glPolygonMode], GL_FRONT_AND_BACK ;mode - 㦥 ¢ á⥪¥
649
		stdcall [glColor3ub],[color_face+2],[color_face+1],[color_face]
784
		stdcall [glColor3ub],[color_face+2],[color_face+1],[color_face]
650
		stdcall [glBegin],GL_TRIANGLES
785
		stdcall [glBegin],GL_TRIANGLES
651
		mov eax,[obj_tri_data]
786
		mov eax,[obj_tri_data]
652
		mov ecx,[obj_tri_count]
787
		mov ecx,[obj_tri_count]
-
 
788
		mov edx,[obj_normals_tri_data]
653
		@@:
789
		@@:
-
 
790
			;
-
 
791
			bt dword[draw_mode],bit_light
-
 
792
			jnc .norm
-
 
793
				;[obj_normals_tri_count]
-
 
794
				stdcall [glNormal3fv], edx
-
 
795
				add edx,12
-
 
796
			.norm:
-
 
797
			;
654
			movzx ebx,word[eax] ;1-ï ¢¥à設 
798
			movzx ebx,word[eax] ;1-ï ¢¥à設 
655
			imul ebx,12
799
			imul ebx,12
656
			add ebx,[obj_poi_data]
800
			add ebx,[obj_poi_data]
657
			stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
801
			stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
658
			movzx ebx,word[eax+2] ;2-ï ¢¥à設 
802
			movzx ebx,word[eax+2] ;2-ï ¢¥à設 
Line 974... Line 1118...
974
	jne prop_still.end
1118
	jne prop_still.end
975
.exit:
1119
.exit:
976
	mov dword[tree3.data_img],0 ;ç¨á⨬ 㪠§ â¥«¨ ­  ¨ª®­ª¨ çâ®-¡ë ¨å ­¥ 㤠«¨« ¤¥áâàãªâ®à
1120
	mov dword[tree3.data_img],0 ;ç¨á⨬ 㪠§ â¥«¨ ­  ¨ª®­ª¨ çâ®-¡ë ¨å ­¥ 㤠«¨« ¤¥áâàãªâ®à
977
	mov dword[tree3.data_img_sys],0 ;â. ª. ®­¨ ¥é¥ ¨á¯®«ì§ãîâìáï ¢ ¤à㣨å í«¥¬¥­â å
1121
	mov dword[tree3.data_img_sys],0 ;â. ª. ®­¨ ¥é¥ ¨á¯®«ì§ãîâìáï ¢ ¤à㣨å í«¥¬¥­â å
978
	stdcall dword[tl_data_clear], tree3
1122
	stdcall dword[tl_data_clear], tree3
-
 
1123
	stdcall mem.Free,[obj_normals_tri_data]
-
 
1124
	stdcall mem.Free,[obj_normals_poi_data]
-
 
1125
	mov dword[obj_normals_tri_data],0
-
 
1126
	mov dword[obj_normals_poi_data],0
979
	mov byte[prop_wnd_run],0 ;®¡­ã«ï¥¬ áç¥â稪 ®ª®­
1127
	mov byte[prop_wnd_run],0 ;®¡­ã«ï¥¬ áç¥â稪 ®ª®­
980
	mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
1128
	mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
Line 981... Line 1129...
981
 
1129
 
982
align 4
1130
align 4
Line 1294... Line 1442...
1294
obj_poi_sel_c dd 0 ;ª®««¨ç¥á⢮ ¢ë¤¥«¥­­ëå ¢¥à設
1442
obj_poi_sel_c dd 0 ;ª®««¨ç¥á⢮ ¢ë¤¥«¥­­ëå ¢¥à設
1295
obj_tri_data dd 0 ;㪠§ â¥«ì ­  ¤ ­­ë¥ âà¥ã£®«ì­¨ª®¢
1443
obj_tri_data dd 0 ;㪠§ â¥«ì ­  ¤ ­­ë¥ âà¥ã£®«ì­¨ª®¢
1296
obj_tri_count dd 0 ;ª®««¨ç¥á⢮ âà¥ã£®«ì­¨ª®¢
1444
obj_tri_count dd 0 ;ª®««¨ç¥á⢮ âà¥ã£®«ì­¨ª®¢
1297
cursor_last_draw dd 0 ;¯®«®¦¥­¨¥ ªãàá®à  ¯à¨ ¯®á«¥¤­¥© ¯à®à¨á®¢ª¥ 3d ®ª­ 
1445
cursor_last_draw dd 0 ;¯®«®¦¥­¨¥ ªãàá®à  ¯à¨ ¯®á«¥¤­¥© ¯à®à¨á®¢ª¥ 3d ®ª­ 
1298
sph_radius dd 0 ;à ¤¨ãá áä¥àë ¤«ï ¢ë¤¥«¥­¨ï  ªâ¨¢­®© â®çª¨
1446
sph_radius dd 0 ;à ¤¨ãá áä¥àë ¤«ï ¢ë¤¥«¥­¨ï  ªâ¨¢­®© â®çª¨
-
 
1447
 
-
 
1448
obj_normals_poi_data dd 0
-
 
1449
obj_normals_poi_count dd 0
-
 
1450
obj_normals_tri_data dd 0
-
 
1451
obj_normals_tri_count dd 0
-
 
1452
 
1299
obj_x_max dd 0
1453
obj_x_max dd 0
1300
obj_x_min dd 0
1454
obj_x_min dd 0
1301
obj_x_centr dd 0
1455
obj_x_centr dd 0
1302
obj_x_scale dd 1.0
1456
obj_x_scale dd 1.0
1303
obj_y_max dd 0
1457
obj_y_max dd 0