forked from KolibriOS/kolibrios
update program
git-svn-id: svn://kolibrios.org@5935 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
3243cdfaac
commit
698f3bcead
@ -1,7 +1,7 @@
|
||||
if lang eq ru
|
||||
capt db 'info 3ds ¢¥àá¨ï 10.11.15',0 ;¯®¤¯¨áì ®ª
|
||||
capt db 'info 3ds ¢¥àá¨ï 26.11.15',0 ;¯®¤¯¨áì ®ª
|
||||
else
|
||||
capt db 'info 3ds version 10.11.15',0 ;window caption
|
||||
capt db 'info 3ds version 26.11.15',0 ;window caption
|
||||
end if
|
||||
|
||||
MAX_FILE_LEVEL equ 20 ;¬ Şá¨¬ «ěë© ă஢Ąě ˘«®¦Ą®á⨠ˇ«®Ş®˘ ¤«ď «¨§
|
||||
@ -69,6 +69,7 @@ block_3ds CHUNK_MATNAME, 3,1,txt_a000
|
||||
block_3ds 0xa010,4,0,txt_a010
|
||||
block_3ds 0xa020,4,0,txt_a020
|
||||
block_3ds 0xa030,4,0,txt_a030
|
||||
block_3ds 0xa100,5,1,txt_a100
|
||||
block_3ds CHUNK_TEXTURE, 3,0,txt_a200
|
||||
block_3ds CHUNK_MAPFILE, 6,1,txt_a300
|
||||
block_3ds CHUNK_KEYFRAMER, 7,0,txt_b000
|
||||
@ -145,10 +146,10 @@ txt_4160 db '
|
||||
txt_4600 db '‘˘Ąâ',0
|
||||
txt_4700 db 'Š ¬Ąŕ ',0
|
||||
txt_a000 db 'Ť §˘ ¨Ą ¬ âĄŕ¨ « ',0
|
||||
;txt_a100 db 'MAT_SHADING',0
|
||||
txt_a010 db 'ŽŞŕ㦠î騩 梥â',0
|
||||
txt_a020 db '„¨ääă§ë© 梥â',0
|
||||
txt_a030 db '‡ĄŕŞ «ěë© ć˘Ąâ',0
|
||||
txt_a100 db '’¨¯ ¬ â¥à¨ « [1=flat 2=gouraud 3=phong 4=metal]',0
|
||||
txt_a200 db '’ĄŞáâăŕ ¬ âĄŕ¨ « 1',0
|
||||
txt_a300 db '<27>¬ď ä ©« ⥪áâăŕë',0
|
||||
;txt_a353 db 'MAT_MAP_TEXBLUR',0
|
||||
@ -230,6 +231,7 @@ txt_a000 db 'Material name',0
|
||||
txt_a010 db 'Ambient color',0
|
||||
txt_a020 db 'Diffuse color',0
|
||||
txt_a030 db 'Specular color',0
|
||||
txt_a100 db 'Material type [1=flat 2=gouraud 3=phong 4=metal]',0
|
||||
txt_a200 db 'Texture map 1',0
|
||||
txt_a300 db 'Mapping filename',0
|
||||
txt_afff db 'Meterial',0
|
||||
|
@ -11,6 +11,7 @@ include '../../develop/libraries/TinyGL/asm_fork/opengl_const.inc'
|
||||
include '../../dll.inc'
|
||||
include 'lang.inc'
|
||||
include 'info_fun_float.inc'
|
||||
include 'info_menu.inc'
|
||||
|
||||
debug equ 0
|
||||
|
||||
@ -129,6 +130,24 @@ start:
|
||||
mcall 40,0x27
|
||||
stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª ¤¨ «®£
|
||||
|
||||
;kmenu initialisation
|
||||
stdcall [kmenu_init],sc
|
||||
stdcall [ksubmenu_new]
|
||||
mov [main_menu], eax
|
||||
|
||||
stdcall [ksubmenu_new]
|
||||
mov [main_menu_view], eax
|
||||
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Vertexes, 5
|
||||
stdcall [ksubmenu_add], [main_menu_view], eax
|
||||
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Faces, 6
|
||||
stdcall [ksubmenu_add], [main_menu_view], eax
|
||||
stdcall [kmenuitem_new], KMENUITEM_SEPARATOR, 0, 0
|
||||
stdcall [ksubmenu_add], [main_menu_view], eax
|
||||
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Light, 7
|
||||
stdcall [ksubmenu_add], [main_menu_view], eax
|
||||
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_View, [main_menu_view]
|
||||
stdcall [ksubmenu_add], [main_menu], eax
|
||||
|
||||
mov dword[w_scr_t1.type],1
|
||||
stdcall dword[tl_data_init], tree1
|
||||
;á¨áâ¥¬ë¥ ¨ª®ª¨ 16*16 ¤«ï tree_list
|
||||
@ -158,7 +177,7 @@ start:
|
||||
mcall 26,9
|
||||
mov [last_time],eax
|
||||
|
||||
stdcall [kosglMakeCurrent], 5,3,320,240,ctx1
|
||||
stdcall [kosglMakeCurrent], 5,23,320,240,ctx1
|
||||
stdcall [glEnable], GL_DEPTH_TEST
|
||||
stdcall [glEnable], GL_NORMALIZE ;¤¥« ¬ ®à¬ «¨ ®¤¨ ª®¢®© ¢¥«¨ç¨ë ¢® ¨§¡¥¦ ¨¥ àâ¥ä ªâ®¢
|
||||
stdcall [glClearColor], 0.0,0.0,0.0,0.0
|
||||
@ -208,13 +227,10 @@ mouse:
|
||||
align 4
|
||||
timer_funct:
|
||||
pushad
|
||||
if debug
|
||||
mcall 4, (5 shl 16)+8, 0xff+0x80000000, txt_0002
|
||||
end if
|
||||
mcall 26,9
|
||||
mov [last_time],eax
|
||||
|
||||
;
|
||||
;¯à®á¬ âਢ ¥¬ ¢ë¤¥«¥ë© ¡«®ª ¤ ëå
|
||||
stdcall [tl_node_get_data],tree1
|
||||
cmp eax,0
|
||||
je @f
|
||||
@ -227,6 +243,7 @@ end if
|
||||
add eax,dword[open_file_lif] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ ¯ ¬ïâ¨
|
||||
cmp dword[offs_last_timer],eax
|
||||
je @f
|
||||
;¥á«¨ ¢ë¤¥«¥ë© ¡«®ª ¤ ëå ¥ ᮢ¯ ¤ ¥â á ¯®á«¥¤¨¬ § ¯®¬¥ë¬
|
||||
mov dword[offs_last_timer],eax
|
||||
call buf_draw_beg
|
||||
stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs,5,35,0xb000
|
||||
@ -240,6 +257,12 @@ end if
|
||||
stdcall [buf2d_draw], buf_0 ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥
|
||||
@@:
|
||||
popad
|
||||
|
||||
;¯à®á¬®âà ®ª á ª®®à¤¨ â ¬¨ â®ç¥ª
|
||||
;cmp byte[prop_wnd_run],0
|
||||
;je @f
|
||||
; call prop_timer_funct
|
||||
;@@:
|
||||
jmp still
|
||||
|
||||
align 4
|
||||
@ -479,9 +502,7 @@ but_open_file:
|
||||
mov byte[can_save],0
|
||||
call init_tree
|
||||
stdcall [buf2d_draw], buf_0 ;®¡®¢«ï¥¬ ¡ãä¥à íªà ¥
|
||||
mov dword[angle_x],0.0
|
||||
mov dword[angle_y],0.0
|
||||
mov dword[angle_z],0.0
|
||||
call prop_wnd_clear_param ;ç¨á⨬ ¯ à ¬¥âàë ®ª á ª®®à¤¨ â ¬¨
|
||||
cmp byte[prop_wnd_run],0
|
||||
je @f
|
||||
;ç¨á⨬ ®ª® á ª®®à¤¨ â ¬¨
|
||||
@ -778,7 +799,7 @@ proc add_3ds_object, icon:dword,level:dword,size_bl:dword,info_bl:dword
|
||||
mov ecx,size_one_list-(list_offs_text+5)
|
||||
cld
|
||||
rep movsb
|
||||
mov byte[buffer+size_one_list-1],0 ;0 - ᨬ¢®« ª®¥æ áâப¨
|
||||
mov byte[buffer+size_one_list-1],0 ;0 - ᨬ¢®« ª®æ áâப¨
|
||||
.no_capt:
|
||||
stdcall [tl_node_add], tree1, ebx, buffer
|
||||
stdcall [tl_cur_next], tree1
|
||||
@ -819,6 +840,42 @@ proc print_err, fun:dword, mes:dword ;
|
||||
popad
|
||||
ret
|
||||
endp
|
||||
|
||||
;input:
|
||||
; eax - value
|
||||
; edi - string buffer
|
||||
; len - buffer len
|
||||
;output:
|
||||
align 4
|
||||
proc convert_int_to_str, len:dword
|
||||
pushad
|
||||
mov esi,[len]
|
||||
add esi,edi
|
||||
dec esi
|
||||
call .str
|
||||
popad
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
.str:
|
||||
mov ecx,0x0a
|
||||
cmp eax,ecx
|
||||
jb @f
|
||||
xor edx,edx
|
||||
div ecx
|
||||
push edx
|
||||
call .str
|
||||
pop eax
|
||||
@@:
|
||||
cmp edi,esi
|
||||
jge @f
|
||||
or al,0x30
|
||||
stosb
|
||||
mov byte[edi],0
|
||||
@@:
|
||||
ret
|
||||
|
||||
end if
|
||||
|
||||
align 4
|
||||
@ -857,7 +914,6 @@ but_save_file:
|
||||
je .end_save_file
|
||||
;ª®¤ ¯à¨ 㤠箬 ®âªàë⨨ ¤¨ «®£
|
||||
|
||||
mov eax,70 ;70-ï äãªæ¨ï à ¡®â á ä ©« ¬¨
|
||||
mov [run_file_70.Function], 2
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
@ -867,11 +923,10 @@ but_save_file:
|
||||
mov dword[run_file_70.Count], ebx ;à §¬¥à ä ©«
|
||||
mov byte[run_file_70+20], 0
|
||||
mov dword[run_file_70.FileName], openfile_path
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï
|
||||
mcall 70,run_file_70
|
||||
cmp ebx,0xffffffff
|
||||
je .end_save_file
|
||||
|
||||
;...á®®¡é¥¨¥...
|
||||
.end_save_file:
|
||||
popad
|
||||
ret
|
||||
@ -1333,7 +1388,6 @@ include '../../develop/libraries/TinyGL/asm_fork/export.inc'
|
||||
|
||||
align 4
|
||||
mouse_dd dd 0x0
|
||||
sc system_colors
|
||||
last_time dd 0
|
||||
|
||||
align 4
|
||||
@ -1371,7 +1425,7 @@ angle_y dd 0.0
|
||||
angle_z dd 0.0
|
||||
delt_size dd 3.0
|
||||
|
||||
light_position dd 0.0, 0.0, 2.0, 1.0 ; <20> ᯮ«®¦¥¨¥ ¨áâ®ç¨ª [0][1][2]
|
||||
light_position dd 0.0, 0.0, -2.0, 1.0 ; <20> ᯮ«®¦¥¨¥ ¨áâ®ç¨ª [0][1][2]
|
||||
;[3] = (0.0 - ¡¥áª®¥ç® 㤠«¥ë© ¨áâ®ç¨ª, 1.0 - ¨áâ®ç¨ª ᢥ⠮¯à¥¤¥«¥®¬ à ááâ®ï¨¨)
|
||||
light_dir dd 0.0,0.0,0.0 ; ¯à ¢«¥¨¥ « ¬¯ë
|
||||
|
||||
@ -1383,6 +1437,7 @@ lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ;
|
||||
align 16
|
||||
i_end:
|
||||
procinfo process_information
|
||||
sc system_colors
|
||||
rb 2048
|
||||
align 16
|
||||
thread_coords:
|
||||
|
1
programs/develop/info3ds/info_menu.inc
Normal file
1
programs/develop/info3ds/info_menu.inc
Normal file
@ -0,0 +1 @@
|
||||
if lang eq ru
sz_main_menu_View db '‚¨¤', 0
sz_main_menu_Veiw_Vertexes db '‚¥àè¨ë ¢ª«./¢ëª«.', 0
sz_main_menu_Veiw_Faces db 'ƒà ¨ ¢ª«./¢ëª«.', 0
sz_main_menu_Veiw_Light db '‘¢¥â ¢ª«./¢ëª«.', 0
else
sz_main_menu_View db 'View', 0
sz_main_menu_Veiw_Vertexes db 'Vertexes on/off', 0
sz_main_menu_Veiw_Faces db 'Faces on/off', 0
sz_main_menu_Veiw_Light db 'Light on/off', 0
end if
main_menu dd 0
main_menu_file dd 0
main_menu_view dd 0
KMENUITEM_NORMAL equ 0
KMENUITEM_SUBMENU equ 1
KMENUITEM_SEPARATOR equ 2
|
@ -1,6 +1,6 @@
|
||||
;
|
||||
; ¢ í⮬ ä ©«¥ ᮡà ë äãªæ¨¨ ã¦ë¥ ¤«ï ᮧ¤ ¨ï ¨
|
||||
; à ¡®âë ®ª á ª®®à¤¨ â ¬¨
|
||||
; à ¡®âë ®ª á ª®®à¤¨ â ¬¨ ¢¥àè¨
|
||||
;
|
||||
|
||||
prop_wnd_width equ 340 ;è¨à¨ ®ª ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ
|
||||
@ -8,6 +8,12 @@ prop_wnd_height equ 460
|
||||
SIZE_ONE_FLOAT equ 14
|
||||
MAX_OBJECT_SIZE equ (4+SIZE_ONE_FLOAT*3+1)
|
||||
|
||||
bit_vertexes equ 0
|
||||
bit_faces equ 1
|
||||
bit_faces_fill equ 2
|
||||
bit_light equ 3
|
||||
def_dr_mode equ 0x1111b
|
||||
|
||||
prop_wnd_run db 0 ;¯¥à¥¬¥ ï á«¥¤ïé ï § ⥬ çâ®-¡ë ¥ § ¯ã᪠âì ¡®«ìè¥ 1-£® ®ª ᮠ᢮©á⢠¬¨ ®¤®¢à¥¬¥®
|
||||
|
||||
txt_q db '?',0
|
||||
@ -32,36 +38,76 @@ pushad
|
||||
mcall 40,0x27 ;¬ ᪠®¦¨¤ ¥¬ëå ᮡë⨩
|
||||
inc byte[prop_wnd_run]
|
||||
mov dword[w_scr_t3.type],1
|
||||
call prop_wnd_clear_param
|
||||
|
||||
stdcall [tl_node_get_data],tree1
|
||||
xor edx,edx
|
||||
mov dword[capt_p],txt_q
|
||||
cmp eax,0
|
||||
je .no_points
|
||||
mov ebx,dword[eax] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ë¡à ®£® ¡«®ª
|
||||
add ebx,dword[open_file_lif]
|
||||
mov ebx,[eax] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ë¡à ®£® ¡«®ª
|
||||
add ebx,[open_file_lif]
|
||||
|
||||
cmp word[ebx],CHUNK_VERTLIST
|
||||
jne @f
|
||||
jne .end_vlist
|
||||
movzx edx,word[ebx+6] ;ª®««¨ç¥á⢮ â®ç¥ª
|
||||
add ebx,8
|
||||
mov dword[capt_p],txt_4110
|
||||
jmp .no_points
|
||||
;¯®¨áª ¤ ëå ¤«ï âà¥ã£®«ìª®¢
|
||||
mov ecx,eax
|
||||
stdcall [tl_node_poi_get_info], tree1,0
|
||||
@@:
|
||||
cmp word[ebx],0xb013
|
||||
mov esi,eax
|
||||
stdcall [tl_node_poi_get_data], tree1,esi
|
||||
cmp eax,ecx
|
||||
je @f ;¥á«¨ ¯®¯ «¨ ¢ë¡à ë© ã§¥«
|
||||
stdcall [tl_node_poi_get_next_info], tree1,esi
|
||||
cmp eax,0
|
||||
jne @b
|
||||
jmp .set_points
|
||||
@@:
|
||||
;¥á«¨ 諨 ¢ë¡à ë© ã§¥«, â® ¤ «¥¥ ¯ëâ ¥¬áï ©â¨ ã§¥« á âà¥ã£®«ì¨ª ¬¨
|
||||
movzx ecx,byte[esi+2] ;cl - ã஢¥ì ¢ë¡à ®£® 㧫
|
||||
.cycle_0:
|
||||
stdcall [tl_node_poi_get_next_info], tree1,esi
|
||||
cmp eax,0
|
||||
je .set_points
|
||||
mov esi,eax
|
||||
stdcall [tl_node_poi_get_data], tree1,esi
|
||||
cmp byte[esi+2],cl
|
||||
jl .set_points
|
||||
je .found
|
||||
jmp .cycle_0
|
||||
.found: ;¥á«¨ 諨 㧥« ⮣®¦¥ ã஢ï çâ® ¨ ¢ë¡à ë© ã§¥«
|
||||
cmp eax,0
|
||||
je .set_points
|
||||
mov eax,[eax]
|
||||
add eax,[open_file_lif]
|
||||
cmp word[eax],CHUNK_FACELIST
|
||||
jne .cycle_0
|
||||
movzx ecx,word[eax+6]
|
||||
mov [obj_tri_count],ecx
|
||||
add eax,8 ;2+4+2 (chunk+size+count)
|
||||
mov [obj_tri_data],eax
|
||||
jmp .set_points
|
||||
.end_vlist:
|
||||
cmp word[ebx],CHUNK_TRACKPIVOT
|
||||
jne @f
|
||||
inc edx
|
||||
add ebx,6
|
||||
mov dword[capt_p],txt_b013
|
||||
jmp .no_points
|
||||
jmp .set_points
|
||||
@@:
|
||||
cmp word[ebx],0xb014
|
||||
jne @f
|
||||
mov edx,2
|
||||
add ebx,6
|
||||
mov dword[capt_p],txt_b014
|
||||
;jmp .no_points
|
||||
;jmp .set_points
|
||||
@@:
|
||||
.set_points:
|
||||
mov [obj_poi_data],ebx
|
||||
mov [obj_poi_count],edx
|
||||
.no_points:
|
||||
|
||||
; áâனª ᯨ᪠®¡ê¥ªâ®¢
|
||||
@ -117,7 +163,13 @@ popad
|
||||
align 4
|
||||
prop_still:
|
||||
pushad
|
||||
mcall 10
|
||||
|
||||
mcall 23,10
|
||||
or eax,eax
|
||||
jnz @f
|
||||
call prop_timer_funct
|
||||
jmp .end
|
||||
@@:
|
||||
|
||||
cmp al,1 ;¨§¬. ¯®«®¦¥¨¥ ®ª
|
||||
jne @f
|
||||
@ -159,15 +211,15 @@ pushad
|
||||
int 0x40
|
||||
|
||||
mov esi,[sc.work_button]
|
||||
mcall 8, (5 shl 16)+20, (246 shl 16)+20, 3
|
||||
mcall , (30 shl 16)+20, (246 shl 16)+20, 4
|
||||
mcall 8, (5 shl 16)+20, (266 shl 16)+20, 3
|
||||
mcall , (30 shl 16)+20, (266 shl 16)+20, 4
|
||||
|
||||
mov ebx,[image_data_toolbar]
|
||||
add ebx,4*IMAGE_TOOLBAR_ICON_SIZE
|
||||
mcall 7, , (16 shl 16)+16, (7 shl 16)+247 ;load
|
||||
mcall 7, , (16 shl 16)+16, (7 shl 16)+268 ;load
|
||||
|
||||
sub ebx,IMAGE_TOOLBAR_ICON_SIZE
|
||||
mov edx,(32 shl 16)+247 ;save
|
||||
mov edx,(32 shl 16)+268 ;save
|
||||
int 0x40
|
||||
|
||||
mov dword[w_scr_t3.all_redraw],1
|
||||
@ -177,19 +229,32 @@ pushad
|
||||
stdcall [edit_box_draw], edit2
|
||||
stdcall [edit_box_draw], edit3
|
||||
|
||||
stdcall [kmainmenu_draw], [main_menu]
|
||||
call draw_3d
|
||||
mcall 12,2
|
||||
popad
|
||||
ret
|
||||
|
||||
;ãáâ ®¢ª ¢á¥å ®á®¢ëå ¯¥à¥¬¥ëå ¯® 㬮«ç ¨î
|
||||
align 4
|
||||
prop_wnd_clear_param:
|
||||
mov dword[angle_x],0.0
|
||||
mov dword[angle_y],0.0
|
||||
mov dword[angle_z],0.0
|
||||
mov dword[obj_poi_data],0
|
||||
mov dword[obj_poi_count],0
|
||||
mov dword[obj_tri_data],0
|
||||
mov dword[obj_tri_count],0
|
||||
mov dword[draw_mode],def_dr_mode
|
||||
ret
|
||||
|
||||
;ãáâ ®¢ª à §¬¥à®¢ ®¡ê¥ªâ
|
||||
align 4
|
||||
proc obj_set_sizes uses eax ebx esi
|
||||
stdcall dword[tl_node_poi_get_info], tree3,0
|
||||
cmp eax,0
|
||||
cmp dword[obj_poi_count],0
|
||||
je .end
|
||||
stdcall [tl_node_poi_get_data], tree3,eax
|
||||
finit
|
||||
mov eax,[eax]
|
||||
mov eax,[obj_poi_data]
|
||||
mov ebx,dword[eax]
|
||||
mov [obj_x_min],ebx
|
||||
mov [obj_x_max],ebx
|
||||
@ -200,13 +265,10 @@ proc obj_set_sizes uses eax ebx esi
|
||||
mov [obj_z_min],ebx
|
||||
mov [obj_z_max],ebx
|
||||
|
||||
stdcall dword[tl_node_poi_get_info], tree3,0
|
||||
mov ebx,[obj_poi_data]
|
||||
mov esi,[obj_poi_count]
|
||||
align 4
|
||||
.cycle_0: ;à ¡®â á ª®®à¤¨ ⮩ x
|
||||
mov esi,eax
|
||||
stdcall [tl_node_poi_get_data], tree3,esi
|
||||
mov ebx,[eax]
|
||||
|
||||
fld dword[ebx]
|
||||
fld dword[obj_x_min]
|
||||
fcomp
|
||||
@ -228,9 +290,9 @@ align 4
|
||||
mov [obj_x_max],eax
|
||||
.next_x:
|
||||
|
||||
stdcall dword[tl_node_poi_get_next_info], tree3,esi
|
||||
cmp eax,0
|
||||
jne .cycle_0
|
||||
add ebx,12
|
||||
dec esi
|
||||
jnz .cycle_0
|
||||
|
||||
fld1
|
||||
fld dword[obj_x_max]
|
||||
@ -248,13 +310,10 @@ align 4
|
||||
fchs
|
||||
fstp dword[obj_x_centr]
|
||||
|
||||
stdcall dword[tl_node_poi_get_info], tree3,0
|
||||
mov ebx,[obj_poi_data]
|
||||
mov esi,[obj_poi_count]
|
||||
align 4
|
||||
.cycle_1: ;à ¡®â á ª®®à¤¨ ⮩ y
|
||||
mov esi,eax
|
||||
stdcall [tl_node_poi_get_data], tree3,esi
|
||||
mov ebx,[eax]
|
||||
|
||||
fld dword[ebx+4]
|
||||
fld dword[obj_y_min]
|
||||
fcomp
|
||||
@ -276,9 +335,9 @@ align 4
|
||||
mov [obj_y_max],eax
|
||||
.next_y:
|
||||
|
||||
stdcall dword[tl_node_poi_get_next_info], tree3,esi
|
||||
cmp eax,0
|
||||
jne .cycle_1
|
||||
add ebx,12
|
||||
dec esi
|
||||
jnz .cycle_1
|
||||
|
||||
fld1
|
||||
fld dword[obj_y_max]
|
||||
@ -296,13 +355,10 @@ align 4
|
||||
fchs
|
||||
fstp dword[obj_y_centr]
|
||||
|
||||
stdcall dword[tl_node_poi_get_info], tree3,0
|
||||
mov ebx,[obj_poi_data]
|
||||
mov esi,[obj_poi_count]
|
||||
align 4
|
||||
.cycle_2: ;à ¡®â á ª®®à¤¨ ⮩ z
|
||||
mov esi,eax
|
||||
stdcall [tl_node_poi_get_data], tree3,esi
|
||||
mov ebx,[eax]
|
||||
|
||||
fld dword[ebx+8]
|
||||
fld dword[obj_z_min]
|
||||
fcomp
|
||||
@ -324,9 +380,9 @@ align 4
|
||||
mov [obj_z_max],eax
|
||||
.next_z:
|
||||
|
||||
stdcall dword[tl_node_poi_get_next_info], tree3,esi
|
||||
cmp eax,0
|
||||
jne .cycle_2
|
||||
add ebx,12
|
||||
dec esi
|
||||
jnz .cycle_2
|
||||
|
||||
fld1
|
||||
fld dword[obj_z_max]
|
||||
@ -360,8 +416,18 @@ endp
|
||||
;à¨á®¢ ¨¥ â®ç¥ª ¢ 3d
|
||||
align 4
|
||||
draw_3d:
|
||||
cmp dword[obj_poi_count],2
|
||||
jl .end_f
|
||||
|
||||
stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;®ç¨á⨬ ¡ãä¥à 梥⠨ £«ã¡¨ë
|
||||
stdcall [glPushMatrix]
|
||||
bt dword[draw_mode],bit_light
|
||||
jnc @f
|
||||
call SetLight
|
||||
jmp .end_l
|
||||
@@:
|
||||
stdcall [glDisable],GL_LIGHTING
|
||||
.end_l:
|
||||
stdcall [glTranslatef], 0.0,0.0,0.5 ;correct for z
|
||||
stdcall [glScalef], [obj_x_scale],[obj_y_scale],[obj_z_scale]
|
||||
stdcall [glScalef], 1.0,1.0,0.7 ;correct for z
|
||||
@ -370,22 +436,22 @@ draw_3d:
|
||||
stdcall [glRotatef], [angle_x],1.0,0.0,0.0
|
||||
stdcall [glTranslatef], [obj_x_centr],[obj_y_centr],[obj_z_centr]
|
||||
|
||||
;à¨á®¢ ¨¥ â®ç¥ª
|
||||
bt dword[draw_mode],bit_vertexes
|
||||
jnc .end_points
|
||||
stdcall [glColor3f], 1.0,1.0,1.0
|
||||
stdcall [glBegin],GL_POINTS
|
||||
|
||||
stdcall dword[tl_node_poi_get_info], tree3,0
|
||||
mov eax,[obj_poi_data]
|
||||
mov ebx,[obj_poi_count]
|
||||
@@:
|
||||
cmp eax,0
|
||||
je @f
|
||||
mov esi,eax
|
||||
stdcall [tl_node_poi_get_data], tree3,esi
|
||||
mov eax,[eax]
|
||||
stdcall [glVertex3f], [eax],[eax+4],[eax+8]
|
||||
stdcall dword[tl_node_poi_get_next_info], tree3,esi
|
||||
jmp @b
|
||||
@@:
|
||||
add eax,12
|
||||
dec ebx
|
||||
jnz @b
|
||||
stdcall [glEnd]
|
||||
.end_points:
|
||||
|
||||
;à¨á®¢ ¨¥ ¢ë¤¥«¥®© â®çª¨
|
||||
stdcall [tl_node_get_data],tree3
|
||||
cmp eax,0
|
||||
je @f
|
||||
@ -405,17 +471,70 @@ draw_3d:
|
||||
stdcall [glEnd]
|
||||
|
||||
stdcall [glColor3f], 1.0, 1.0, 0.0
|
||||
stdcall [glPushMatrix]
|
||||
stdcall [glTranslatef], [eax],[eax+4],[eax+8]
|
||||
stdcall [gluSphere], [qObj], [sph_radius], 8,8
|
||||
stdcall [glPopMatrix]
|
||||
@@:
|
||||
|
||||
;à¨á®¢ ¨¥ £à ¥©
|
||||
bt dword[draw_mode],bit_faces
|
||||
jnc .end_triangles
|
||||
cmp dword[obj_tri_count],0
|
||||
je .end_triangles
|
||||
cmp dword[obj_poi_count],0
|
||||
je .end_triangles
|
||||
stdcall [glColor3f], 0.5,0.5,0.5
|
||||
;bt dword[draw_mode],bit_faces_fill
|
||||
;jnc @f
|
||||
;@@:
|
||||
stdcall [glBegin],GL_TRIANGLES
|
||||
mov eax,[obj_tri_data]
|
||||
mov ecx,[obj_tri_count]
|
||||
@@:
|
||||
movzx ebx,word[eax] ;1-ï ¢¥àè¨
|
||||
imul ebx,12
|
||||
add ebx,[obj_poi_data]
|
||||
stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
|
||||
movzx ebx,word[eax+2] ;2-ï ¢¥àè¨
|
||||
imul ebx,12
|
||||
add ebx,[obj_poi_data]
|
||||
stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
|
||||
movzx ebx,word[eax+4] ;3-ï ¢¥àè¨
|
||||
imul ebx,12
|
||||
add ebx,[obj_poi_data]
|
||||
stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
|
||||
add eax,8 ;à §¬¥à âà¥ã£®«ì¨ª = (3 ¢¥àè¨ë (¯® 2¡) + ᢮©á⢠(2¡))
|
||||
dec ecx
|
||||
jnz @b
|
||||
stdcall [glEnd]
|
||||
.end_triangles:
|
||||
|
||||
stdcall [glPopMatrix]
|
||||
stdcall [kosglSwapBuffers]
|
||||
.end_f:
|
||||
ret
|
||||
|
||||
align 4
|
||||
prop_key:
|
||||
push eax
|
||||
SetLight:
|
||||
stdcall [glLightfv], GL_LIGHT0, GL_POSITION, light_position
|
||||
stdcall [glLightfv], GL_LIGHT0, GL_SPOT_DIRECTION, light_dir
|
||||
|
||||
stdcall [glLightfv], GL_LIGHT0, GL_DIFFUSE, white_light
|
||||
stdcall [glLightfv], GL_LIGHT0, GL_SPECULAR, white_light
|
||||
|
||||
stdcall [glEnable], GL_COLOR_MATERIAL
|
||||
stdcall [glColorMaterial], GL_FRONT, GL_AMBIENT_AND_DIFFUSE
|
||||
stdcall [glMaterialfv], GL_FRONT, GL_SPECULAR, mat_specular
|
||||
stdcall [glMaterialf], GL_FRONT, GL_SHININESS, mat_shininess
|
||||
stdcall [glLightModelfv], GL_LIGHT_MODEL_AMBIENT, lmodel_ambient
|
||||
|
||||
stdcall [glEnable],GL_LIGHTING
|
||||
stdcall [glEnable],GL_LIGHT0
|
||||
ret
|
||||
|
||||
align 4
|
||||
proc prop_key uses eax ebx
|
||||
mcall 2
|
||||
|
||||
test word [edit1.flags],10b ;ed_focus
|
||||
@ -433,7 +552,11 @@ push eax
|
||||
stdcall [edit_box_key], edit3
|
||||
jmp .end
|
||||
@@:
|
||||
cmp dword[el_focus], tree3
|
||||
jne @f
|
||||
stdcall [tl_key], tree3
|
||||
jmp .end
|
||||
@@:
|
||||
|
||||
cmp ah,178 ;Up
|
||||
jne @f
|
||||
@ -468,12 +591,13 @@ push eax
|
||||
;jmp .end
|
||||
@@:
|
||||
.end:
|
||||
pop eax
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
prop_mouse:
|
||||
;push ecx edi
|
||||
stdcall [kmainmenu_dispatch_cursorevent], [main_menu]
|
||||
stdcall [tl_mouse], tree3
|
||||
stdcall [edit_box_mouse], edit1
|
||||
stdcall [edit_box_mouse], edit2
|
||||
@ -557,6 +681,21 @@ prop_button:
|
||||
pop esi edi ecx ebx eax
|
||||
jmp prop_still.end
|
||||
@@:
|
||||
cmp ah,5
|
||||
jne @f
|
||||
call mnu_vertexes_on_off
|
||||
jmp prop_still.end
|
||||
@@:
|
||||
cmp ah,6
|
||||
jne @f
|
||||
call mnu_faces_on_off
|
||||
jmp prop_still.end
|
||||
@@:
|
||||
cmp ah,7
|
||||
jne @f
|
||||
call mnu_light_on_off
|
||||
jmp prop_still.end
|
||||
@@:
|
||||
|
||||
cmp ah,1
|
||||
jne prop_still.end
|
||||
@ -597,6 +736,39 @@ get_point_coords:
|
||||
ret
|
||||
|
||||
align 4
|
||||
proc prop_timer_funct uses eax
|
||||
;¯à®á¬ âਢ ¥¬ ¢ë¤¥«¥ãî ª®®à¤¨ âã
|
||||
stdcall [tl_node_get_data],tree3
|
||||
cmp [cursor_last_draw],eax
|
||||
je @f
|
||||
mov [cursor_last_draw],eax
|
||||
call draw_3d
|
||||
@@:
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
mnu_vertexes_on_off:
|
||||
xor dword[draw_mode], 1 shl bit_vertexes
|
||||
ret
|
||||
|
||||
align 4
|
||||
mnu_faces_on_off:
|
||||
xor dword[draw_mode], 1 shl bit_faces
|
||||
ret
|
||||
|
||||
align 4
|
||||
mnu_light_on_off:
|
||||
xor dword[draw_mode], 1 shl bit_light
|
||||
ret
|
||||
|
||||
align 4
|
||||
draw_mode dd 0
|
||||
obj_poi_data dd 0 ;㪠§ â¥«ì ª®®à¤¨ âë ¢¥àè¨
|
||||
obj_poi_count dd 0 ;ª®««¨ç¥á⢮ ¢¥àè¨
|
||||
obj_tri_data dd 0 ;㪠§ â¥«ì ¤ ë¥ âà¥ã£®«ì¨ª®¢
|
||||
obj_tri_count dd 0 ;ª®««¨ç¥á⢮ âà¥ã£®«ì¨ª®¢
|
||||
cursor_last_draw dd 0 ;¯®«®¦¥¨¥ ªãàá®à ¯à¨ ¯®á«¥¤¥© ¯à®à¨á®¢ª¥ 3d ®ª
|
||||
sph_radius dd 0 ;à ¤¨ãá áä¥àë ¤«ï ¢ë¤¥«¥¨ï ªâ¨¢®© â®çª¨
|
||||
obj_x_max dd 0
|
||||
obj_x_min dd 0
|
||||
@ -615,12 +787,12 @@ capt_p dd 0
|
||||
|
||||
;¤¥à¥¢® á ®¡ê¥ªâ ¬¨ ¢ ¯®«ì§®¢ ⥫ì᪮¬ ä ©«¥
|
||||
tree3 tree_list MAX_OBJECT_SIZE,3, tl_key_no_edit+tl_list_box_mode,\
|
||||
16,16, 0xffffff,0xb0d0ff,0x400040, 5,270,303,160, 16, 4,0, el_focus,\
|
||||
16,16, 0xffffff,0xb0d0ff,0x400040, 5,290,303,140, 16, 4,0, el_focus,\
|
||||
w_scr_t3,get_point_coords
|
||||
|
||||
edit1 edit_box 80, 76, 249, 0xffd0d0, 0xff, 0x80ff, 0, 0x8000, 34, string1, mouse_dd, 0
|
||||
edit2 edit_box 80, 160, 249, 0xd0d0ff, 0xff, 0x80ff, 0, 0x8000, 34, string2, mouse_dd, 0
|
||||
edit3 edit_box 80, 244, 249, 0xd0ffd0, 0xff, 0x80ff, 0, 0x8000, 34, string3, mouse_dd, 0
|
||||
edit1 edit_box 80, 76, 269, 0xffd0d0, 0xff, 0x80ff, 0, 0x8000, 34, string1, mouse_dd, 0
|
||||
edit2 edit_box 80, 160, 269, 0xd0d0ff, 0xff, 0x80ff, 0, 0x8000, 34, string2, mouse_dd, 0
|
||||
edit3 edit_box 80, 244, 269, 0xd0ffd0, 0xff, 0x80ff, 0, 0x8000, 34, string3, mouse_dd, 0
|
||||
editboxes_end:
|
||||
|
||||
string1 rb 34
|
||||
|
Loading…
Reference in New Issue
Block a user