Subversion Repositories Kolibri OS

Rev

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