add multi select vertices & average coordinates: x,y,z

git-svn-id: svn://kolibrios.org@5944 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA
2015-12-02 12:25:32 +00:00
parent ffbaffb412
commit 3a5fd263ae
5 changed files with 350 additions and 24 deletions

View File

@@ -13,6 +13,8 @@ include 'lang.inc'
include 'info_fun_float.inc' include 'info_fun_float.inc'
include 'info_menu.inc' include 'info_menu.inc'
offs_zbuf_pbuf equ 24 ;const. from 'zbuffer.inc'
debug equ 0 debug equ 0
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
@@ -44,7 +46,7 @@ image_data_toolbar dd 0
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;ࠧ<><E0A0A7><EFBFBD> bmp 䠩<><E4A0A9> <20> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;ࠧ<><E0A0A7><EFBFBD> bmp 䠩<><E4A0A9> <20> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
icon_tl_sys dd 0 ;㪠<><E3AAA0><EFBFBD><E2A5A5> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E2A5AC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> icon_tl_sys dd 0 ;㪠<><E3AAA0><EFBFBD><E2A5A5> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E2A5AC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
icon_toolbar dd 0 ;㪠<><E3AAA0><EFBFBD><E2A5A5> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ꥪ⮢ icon_toolbar dd 0 ;㪠<><E3AAA0><EFBFBD><E2A5A5> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD><E0A0AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ꥪ⮢
TOOLBAR_ICON_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*8+54 ;ࠧ<><E0A0A7><EFBFBD> bmp 䠩<><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ꥪ⮢ TOOLBAR_ICON_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*10+54 ;ࠧ<><E0A0A7><EFBFBD> bmp 䠩<><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ꥪ⮢
; ;
IMAGE_FILE1_SIZE equ 128*144*3+54 ;ࠧ<><E0A0A7><EFBFBD><><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E0A0A6><EFBFBD><EFBFBD><EFBFBD> IMAGE_FILE1_SIZE equ 128*144*3+54 ;ࠧ<><E0A0A7><EFBFBD><><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E0A0A6><EFBFBD><EFBFBD><EFBFBD>
@@ -94,6 +96,8 @@ offs_last_timer dd 0 ;
ID_ICON_CHUNK_MAIN equ 0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ID_ICON_CHUNK_MAIN equ 0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
ID_ICON_CHUNK_NOT_FOUND equ 1 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2ADAE> <20><><EFBFBD><EFBFBD><EFBFBD> ID_ICON_CHUNK_NOT_FOUND equ 1 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2ADAE> <20><><EFBFBD><EFBFBD><EFBFBD>
ID_ICON_DATA equ 2 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID_ICON_DATA equ 2 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ID_ICON_POINT equ 8
ID_ICON_POINT_SEL equ 9
FILE_ERROR_CHUNK_SIZE equ -3 ;<3B><EFBFBD><E8A8A1> <20><><E0A0A7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> FILE_ERROR_CHUNK_SIZE equ -3 ;<3B><EFBFBD><E8A8A1> <20><><E0A0A7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
@@ -149,10 +153,27 @@ start:
stdcall [ksubmenu_add], [main_menu_view], eax stdcall [ksubmenu_add], [main_menu_view], eax
stdcall [kmenuitem_new], KMENUITEM_SEPARATOR, 0, 0 stdcall [kmenuitem_new], KMENUITEM_SEPARATOR, 0, 0
stdcall [ksubmenu_add], [main_menu_view], eax 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
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Reset, 9 stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Veiw_Reset, 9
stdcall [ksubmenu_add], [main_menu_view], eax 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
stdcall [ksubmenu_new]
mov [main_menu_vertexes], eax
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Vertexes_Select, 10
stdcall [ksubmenu_add], [main_menu_vertexes], eax
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Vertexes_Deselect, 11
stdcall [ksubmenu_add], [main_menu_vertexes], eax
stdcall [kmenuitem_new], KMENUITEM_SEPARATOR, 0, 0
stdcall [ksubmenu_add], [main_menu_vertexes], eax
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Average_x, 12
stdcall [ksubmenu_add], [main_menu_vertexes], eax
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Average_y, 13
stdcall [ksubmenu_add], [main_menu_vertexes], eax
stdcall [kmenuitem_new], KMENUITEM_NORMAL, sz_main_menu_Average_z, 14
stdcall [ksubmenu_add], [main_menu_vertexes], eax
stdcall [kmenuitem_new], KMENUITEM_SUBMENU, sz_main_menu_Vertexes, [main_menu_vertexes]
stdcall [ksubmenu_add], [main_menu], eax
mov dword[w_scr_t1.type],1 mov dword[w_scr_t1.type],1
stdcall dword[tl_data_init], tree1 stdcall dword[tl_data_init], tree1
@@ -216,6 +237,8 @@ start:
mov [color_vert],eax mov [color_vert],eax
stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_face,0x808080 stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_face,0x808080
mov [color_face],eax mov [color_face],eax
stdcall dword[ini_get_color],file_name,ini_sec_w3d,key_select,0xffff00
mov [color_select],eax
finit finit
fild dword[color_bk+8] fild dword[color_bk+8]
fdiv dword[fl255] fdiv dword[fl255]
@@ -1480,6 +1503,13 @@ buf_0: dd 0 ;㪠
.color: dd 0xffffd0 ;+16 color .color: dd 0xffffd0 ;+16 color
db 24 ;+20 bit in pixel db 24 ;+20 bit in pixel
align 4
buf_ogl:
dd 0 ;㪠<><E3AAA0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A0A6><EFBFBD><EFBFBD>
dw 3d_wnd_l,3d_wnd_t ;+4 left,top
dd 3d_wnd_w,3d_wnd_h ;+8 w,h
dd 0,24 ;+16 color,bit in pixel
align 4 align 4
buf_1: buf_1:
dd 0 ;㪠<><E3AAA0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A0A6><EFBFBD><EFBFBD> dd 0 ;㪠<><E3AAA0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E0A0A6><EFBFBD><EFBFBD>
@@ -1512,9 +1542,9 @@ white_light dd 0.8, 0.8, 0.8, 1.0 ;
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; <20><><EFBFBD><E0A0AC><EFBFBD><EFBFBD><><E4AEAD><EFBFBD><EFBFBD><EFBFBD> <20>ᢥ饭<E1A2A5><E9A5AD> lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; <20><><EFBFBD><E0A0AC><EFBFBD><EFBFBD><><E4AEAD><EFBFBD><EFBFBD><EFBFBD> <20>ᢥ饭<E1A2A5><E9A5AD>
if lang eq ru if lang eq ru
capt db 'info 3ds <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 29.11.15',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> capt db 'info 3ds <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 02.12.15',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
else else
capt db 'info 3ds version 29.11.15',0 ;window caption capt db 'info 3ds version 02.12.15',0 ;window caption
end if end if
align 16 align 16
@@ -1532,6 +1562,7 @@ i_end:
color_bk rd 3 color_bk rd 3
color_vert rd 1 color_vert rd 1
color_face rd 1 color_face rd 1
color_select rd 1
rb 2048 rb 2048
align 16 align 16
thread_coords: thread_coords:

View File

@@ -1,11 +1,12 @@
[Window 3d] [Window 3d]
draw_vertices=1 draw_vertices=1
draw_faces=1 draw_faces=1
draw_faces_fill=0 draw_faces_fill=0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0A0AD> (0-<2D>몫., 1-<2D><><EFBFBD>.)
draw_light=0 draw_light=0 ;<3B>ᢥ饭<E1A2A5><E9A5AD> (0-<2D>몫., 1-<2D><><EFBFBD>.)
col_ox=255,0,0 col_ox=255,0,0
col_oy=0,0,255 col_oy=0,0,255
col_oz=0,255,0 col_oz=0,255,0
col_bkgnd=0,32,64 col_bkgnd=0,32,64 ;梥<><>
col_vertices=255,255,255 col_vertices=255,255,255 ;梥<> <20><><EFBFBD>
col_faces=128,192,192 col_faces=128,192,192 ;梥<> <20><EFBFBD><E0A0AD>
col_select=255,255,0 ;梥<> <20><EFBFBD><EBA4A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>

View File

@@ -1 +1 @@

View File

@@ -29,6 +29,7 @@ key_oz db 'col_oz',0
key_bk db 'col_bkgnd',0 key_bk db 'col_bkgnd',0
key_vert db 'col_vertices',0 key_vert db 'col_vertices',0
key_face db 'col_faces',0 key_face db 'col_faces',0
key_select db 'col_select',0
prop_wnd_run db 0 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1-<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> prop_wnd_run db 0 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1-<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -45,7 +46,13 @@ obj_point: ;
.text: .text:
rb MAX_OBJECT_SIZE rb MAX_OBJECT_SIZE
if lang eq ru
txt_select_vert: db '<27><><EFBFBD><EFBFBD>: '
else
txt_select_vert: db 'Select: '
end if
.count:
dq 0,0
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>㭪樥<EFBFBD> but_wnd_coords ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>㭪樥<EFBFBD> but_wnd_coords
align 4 align 4
@@ -67,7 +74,7 @@ pushad
cmp word[ebx],CHUNK_OBJBLOCK cmp word[ebx],CHUNK_OBJBLOCK
jne .end_oblo jne .end_oblo
mov dword[capt_p],txt_4000 mov dword[capt_p],txt_4000
call found_block_data stdcall found_block_data, tree1
cmp eax,0 cmp eax,0
je .no_points je .no_points
mov esi,eax mov esi,eax
@@ -90,7 +97,7 @@ pushad
cmp word[ebx],CHUNK_TRIMESH cmp word[ebx],CHUNK_TRIMESH
jne .end_trim jne .end_trim
mov dword[capt_p],txt_4100 mov dword[capt_p],txt_4100
call found_block_data stdcall found_block_data, tree1
cmp eax,0 cmp eax,0
je .no_points je .no_points
mov esi,eax mov esi,eax
@@ -117,7 +124,7 @@ pushad
movzx edx,word[ebx+6] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> movzx edx,word[ebx+6] ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
add ebx,8 add ebx,8
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
call found_block_data stdcall found_block_data, tree1
cmp eax,0 cmp eax,0
je .set_points je .set_points
mov esi,eax mov esi,eax
@@ -198,7 +205,7 @@ pushad
stdcall str_cat, obj_point.text,esi stdcall str_cat, obj_point.text,esi
stdcall str_cat, obj_point.text,Data_String stdcall str_cat, obj_point.text,Data_String
loop @b loop @b
stdcall dword[tl_node_add], tree3,(ID_ICON_DATA shl 16),obj_point stdcall dword[tl_node_add], tree3,(ID_ICON_POINT shl 16),obj_point
stdcall dword[tl_cur_next], tree3 stdcall dword[tl_cur_next], tree3
dec edx dec edx
cmp edx,0 cmp edx,0
@@ -228,6 +235,11 @@ pushad
and ebx,0x3f3f3f and ebx,0x3f3f3f
add eax,ebx add eax,ebx
mov [edit3.color],eax mov [edit3.color],eax
mov eax,dword[ctx1] ;eax -> TinyGLContext.GLContext
mov eax,[eax] ;eax -> ZBuffer
mov eax,[eax+offs_zbuf_pbuf] ;eax -> ZBuffer.pbuf
mov dword[buf_ogl],eax
popad popad
call prop_red_win call prop_red_win
@@ -318,6 +330,7 @@ prop_wnd_clear_param:
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ꥪ⮢ ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ꥪ⮢
mov dword[obj_poi_data],0 mov dword[obj_poi_data],0
mov dword[obj_poi_count],0 mov dword[obj_poi_count],0
mov dword[obj_poi_sel_c],0
mov dword[obj_tri_data],0 mov dword[obj_tri_data],0
mov dword[obj_tri_count],0 mov dword[obj_tri_count],0
ret ret
@@ -328,24 +341,24 @@ prop_wnd_clear_param:
;output: ;output:
;eax - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> (<EFBFBD><EFBFBD><EFBFBD> 0 <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>) ;eax - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> (<EFBFBD><EFBFBD><EFBFBD> 0 <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
align 4 align 4
found_block_data: proc found_block_data uses ebx ecx edx, tlist:dword
push ebx ecx mov edx,[tlist]
mov ecx,eax mov ecx,eax
stdcall [tl_node_poi_get_info], tree1,0 stdcall [tl_node_poi_get_info], edx,0
@@: @@:
mov ebx,eax mov ebx,eax
stdcall [tl_node_poi_get_data], tree1,ebx stdcall [tl_node_poi_get_data], edx,ebx
cmp eax,ecx cmp eax,ecx
je @f ;<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> je @f ;<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>
stdcall [tl_node_poi_get_next_info], tree1,ebx stdcall [tl_node_poi_get_next_info], edx,ebx
cmp eax,0 cmp eax,0
jne @b jne @b
jmp .end jmp .end
@@: @@:
mov eax,ebx mov eax,ebx
.end: .end:
pop ecx ebx
ret ret
endp
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
align 4 align 4
@@ -549,7 +562,7 @@ draw_3d:
stdcall [glEnd] stdcall [glEnd]
.end_points: .end_points:
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
stdcall [tl_node_get_data],tree3 stdcall [tl_node_get_data],tree3
cmp eax,0 cmp eax,0
je @f je @f
@@ -568,13 +581,38 @@ draw_3d:
stdcall [glVertex3f], [eax],[eax+4],[obj_z_max] stdcall [glVertex3f], [eax],[eax+4],[obj_z_max]
stdcall [glEnd] stdcall [glEnd]
stdcall [glColor3f], 1.0, 1.0, 0.0 stdcall [glColor3ub],[color_select+2],[color_select+1],[color_select]
stdcall [glPushMatrix] stdcall [glPushMatrix]
stdcall [glTranslatef], [eax],[eax+4],[eax+8] stdcall [glTranslatef], [eax],[eax+4],[eax+8]
stdcall [gluSphere], [qObj], [sph_radius], 8,8 stdcall [gluSphere], [qObj], [sph_radius], 8,8
stdcall [glPopMatrix] stdcall [glPopMatrix]
@@: @@:
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
cmp dword[obj_poi_sel_c],0
je .end_select
mov ecx,dword[obj_poi_sel_c]
stdcall [glColor3ub],[color_select+2],[color_select+1],[color_select]
stdcall dword[tl_node_poi_get_info], tree3,0
@@:
cmp eax,0
je .end_select
mov ebx,eax
cmp word[ebx],ID_ICON_POINT_SEL
jne .next_sel
stdcall [tl_node_poi_get_data], tree3,ebx
mov eax,[eax]
stdcall [glPushMatrix]
stdcall [glTranslatef], [eax],[eax+4],[eax+8]
stdcall [gluSphere], [qObj], [sph_radius], 4,4
stdcall [glPopMatrix]
dec ecx
jz .end_select
.next_sel:
stdcall dword[tl_node_poi_get_next_info], tree3,ebx
jmp @b
.end_select:
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
bt dword[draw_mode],bit_faces bt dword[draw_mode],bit_faces
jnc .end_triangles jnc .end_triangles
@@ -614,6 +652,10 @@ draw_3d:
.end_triangles: .end_triangles:
stdcall [glPopMatrix] stdcall [glPopMatrix]
cmp dword[obj_poi_sel_c],0
je @f
stdcall [buf2d_draw_text], buf_ogl, buf_1,txt_select_vert,5,3,[color_select]
@@:
stdcall [kosglSwapBuffers] stdcall [kosglSwapBuffers]
.end_f: .end_f:
ret ret
@@ -849,6 +891,7 @@ prop_button:
stdcall str_cat, obj_point.text,esi stdcall str_cat, obj_point.text,esi
stdcall str_cat, obj_point.text,Data_String stdcall str_cat, obj_point.text,Data_String
loop .coord loop .coord
mov byte[obj_point.text],'*' ;<EFBFBD>⬥砥<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
stdcall dword[tl_node_set_data], tree3,obj_point stdcall dword[tl_node_set_data], tree3,obj_point
stdcall dword[tl_draw], tree3 stdcall dword[tl_draw], tree3
mov byte[can_save],1 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '<27><><EFBFBD><EFBFBD><E0A0AD><EFBFBD>' mov byte[can_save],1 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '<27><><EFBFBD><EFBFBD><E0A0AD><EFBFBD>'
@@ -883,6 +926,31 @@ prop_button:
call mnu_reset_settings call mnu_reset_settings
jmp prop_still.end jmp prop_still.end
@@: @@:
cmp ah,10
jne @f
call mnu_vertexes_select
jmp prop_still.end
@@:
cmp ah,11
jne @f
call mnu_vertexes_deselect
jmp prop_still.end
@@:
cmp ah,12
jne @f
call mnu_reset_average_x
jmp prop_still.end
@@:
cmp ah,13
jne @f
call mnu_reset_average_y
jmp prop_still.end
@@:
cmp ah,14
jne @f
call mnu_reset_average_z
jmp prop_still.end
@@:
cmp ah,1 cmp ah,1
jne prop_still.end jne prop_still.end
@@ -967,6 +1035,231 @@ mnu_reset_settings:
m2m dword[draw_mode],dword[def_dr_mode] m2m dword[draw_mode],dword[def_dr_mode]
ret ret
align 4
proc mnu_vertexes_select uses eax ebx
stdcall [tl_node_get_data],tree3
cmp eax,0
je .no_points
stdcall found_block_data,tree3
cmp eax,0
je .no_points
mov bx,word[eax]
cmp bx,ID_ICON_POINT_SEL
je @f
mov word[eax],ID_ICON_POINT_SEL
inc dword[obj_poi_sel_c]
jmp .change
@@:
mov word[eax],ID_ICON_POINT
dec dword[obj_poi_sel_c]
.change:
mov eax,[obj_poi_sel_c]
stdcall convert_int_to_str, txt_select_vert.count,16
.no_points:
ret
endp
align 4
proc mnu_vertexes_deselect uses eax
cmp dword[obj_poi_sel_c],0
je .no_points
mov dword[obj_poi_sel_c],0
stdcall [tl_node_poi_get_info], tree3,0
cmp eax,0
je .no_points
@@:
mov word[eax],ID_ICON_POINT
stdcall [tl_node_poi_get_next_info], tree3,eax
cmp eax,0
jne @b
.no_points:
ret
endp
align 4
proc mnu_reset_average_x uses eax ebx ecx edx edi
cmp dword[obj_poi_sel_c],2
jl .end_select
finit
fldz
mov ecx,dword[obj_poi_sel_c]
stdcall dword[tl_node_poi_get_info], tree3,0
@@:
cmp eax,0
je .end_select
mov ebx,eax
cmp word[ebx],ID_ICON_POINT_SEL
jne .next_sel0
stdcall [tl_node_poi_get_data], tree3,ebx
mov eax,[eax]
fadd dword[eax]
dec ecx
jz @f
.next_sel0:
stdcall dword[tl_node_poi_get_next_info], tree3,ebx
jmp @b
@@:
fidiv dword[obj_poi_sel_c]
fstp dword[eax]
mov edx,[eax]
mov ecx,dword[obj_poi_sel_c]
stdcall dword[tl_node_poi_get_info], tree3,0
@@:
cmp eax,0
je .end_select
mov ebx,eax
cmp word[ebx],ID_ICON_POINT_SEL
jne .next_sel1
stdcall [tl_node_poi_get_data], tree3,ebx
mov edi,eax
mov eax,[eax]
mov [eax],edx
stdcall update_tree, edi
dec ecx
jz @f
.next_sel1:
stdcall dword[tl_node_poi_get_next_info], tree3,ebx
jmp @b
@@:
.end_select:
ret
endp
align 4
proc mnu_reset_average_y uses eax ebx ecx edx edi
cmp dword[obj_poi_sel_c],2
jl .end_select
finit
fldz
mov ecx,dword[obj_poi_sel_c]
stdcall dword[tl_node_poi_get_info], tree3,0
@@:
cmp eax,0
je .end_select
mov ebx,eax
cmp word[ebx],ID_ICON_POINT_SEL
jne .next_sel0
stdcall [tl_node_poi_get_data], tree3,ebx
mov eax,[eax]
fadd dword[eax+4]
dec ecx
jz @f
.next_sel0:
stdcall dword[tl_node_poi_get_next_info], tree3,ebx
jmp @b
@@:
fidiv dword[obj_poi_sel_c]
fstp dword[eax+4]
mov edx,[eax+4]
mov ecx,dword[obj_poi_sel_c]
stdcall dword[tl_node_poi_get_info], tree3,0
@@:
cmp eax,0
je .end_select
mov ebx,eax
cmp word[ebx],ID_ICON_POINT_SEL
jne .next_sel1
stdcall [tl_node_poi_get_data], tree3,ebx
mov edi,eax
mov eax,[eax]
mov [eax+4],edx
stdcall update_tree, edi
dec ecx
jz @f
.next_sel1:
stdcall dword[tl_node_poi_get_next_info], tree3,ebx
jmp @b
@@:
.end_select:
ret
endp
align 4
proc mnu_reset_average_z uses eax ebx ecx edx edi
cmp dword[obj_poi_sel_c],2
jl .end_select
finit
fldz
mov ecx,dword[obj_poi_sel_c]
stdcall dword[tl_node_poi_get_info], tree3,0
@@:
cmp eax,0
je .end_select
mov ebx,eax
cmp word[ebx],ID_ICON_POINT_SEL
jne .next_sel0
stdcall [tl_node_poi_get_data], tree3,ebx
mov eax,[eax]
fadd dword[eax+8]
dec ecx
jz @f
.next_sel0:
stdcall dword[tl_node_poi_get_next_info], tree3,ebx
jmp @b
@@:
fidiv dword[obj_poi_sel_c]
fstp dword[eax+8]
mov edx,[eax+8]
mov ecx,dword[obj_poi_sel_c]
stdcall dword[tl_node_poi_get_info], tree3,0
@@:
cmp eax,0
je .end_select
mov ebx,eax
cmp word[ebx],ID_ICON_POINT_SEL
jne .next_sel1
stdcall [tl_node_poi_get_data], tree3,ebx
mov edi,eax
mov eax,[eax]
mov [eax+8],edx
stdcall update_tree, edi
dec ecx
jz @f
.next_sel1:
stdcall dword[tl_node_poi_get_next_info], tree3,ebx
jmp @b
@@:
.end_select:
ret
endp
align 4
proc update_tree h_mem:dword
pushad
mov edi,[h_mem]
mov ebx,[edi]
finit
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> ᯨ᪥ tree3 <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
mov word[NumberSymbolsAD],5
mov dword[obj_point.text],0
cld
mov ecx,3
.coord:
fld dword[ebx]
fstp qword[Data_Double]
call DoubleFloat_to_String
add ebx,4
stdcall str_len, Data_String
mov esi,txt_space
add esi,eax
cmp esi,txt_space.end
jl .normal_size
mov esi,txt_space.end-1 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.normal_size:
stdcall str_cat, obj_point.text,esi
stdcall str_cat, obj_point.text,Data_String
loop .coord
mov esi,obj_point.text
mov byte[esi],'*' ;<EFBFBD>⬥砥<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mov byte[can_save],1 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> '<27><><EFBFBD><EFBFBD><E0A0AD><EFBFBD>'
add edi,4
mov ecx,MAX_OBJECT_SIZE-4
rep movsb
popad
ret
endp
align 4 align 4
def_dr_mode dd 0 ;<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> def_dr_mode dd 0 ;<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
delt_size dd 3.0 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> delt_size dd 3.0 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -979,6 +1272,7 @@ angle_dym dd 1.3335 ;~ 3d_wnd_h/180
draw_mode dd 0 ;<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> draw_mode dd 0 ;<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
obj_poi_data dd 0 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> obj_poi_data dd 0 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
obj_poi_count dd 0 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> obj_poi_count dd 0 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
obj_poi_sel_c dd 0 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>
obj_tri_data dd 0 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> obj_tri_data dd 0 ;<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
obj_tri_count dd 0 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> obj_tri_count dd 0 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cursor_last_draw dd 0 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3d <EFBFBD><EFBFBD><EFBFBD><EFBFBD> cursor_last_draw dd 0 ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3d <EFBFBD><EFBFBD><EFBFBD><EFBFBD>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB