Subversion Repositories Kolibri OS

Rev

Rev 5930 | Rev 5938 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5930 Rev 5935
1
;
1
;
2
; ¢ í⮬ ä ©«¥ ᮡ࠭ë ä㭪樨 ­ã¦­ë¥ ¤«ï ᮧ¤ ­¨ï ¨
2
; ¢ í⮬ ä ©«¥ ᮡ࠭ë ä㭪樨 ­ã¦­ë¥ ¤«ï ᮧ¤ ­¨ï ¨
3
; à ¡®âë ®ª­  á ª®®à¤¨­ â ¬¨
3
; à ¡®âë ®ª­  á ª®®à¤¨­ â ¬¨ ¢¥à設
4
;
4
;
5
 
5
 
6
prop_wnd_width equ 340 ;è¨à¨­  ®ª­  ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ 
6
prop_wnd_width equ 340 ;è¨à¨­  ®ª­  ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ 
7
prop_wnd_height equ 460
7
prop_wnd_height equ 460
8
SIZE_ONE_FLOAT equ 14
8
SIZE_ONE_FLOAT equ 14
9
MAX_OBJECT_SIZE equ (4+SIZE_ONE_FLOAT*3+1)
9
MAX_OBJECT_SIZE equ (4+SIZE_ONE_FLOAT*3+1)
-
 
10
 
-
 
11
bit_vertexes equ 0
-
 
12
bit_faces equ 1
-
 
13
bit_faces_fill equ 2
-
 
14
bit_light equ 3
-
 
15
def_dr_mode equ 0x1111b
10
 
16
 
11
prop_wnd_run db 0 ;¯¥à¥¬¥­­ ï á«¥¤ïé ï §  ⥬ çâ®-¡ë ­¥ § ¯ã᪠âì ¡®«ìè¥ 1-£® ®ª­  ᮠ᢮©á⢠¬¨ ®¤­®¢à¥¬¥­­®
17
prop_wnd_run db 0 ;¯¥à¥¬¥­­ ï á«¥¤ïé ï §  ⥬ çâ®-¡ë ­¥ § ¯ã᪠âì ¡®«ìè¥ 1-£® ®ª­  ᮠ᢮©á⢠¬¨ ®¤­®¢à¥¬¥­­®
12
 
18
 
13
txt_q db '?',0
19
txt_q db '?',0
14
txt_space:
20
txt_space:
15
	db SIZE_ONE_FLOAT dup(' ')
21
	db SIZE_ONE_FLOAT dup(' ')
16
.end:
22
.end:
17
	db 0
23
	db 0
18
 
24
 
19
rad_c dd 150 ;¤«ï ¢ëç¨á«¥­¨ï à ¤¨ãá 
25
rad_c dd 150 ;¤«ï ¢ëç¨á«¥­¨ï à ¤¨ãá 
20
 
26
 
21
obj_point: ;¤®¡ ¢«ï¥¬ë© ®¡ê¥ªâ
27
obj_point: ;¤®¡ ¢«ï¥¬ë© ®¡ê¥ªâ
22
	dd 0   ;㪠§ â¥«ì
28
	dd 0   ;㪠§ â¥«ì
23
.text:
29
.text:
24
	rb MAX_OBJECT_SIZE
30
	rb MAX_OBJECT_SIZE
25
 
31
 
26
 
32
 
27
 
33
 
28
;¤ ­®¥ ®ª­® (¯à®æ¥áá) ¢ë§ë¢ ¥âìáï ä㭪樥© but_wnd_coords
34
;¤ ­®¥ ®ª­® (¯à®æ¥áá) ¢ë§ë¢ ¥âìáï ä㭪樥© but_wnd_coords
29
align 4
35
align 4
30
prop_start:
36
prop_start:
31
pushad
37
pushad
32
	mcall 40,0x27 ;¬ áª  ®¦¨¤ ¥¬ëå ᮡë⨩
38
	mcall 40,0x27 ;¬ áª  ®¦¨¤ ¥¬ëå ᮡë⨩
33
	inc byte[prop_wnd_run]
39
	inc byte[prop_wnd_run]
34
	mov dword[w_scr_t3.type],1
40
	mov dword[w_scr_t3.type],1
-
 
41
	call prop_wnd_clear_param
35
 
42
 
36
	stdcall [tl_node_get_data],tree1
43
	stdcall [tl_node_get_data],tree1
37
	xor edx,edx
44
	xor edx,edx
38
	mov dword[capt_p],txt_q
45
	mov dword[capt_p],txt_q
39
	cmp eax,0
46
	cmp eax,0
40
	je .no_points
47
	je .no_points
41
		mov ebx,dword[eax] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª 
48
		mov ebx,[eax] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª 
42
		add ebx,dword[open_file_lif]
49
		add ebx,[open_file_lif]
43
 
50
 
44
		cmp word[ebx],CHUNK_VERTLIST
51
		cmp word[ebx],CHUNK_VERTLIST
45
		jne @f
52
		jne .end_vlist
46
			movzx edx,word[ebx+6] ;ª®««¨ç¥á⢮ â®ç¥ª
53
			movzx edx,word[ebx+6] ;ª®««¨ç¥á⢮ â®ç¥ª
47
			add ebx,8
54
			add ebx,8
48
			mov dword[capt_p],txt_4110
55
			mov dword[capt_p],txt_4110
-
 
56
			;¯®¨áª ¤ ­­ëå ¤«ï âà¥ã£®«ìª®¢
-
 
57
			mov ecx,eax
-
 
58
			stdcall [tl_node_poi_get_info], tree1,0
-
 
59
			@@:
-
 
60
				mov esi,eax
-
 
61
				stdcall [tl_node_poi_get_data], tree1,esi
-
 
62
				cmp eax,ecx
-
 
63
				je @f ;¥á«¨ ¯®¯ «¨ ­  ¢ë¡à ­­ë© 㧥«
-
 
64
				stdcall [tl_node_poi_get_next_info], tree1,esi
-
 
65
				cmp eax,0
-
 
66
				jne @b
49
			jmp .no_points
67
				jmp .set_points
50
		@@:
68
			@@:
-
 
69
			;¥á«¨ ­ è«¨ ¢ë¡à ­­ë© 㧥«, â® ¤ «¥¥ ¯ëâ ¥¬áï ­ ©â¨ 㧥« á âà¥ã£®«ì­¨ª ¬¨
-
 
70
			movzx ecx,byte[esi+2] ;cl - ã஢¥­ì ¢ë¡à ­­®£® 㧫 
-
 
71
			.cycle_0:
-
 
72
				stdcall [tl_node_poi_get_next_info], tree1,esi
-
 
73
				cmp eax,0
-
 
74
				je .set_points
-
 
75
				mov esi,eax
-
 
76
				stdcall [tl_node_poi_get_data], tree1,esi
-
 
77
				cmp byte[esi+2],cl
-
 
78
				jl .set_points
-
 
79
				je .found
-
 
80
				jmp .cycle_0
-
 
81
			.found: ;¥á«¨ ­ è«¨ 㧥« ⮣®¦¥ ã஢­ï çâ® ¨ ¢ë¡à ­­ë© 㧥«
-
 
82
				cmp eax,0
-
 
83
				je .set_points
-
 
84
				mov eax,[eax]
-
 
85
				add eax,[open_file_lif]
-
 
86
				cmp word[eax],CHUNK_FACELIST
-
 
87
				jne .cycle_0
-
 
88
				movzx ecx,word[eax+6]
-
 
89
				mov [obj_tri_count],ecx
-
 
90
				add eax,8 ;2+4+2 (chunk+size+count)
-
 
91
				mov [obj_tri_data],eax
-
 
92
			jmp .set_points
-
 
93
		.end_vlist:
51
		cmp word[ebx],0xb013
94
		cmp word[ebx],CHUNK_TRACKPIVOT
52
		jne @f
95
		jne @f
53
			inc edx
96
			inc edx
54
			add ebx,6
97
			add ebx,6
55
			mov dword[capt_p],txt_b013
98
			mov dword[capt_p],txt_b013
56
			jmp .no_points
99
			jmp .set_points
57
		@@:
100
		@@:
58
		cmp word[ebx],0xb014
101
		cmp word[ebx],0xb014
59
		jne @f
102
		jne @f
60
			mov edx,2
103
			mov edx,2
61
			add ebx,6
104
			add ebx,6
62
			mov dword[capt_p],txt_b014
105
			mov dword[capt_p],txt_b014
63
			;jmp .no_points
106
			;jmp .set_points
64
		@@:
107
		@@:
-
 
108
		.set_points:
-
 
109
		mov [obj_poi_data],ebx
-
 
110
		mov [obj_poi_count],edx
65
	.no_points:
111
	.no_points:
66
 
112
 
67
	;­ áâனª  ᯨ᪠ ®¡ê¥ªâ®¢
113
	;­ áâனª  ᯨ᪠ ®¡ê¥ªâ®¢
68
	mov dword[tree3.info_max_count],2
114
	mov dword[tree3.info_max_count],2
69
	add dword[tree3.info_max_count],edx ;áâ ¢¨¬ ç¨á«® 㧫®¢, à ¢­®¥ ª®««¨ç¥áâ¢ã â®ç¥ª (+2 ­  ­ ç «® ¨ ª®­¥æ ᯨ᪠)
115
	add dword[tree3.info_max_count],edx ;áâ ¢¨¬ ç¨á«® 㧫®¢, à ¢­®¥ ª®««¨ç¥áâ¢ã â®ç¥ª (+2 ­  ­ ç «® ¨ ª®­¥æ ᯨ᪠)
70
	stdcall dword[tl_data_init], tree3
116
	stdcall dword[tl_data_init], tree3
71
	mov eax,dword[icon_tl_sys]
117
	mov eax,dword[icon_tl_sys]
72
	mov dword[tree3.data_img_sys],eax
118
	mov dword[tree3.data_img_sys],eax
73
	mov eax,dword[icon_toolbar]
119
	mov eax,dword[icon_toolbar]
74
	mov dword[tree3.data_img],eax
120
	mov dword[tree3.data_img],eax
75
 
121
 
76
	cmp edx,0
122
	cmp edx,0
77
	je .no_object
123
	je .no_object
78
		mov word[NumberSymbolsAD],5
124
		mov word[NumberSymbolsAD],5
79
		finit
125
		finit
80
		.new_point:
126
		.new_point:
81
			mov dword[obj_point],ebx
127
			mov dword[obj_point],ebx
82
			mov dword[obj_point.text],0
128
			mov dword[obj_point.text],0
83
			cld
129
			cld
84
			mov ecx,3
130
			mov ecx,3
85
			@@:
131
			@@:
86
				fld dword[ebx]
132
				fld dword[ebx]
87
				fstp qword[Data_Double]
133
				fstp qword[Data_Double]
88
				call DoubleFloat_to_String
134
				call DoubleFloat_to_String
89
				add ebx,4
135
				add ebx,4
90
				stdcall str_len, Data_String
136
				stdcall str_len, Data_String
91
				mov esi,txt_space
137
				mov esi,txt_space
92
				add esi,eax
138
				add esi,eax
93
				cmp esi,txt_space.end
139
				cmp esi,txt_space.end
94
				jl .normal_size
140
				jl .normal_size
95
					mov esi,txt_space.end-1 ;¬¨­¨¬ã¬ 1 ¯à®¡¥« ­ã¦­® ¤®¡ ¢¨âì, çâ®-¡ë æ¨äàë ­¥ ᫨¯ «¨áì
141
					mov esi,txt_space.end-1 ;¬¨­¨¬ã¬ 1 ¯à®¡¥« ­ã¦­® ¤®¡ ¢¨âì, çâ®-¡ë æ¨äàë ­¥ ᫨¯ «¨áì
96
				.normal_size:
142
				.normal_size:
97
				stdcall str_cat, obj_point.text,esi
143
				stdcall str_cat, obj_point.text,esi
98
				stdcall str_cat, obj_point.text,Data_String
144
				stdcall str_cat, obj_point.text,Data_String
99
				loop @b
145
				loop @b
100
			stdcall dword[tl_node_add], tree3,(ID_ICON_DATA shl 16),obj_point 
146
			stdcall dword[tl_node_add], tree3,(ID_ICON_DATA shl 16),obj_point 
101
			stdcall dword[tl_cur_next], tree3
147
			stdcall dword[tl_cur_next], tree3
102
			dec edx
148
			dec edx
103
			cmp edx,0
149
			cmp edx,0
104
			jg .new_point
150
			jg .new_point
105
			stdcall dword[tl_cur_beg], tree3
151
			stdcall dword[tl_cur_beg], tree3
106
	.no_object:
152
	.no_object:
107
	call obj_set_sizes
153
	call obj_set_sizes
108
	edit_boxes_set_sys_color edit1,editboxes_end,sc ;ãáâ ­®¢ª  á¨á⥬­ëå 梥⮢
154
	edit_boxes_set_sys_color edit1,editboxes_end,sc ;ãáâ ­®¢ª  á¨á⥬­ëå 梥⮢
109
	stdcall [edit_box_set_text], edit1, txt_q
155
	stdcall [edit_box_set_text], edit1, txt_q
110
	stdcall [edit_box_set_text], edit2, txt_q
156
	stdcall [edit_box_set_text], edit2, txt_q
111
	stdcall [edit_box_set_text], edit3, txt_q
157
	stdcall [edit_box_set_text], edit3, txt_q
112
popad
158
popad
113
 
159
 
114
	call prop_red_win
160
	call prop_red_win
115
 
161
 
116
;­¥ ®âà뢠âì íâã äã­ªæ¨î ®â ¯à¥¤ë¤ã饩
162
;­¥ ®âà뢠âì íâã äã­ªæ¨î ®â ¯à¥¤ë¤ã饩
117
align 4
163
align 4
118
prop_still:
164
prop_still:
119
	pushad
165
	pushad
-
 
166
 
120
	mcall 10
167
	mcall 23,10
-
 
168
	or eax,eax
-
 
169
	jnz @f
-
 
170
		call prop_timer_funct
-
 
171
		jmp .end
-
 
172
	@@:
121
 
173
 
122
	cmp al,1 ;¨§¬. ¯®«®¦¥­¨¥ ®ª­ 
174
	cmp al,1 ;¨§¬. ¯®«®¦¥­¨¥ ®ª­ 
123
	jne @f
175
	jne @f
124
		call prop_red_win
176
		call prop_red_win
125
		jmp .end
177
		jmp .end
126
	@@:
178
	@@:
127
	cmp al,2
179
	cmp al,2
128
	jne @f
180
	jne @f
129
		call prop_key
181
		call prop_key
130
		jmp .end
182
		jmp .end
131
	@@:
183
	@@:
132
	cmp al,3
184
	cmp al,3
133
	jz prop_button
185
	jz prop_button
134
	cmp al,6
186
	cmp al,6
135
	jne @f 
187
	jne @f 
136
		call prop_mouse
188
		call prop_mouse
137
	@@:
189
	@@:
138
.end:
190
.end:
139
	popad
191
	popad
140
	jmp prop_still
192
	jmp prop_still
141
 
193
 
142
align 4
194
align 4
143
prop_red_win:
195
prop_red_win:
144
pushad
196
pushad
145
	mcall 12,1
197
	mcall 12,1
146
 
198
 
147
	xor eax,eax
199
	xor eax,eax
148
	mov edi,dword[capt_p] ;children window caption
200
	mov edi,dword[capt_p] ;children window caption
149
	mov bx,word[procinfo.box.left]
201
	mov bx,word[procinfo.box.left]
150
	add bx,word[buf_0.l]
202
	add bx,word[buf_0.l]
151
	add bx,5 ;è¨à¨­  ¡®ª®¢®© à ¬ª¨
203
	add bx,5 ;è¨à¨­  ¡®ª®¢®© à ¬ª¨
152
	shl ebx,16
204
	shl ebx,16
153
	mov bx,prop_wnd_width
205
	mov bx,prop_wnd_width
154
	mov cx,word[procinfo.box.top]
206
	mov cx,word[procinfo.box.top]
155
	add cx,word[buf_0.t]
207
	add cx,word[buf_0.t]
156
	shl ecx,16
208
	shl ecx,16
157
	mov cx,prop_wnd_height
209
	mov cx,prop_wnd_height
158
	mov edx,0xffffd0+0x33000000
210
	mov edx,0xffffd0+0x33000000
159
	int 0x40
211
	int 0x40
160
 
212
 
161
	mov esi,[sc.work_button]
213
	mov esi,[sc.work_button]
162
	mcall 8, (5 shl 16)+20, (246 shl 16)+20, 3
214
	mcall 8, (5 shl 16)+20, (266 shl 16)+20, 3
163
	mcall , (30 shl 16)+20, (246 shl 16)+20, 4
215
	mcall , (30 shl 16)+20, (266 shl 16)+20, 4
164
 
216
 
165
	mov ebx,[image_data_toolbar]
217
	mov ebx,[image_data_toolbar]
166
	add ebx,4*IMAGE_TOOLBAR_ICON_SIZE
218
	add ebx,4*IMAGE_TOOLBAR_ICON_SIZE
167
	mcall 7, , (16 shl 16)+16, (7 shl 16)+247 ;load
219
	mcall 7, , (16 shl 16)+16, (7 shl 16)+268 ;load
168
 
220
 
169
	sub ebx,IMAGE_TOOLBAR_ICON_SIZE
221
	sub ebx,IMAGE_TOOLBAR_ICON_SIZE
170
	mov edx,(32 shl 16)+247 ;save
222
	mov edx,(32 shl 16)+268 ;save
171
	int 0x40
223
	int 0x40
172
 
224
 
173
	mov dword[w_scr_t3.all_redraw],1
225
	mov dword[w_scr_t3.all_redraw],1
174
	stdcall [scrollbar_ver_draw],dword w_scr_t3
226
	stdcall [scrollbar_ver_draw],dword w_scr_t3
175
	stdcall [tl_draw], tree3
227
	stdcall [tl_draw], tree3
176
	stdcall [edit_box_draw], edit1
228
	stdcall [edit_box_draw], edit1
177
	stdcall [edit_box_draw], edit2
229
	stdcall [edit_box_draw], edit2
178
	stdcall [edit_box_draw], edit3
230
	stdcall [edit_box_draw], edit3
-
 
231
 
179
 
232
	stdcall [kmainmenu_draw], [main_menu]
180
	call draw_3d
233
	call draw_3d
181
	mcall 12,2
234
	mcall 12,2
182
popad
235
popad
183
	ret
236
	ret
-
 
237
 
-
 
238
;ãáâ ­®¢ª  ¢á¥å ®á­®¢­ëå ¯¥à¥¬¥­­ëå ¯® 㬮«ç ­¨î
-
 
239
align 4
-
 
240
prop_wnd_clear_param:
-
 
241
	mov dword[angle_x],0.0
-
 
242
	mov dword[angle_y],0.0
-
 
243
	mov dword[angle_z],0.0
-
 
244
	mov dword[obj_poi_data],0
-
 
245
	mov dword[obj_poi_count],0
-
 
246
	mov dword[obj_tri_data],0
-
 
247
	mov dword[obj_tri_count],0
-
 
248
	mov dword[draw_mode],def_dr_mode
-
 
249
	ret
-
 
250
 
184
 
251
;ãáâ ­®¢ª  à §¬¥à®¢ ®¡ê¥ªâ 
185
align 4
252
align 4
186
proc obj_set_sizes uses eax ebx esi
253
proc obj_set_sizes uses eax ebx esi
187
	stdcall dword[tl_node_poi_get_info], tree3,0
-
 
188
	cmp eax,0
254
	cmp dword[obj_poi_count],0
189
	je .end
-
 
190
		stdcall [tl_node_poi_get_data], tree3,eax
255
	je .end
191
		finit
256
		finit
192
		mov eax,[eax]
257
		mov eax,[obj_poi_data]
193
		mov ebx,dword[eax]
258
		mov ebx,dword[eax]
194
		mov [obj_x_min],ebx
259
		mov [obj_x_min],ebx
195
		mov [obj_x_max],ebx
260
		mov [obj_x_max],ebx
196
		mov ebx,dword[eax+4]
261
		mov ebx,dword[eax+4]
197
		mov [obj_y_min],ebx
262
		mov [obj_y_min],ebx
198
		mov [obj_y_max],ebx
263
		mov [obj_y_max],ebx
199
		mov ebx,dword[eax+8]
264
		mov ebx,dword[eax+8]
200
		mov [obj_z_min],ebx
265
		mov [obj_z_min],ebx
201
		mov [obj_z_max],ebx
266
		mov [obj_z_max],ebx
-
 
267
 
202
 
268
	mov ebx,[obj_poi_data]
203
	stdcall dword[tl_node_poi_get_info], tree3,0
269
	mov esi,[obj_poi_count]
204
align 4
270
align 4
205
	.cycle_0: ;à ¡®â  á ª®®à¤¨­ â®© x
-
 
206
		mov esi,eax
-
 
207
		stdcall [tl_node_poi_get_data], tree3,esi
-
 
208
		mov ebx,[eax]
-
 
209
 
271
	.cycle_0: ;à ¡®â  á ª®®à¤¨­ â®© x
210
		fld dword[ebx]
272
		fld dword[ebx]
211
		fld dword[obj_x_min]
273
		fld dword[obj_x_min]
212
		fcomp
274
		fcomp
213
		fstsw ax
275
		fstsw ax
214
		sahf
276
		sahf
215
		jb @f
277
		jb @f
216
			mov eax,[ebx]
278
			mov eax,[ebx]
217
			mov [obj_x_min],eax
279
			mov [obj_x_min],eax
218
			ffree st0
280
			ffree st0
219
			fincstp
281
			fincstp
220
			jmp .next_x
282
			jmp .next_x
221
		@@:
283
		@@:
222
		fld dword[obj_x_max]
284
		fld dword[obj_x_max]
223
		fcompp
285
		fcompp
224
		fstsw ax
286
		fstsw ax
225
		sahf
287
		sahf
226
		ja .next_x
288
		ja .next_x
227
			mov eax,[ebx]
289
			mov eax,[ebx]
228
			mov [obj_x_max],eax
290
			mov [obj_x_max],eax
229
		.next_x:
291
		.next_x:
230
 
292
 
231
		stdcall dword[tl_node_poi_get_next_info], tree3,esi
293
		add ebx,12
232
		cmp eax,0
294
		dec esi
233
		jne .cycle_0
295
		jnz .cycle_0
234
 
296
 
235
		fld1
297
		fld1
236
		fld dword[obj_x_max]
298
		fld dword[obj_x_max]
237
		fsub dword[obj_x_min]
299
		fsub dword[obj_x_min]
238
		fst dword[obj_x_centr]
300
		fst dword[obj_x_centr]
239
		fdivp ;1/size.x
301
		fdivp ;1/size.x
240
		fstp dword[obj_x_scale]
302
		fstp dword[obj_x_scale]
241
 
303
 
242
		fld dword[obj_x_centr]
304
		fld dword[obj_x_centr]
243
		fld1
305
		fld1
244
		fld1
306
		fld1
245
		faddp
307
		faddp
246
		fdivp ;centr.x = size.x/2
308
		fdivp ;centr.x = size.x/2
247
		fadd dword[obj_x_min]
309
		fadd dword[obj_x_min]
248
		fchs
310
		fchs
249
		fstp dword[obj_x_centr]
311
		fstp dword[obj_x_centr]
-
 
312
 
250
 
313
	mov ebx,[obj_poi_data]
251
	stdcall dword[tl_node_poi_get_info], tree3,0
314
	mov esi,[obj_poi_count]
252
align 4
315
align 4
253
	.cycle_1: ;à ¡®â  á ª®®à¤¨­ â®© y
-
 
254
		mov esi,eax
-
 
255
		stdcall [tl_node_poi_get_data], tree3,esi
-
 
256
		mov ebx,[eax]
-
 
257
 
316
	.cycle_1: ;à ¡®â  á ª®®à¤¨­ â®© y
258
		fld dword[ebx+4]
317
		fld dword[ebx+4]
259
		fld dword[obj_y_min]
318
		fld dword[obj_y_min]
260
		fcomp
319
		fcomp
261
		fstsw ax
320
		fstsw ax
262
		sahf
321
		sahf
263
		jb @f
322
		jb @f
264
			mov eax,[ebx+4]
323
			mov eax,[ebx+4]
265
			mov [obj_y_min],eax
324
			mov [obj_y_min],eax
266
			ffree st0
325
			ffree st0
267
			fincstp
326
			fincstp
268
			jmp .next_y
327
			jmp .next_y
269
		@@:
328
		@@:
270
		fld dword[obj_y_max]
329
		fld dword[obj_y_max]
271
		fcompp
330
		fcompp
272
		fstsw ax
331
		fstsw ax
273
		sahf
332
		sahf
274
		ja .next_y
333
		ja .next_y
275
			mov eax,[ebx+4]
334
			mov eax,[ebx+4]
276
			mov [obj_y_max],eax
335
			mov [obj_y_max],eax
277
		.next_y:
336
		.next_y:
278
 
337
 
279
		stdcall dword[tl_node_poi_get_next_info], tree3,esi
338
		add ebx,12
280
		cmp eax,0
339
		dec esi
281
		jne .cycle_1
340
		jnz .cycle_1
282
 
341
 
283
		fld1
342
		fld1
284
		fld dword[obj_y_max]
343
		fld dword[obj_y_max]
285
		fsub dword[obj_y_min]
344
		fsub dword[obj_y_min]
286
		fst dword[obj_y_centr]
345
		fst dword[obj_y_centr]
287
		fdivp ;1/size.y
346
		fdivp ;1/size.y
288
		fstp dword[obj_y_scale]
347
		fstp dword[obj_y_scale]
289
 
348
 
290
		fld dword[obj_y_centr]
349
		fld dword[obj_y_centr]
291
		fld1
350
		fld1
292
		fld1
351
		fld1
293
		faddp
352
		faddp
294
		fdivp ;centr.y = size.y/2
353
		fdivp ;centr.y = size.y/2
295
		fadd dword[obj_y_min]
354
		fadd dword[obj_y_min]
296
		fchs
355
		fchs
297
		fstp dword[obj_y_centr]
356
		fstp dword[obj_y_centr]
-
 
357
 
298
 
358
	mov ebx,[obj_poi_data]
299
	stdcall dword[tl_node_poi_get_info], tree3,0
359
	mov esi,[obj_poi_count]
300
align 4
360
align 4
301
	.cycle_2: ;à ¡®â  á ª®®à¤¨­ â®© z
-
 
302
		mov esi,eax
-
 
303
		stdcall [tl_node_poi_get_data], tree3,esi
-
 
304
		mov ebx,[eax]
-
 
305
 
361
	.cycle_2: ;à ¡®â  á ª®®à¤¨­ â®© z
306
		fld dword[ebx+8]
362
		fld dword[ebx+8]
307
		fld dword[obj_z_min]
363
		fld dword[obj_z_min]
308
		fcomp
364
		fcomp
309
		fstsw ax
365
		fstsw ax
310
		sahf
366
		sahf
311
		jb @f
367
		jb @f
312
			mov eax,[ebx+8]
368
			mov eax,[ebx+8]
313
			mov [obj_z_min],eax
369
			mov [obj_z_min],eax
314
			ffree st0
370
			ffree st0
315
			fincstp
371
			fincstp
316
			jmp .next_z
372
			jmp .next_z
317
		@@:
373
		@@:
318
		fld dword[obj_z_max]
374
		fld dword[obj_z_max]
319
		fcompp
375
		fcompp
320
		fstsw ax
376
		fstsw ax
321
		sahf
377
		sahf
322
		ja .next_z
378
		ja .next_z
323
			mov eax,[ebx+8]
379
			mov eax,[ebx+8]
324
			mov [obj_z_max],eax
380
			mov [obj_z_max],eax
325
		.next_z:
381
		.next_z:
326
 
382
 
327
		stdcall dword[tl_node_poi_get_next_info], tree3,esi
383
		add ebx,12
328
		cmp eax,0
384
		dec esi
329
		jne .cycle_2
385
		jnz .cycle_2
330
 
386
 
331
		fld1
387
		fld1
332
		fld dword[obj_z_max]
388
		fld dword[obj_z_max]
333
		fsub dword[obj_z_min]
389
		fsub dword[obj_z_min]
334
		fst dword[obj_z_centr]
390
		fst dword[obj_z_centr]
335
		fdivp ;1/size.z
391
		fdivp ;1/size.z
336
		fstp dword[obj_z_scale]
392
		fstp dword[obj_z_scale]
337
 
393
 
338
		fld dword[obj_z_centr]
394
		fld dword[obj_z_centr]
339
		fld1
395
		fld1
340
		fld1
396
		fld1
341
		faddp
397
		faddp
342
		fdivp ;centr.z = size.z/2
398
		fdivp ;centr.z = size.z/2
343
		fadd dword[obj_z_min]
399
		fadd dword[obj_z_min]
344
		fchs
400
		fchs
345
		fstp dword[obj_z_centr]
401
		fstp dword[obj_z_centr]
346
 
402
 
347
		;­ å®¤¨¬ à ¤¨ãá ¤«ï áä¥àë
403
		;­ å®¤¨¬ à ¤¨ãá ¤«ï áä¥àë
348
		fld dword[obj_x_max]
404
		fld dword[obj_x_max]
349
		fsub dword[obj_x_min]
405
		fsub dword[obj_x_min]
350
		fld dword[obj_y_max]
406
		fld dword[obj_y_max]
351
		fsub dword[obj_y_min]
407
		fsub dword[obj_y_min]
352
		faddp
408
		faddp
353
		fild dword[rad_c]
409
		fild dword[rad_c]
354
		fdivp ;radius=(size.x+size.y)/rad_c
410
		fdivp ;radius=(size.x+size.y)/rad_c
355
		fstp dword[sph_radius]
411
		fstp dword[sph_radius]
356
	.end:
412
	.end:
357
	ret
413
	ret
358
endp
414
endp
359
 
415
 
360
;à¨á®¢ ­¨¥ â®ç¥ª ¢ 3d
416
;à¨á®¢ ­¨¥ â®ç¥ª ¢ 3d
361
align 4
417
align 4
362
draw_3d:
418
draw_3d:
-
 
419
	cmp dword[obj_poi_count],2
-
 
420
	jl .end_f
-
 
421
 
363
	stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;®ç¨á⨬ ¡ãä¥à æ¢¥â  ¨ £«ã¡¨­ë
422
	stdcall [glClear], GL_COLOR_BUFFER_BIT + GL_DEPTH_BUFFER_BIT ;®ç¨á⨬ ¡ãä¥à æ¢¥â  ¨ £«ã¡¨­ë
364
	stdcall [glPushMatrix]
423
	stdcall [glPushMatrix]
-
 
424
	bt dword[draw_mode],bit_light
-
 
425
	jnc @f
-
 
426
		call SetLight
-
 
427
		jmp .end_l
-
 
428
	@@:
-
 
429
		stdcall [glDisable],GL_LIGHTING
-
 
430
	.end_l:
365
	stdcall [glTranslatef], 0.0,0.0,0.5 ;correct for z
431
	stdcall [glTranslatef], 0.0,0.0,0.5 ;correct for z
366
	stdcall [glScalef], [obj_x_scale],[obj_y_scale],[obj_z_scale]
432
	stdcall [glScalef], [obj_x_scale],[obj_y_scale],[obj_z_scale]
367
	stdcall [glScalef], 1.0,1.0,0.7 ;correct for z
433
	stdcall [glScalef], 1.0,1.0,0.7 ;correct for z
368
	stdcall [glRotatef], [angle_z],0.0,0.0,1.0
434
	stdcall [glRotatef], [angle_z],0.0,0.0,1.0
369
	stdcall [glRotatef], [angle_y],0.0,1.0,0.0
435
	stdcall [glRotatef], [angle_y],0.0,1.0,0.0
370
	stdcall [glRotatef], [angle_x],1.0,0.0,0.0
436
	stdcall [glRotatef], [angle_x],1.0,0.0,0.0
371
	stdcall [glTranslatef], [obj_x_centr],[obj_y_centr],[obj_z_centr]
437
	stdcall [glTranslatef], [obj_x_centr],[obj_y_centr],[obj_z_centr]
-
 
438
 
-
 
439
	;à¨á®¢ ­¨¥ â®ç¥ª
-
 
440
	bt dword[draw_mode],bit_vertexes
372
 
441
	jnc .end_points
373
	stdcall [glColor3f], 1.0,1.0,1.0
442
		stdcall [glColor3f], 1.0,1.0,1.0
374
	stdcall [glBegin],GL_POINTS
-
 
-
 
443
		stdcall [glBegin],GL_POINTS
375
 
444
		mov eax,[obj_poi_data]
376
	stdcall dword[tl_node_poi_get_info], tree3,0
445
		mov ebx,[obj_poi_count]
377
	@@:
-
 
378
		cmp eax,0
-
 
379
		je @f
-
 
380
		mov esi,eax
-
 
381
		stdcall [tl_node_poi_get_data], tree3,esi
-
 
382
		mov eax,[eax]
446
		@@:
383
		stdcall [glVertex3f], [eax],[eax+4],[eax+8]
447
			stdcall [glVertex3f], [eax],[eax+4],[eax+8]
384
		stdcall dword[tl_node_poi_get_next_info], tree3,esi
448
			add eax,12
385
		jmp @b
449
			dec ebx
386
	@@:
450
			jnz @b
-
 
451
		stdcall [glEnd]
-
 
452
	.end_points:
387
	stdcall [glEnd]
453
 
388
 
454
	;à¨á®¢ ­¨¥ ¢ë¤¥«¥­­®© â®çª¨
389
	stdcall [tl_node_get_data],tree3
455
	stdcall [tl_node_get_data],tree3
390
	cmp eax,0
456
	cmp eax,0
391
	je @f
457
	je @f
392
		;¢ë¤¥«¥­¨¥  ªâ¨¢­®© â®çª¨
458
		;¢ë¤¥«¥­¨¥  ªâ¨¢­®© â®çª¨
393
		mov eax,[eax]
459
		mov eax,[eax]
394
 
460
 
395
		stdcall [glBegin],GL_LINES
461
		stdcall [glBegin],GL_LINES
396
		stdcall [glColor3f], 1.0, 0.0, 0.0
462
		stdcall [glColor3f], 1.0, 0.0, 0.0
397
		stdcall [glVertex3f], [obj_x_min],[eax+4],[eax+8]
463
		stdcall [glVertex3f], [obj_x_min],[eax+4],[eax+8]
398
		stdcall [glVertex3f], [obj_x_max],[eax+4],[eax+8]
464
		stdcall [glVertex3f], [obj_x_max],[eax+4],[eax+8]
399
		stdcall [glColor3f], 0.0, 0.0, 1.0
465
		stdcall [glColor3f], 0.0, 0.0, 1.0
400
		stdcall [glVertex3f], [eax],[obj_y_min],[eax+8]
466
		stdcall [glVertex3f], [eax],[obj_y_min],[eax+8]
401
		stdcall [glVertex3f], [eax],[obj_y_max],[eax+8]
467
		stdcall [glVertex3f], [eax],[obj_y_max],[eax+8]
402
		stdcall [glColor3f], 0.0, 1.0, 0.0
468
		stdcall [glColor3f], 0.0, 1.0, 0.0
403
		stdcall [glVertex3f], [eax],[eax+4],[obj_z_min]
469
		stdcall [glVertex3f], [eax],[eax+4],[obj_z_min]
404
		stdcall [glVertex3f], [eax],[eax+4],[obj_z_max]
470
		stdcall [glVertex3f], [eax],[eax+4],[obj_z_max]
405
		stdcall [glEnd]
471
		stdcall [glEnd]
406
 
472
 
407
		stdcall [glColor3f], 1.0, 1.0, 0.0
473
		stdcall [glColor3f], 1.0, 1.0, 0.0
-
 
474
		stdcall [glPushMatrix]
408
		stdcall [glTranslatef], [eax],[eax+4],[eax+8]
475
			stdcall [glTranslatef], [eax],[eax+4],[eax+8]
409
		stdcall [gluSphere], [qObj], [sph_radius], 8,8
476
			stdcall [gluSphere], [qObj], [sph_radius], 8,8
-
 
477
		stdcall [glPopMatrix]
410
	@@:
478
	@@:
-
 
479
 
-
 
480
	;à¨á®¢ ­¨¥ £à ­¥©
-
 
481
	bt dword[draw_mode],bit_faces
-
 
482
	jnc .end_triangles
-
 
483
	cmp dword[obj_tri_count],0
-
 
484
	je .end_triangles
-
 
485
	cmp dword[obj_poi_count],0
-
 
486
	je .end_triangles
-
 
487
		stdcall [glColor3f], 0.5,0.5,0.5
-
 
488
		;bt dword[draw_mode],bit_faces_fill
-
 
489
		;jnc @f
-
 
490
		;@@:
-
 
491
		stdcall [glBegin],GL_TRIANGLES
-
 
492
		mov eax,[obj_tri_data]
-
 
493
		mov ecx,[obj_tri_count]
-
 
494
		@@:
-
 
495
			movzx ebx,word[eax] ;1-ï ¢¥à設 
-
 
496
			imul ebx,12
-
 
497
			add ebx,[obj_poi_data]
-
 
498
			stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
-
 
499
			movzx ebx,word[eax+2] ;2-ï ¢¥à設 
-
 
500
			imul ebx,12
-
 
501
			add ebx,[obj_poi_data]
-
 
502
			stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
-
 
503
			movzx ebx,word[eax+4] ;3-ï ¢¥à設 
-
 
504
			imul ebx,12
-
 
505
			add ebx,[obj_poi_data]
-
 
506
			stdcall [glVertex3f], [ebx],[ebx+4],[ebx+8]
-
 
507
			add eax,8 ;à §¬¥à âà¥ã£®«ì­¨ª  = (3 ¢¥à設ë (¯® 2¡) + ᢮©á⢠ (2¡))
-
 
508
			dec ecx
-
 
509
			jnz @b
-
 
510
		stdcall [glEnd]
-
 
511
	.end_triangles:
411
 
512
 
412
	stdcall [glPopMatrix]
513
	stdcall [glPopMatrix]
-
 
514
	stdcall [kosglSwapBuffers]
-
 
515
	.end_f:
-
 
516
	ret
-
 
517
 
-
 
518
align 4
-
 
519
SetLight:
-
 
520
	stdcall [glLightfv], GL_LIGHT0, GL_POSITION, light_position
-
 
521
	stdcall [glLightfv], GL_LIGHT0, GL_SPOT_DIRECTION, light_dir
-
 
522
 
-
 
523
	stdcall [glLightfv], GL_LIGHT0, GL_DIFFUSE, white_light
-
 
524
	stdcall [glLightfv], GL_LIGHT0, GL_SPECULAR, white_light
-
 
525
 
-
 
526
	stdcall [glEnable], GL_COLOR_MATERIAL
-
 
527
	stdcall [glColorMaterial], GL_FRONT, GL_AMBIENT_AND_DIFFUSE
-
 
528
	stdcall [glMaterialfv], GL_FRONT, GL_SPECULAR, mat_specular
-
 
529
	stdcall [glMaterialf], GL_FRONT, GL_SHININESS, mat_shininess
-
 
530
	stdcall [glLightModelfv], GL_LIGHT_MODEL_AMBIENT, lmodel_ambient
-
 
531
 
-
 
532
	stdcall [glEnable],GL_LIGHTING
413
	stdcall [kosglSwapBuffers]
533
	stdcall [glEnable],GL_LIGHT0
414
	ret
534
	ret
415
 
535
 
416
align 4
536
align 4
417
prop_key:
537
proc prop_key uses eax ebx
418
push eax
-
 
419
	mcall 2
538
	mcall 2
420
 
539
 
421
	test word [edit1.flags],10b ;ed_focus
540
	test word [edit1.flags],10b ;ed_focus
422
	je @f
541
	je @f
423
		stdcall [edit_box_key], edit1
542
		stdcall [edit_box_key], edit1
424
		jmp .end
543
		jmp .end
425
	@@:
544
	@@:
426
	test word [edit2.flags],10b
545
	test word [edit2.flags],10b
427
	je @f
546
	je @f
428
		stdcall [edit_box_key], edit2
547
		stdcall [edit_box_key], edit2
429
		jmp .end
548
		jmp .end
430
	@@:
549
	@@:
431
	test word [edit3.flags],10b
550
	test word [edit3.flags],10b
432
	je @f
551
	je @f
433
		stdcall [edit_box_key], edit3
552
		stdcall [edit_box_key], edit3
434
		jmp .end
553
		jmp .end
435
	@@:
554
	@@:
-
 
555
	cmp dword[el_focus], tree3
-
 
556
	jne @f
436
	stdcall [tl_key], tree3
557
		stdcall [tl_key], tree3
-
 
558
		jmp .end
-
 
559
	@@:
437
 
560
 
438
	cmp ah,178 ;Up
561
	cmp ah,178 ;Up
439
	jne @f
562
	jne @f
440
		fld dword[angle_x]
563
		fld dword[angle_x]
441
		fadd dword[delt_size]
564
		fadd dword[delt_size]
442
		fstp dword[angle_x]
565
		fstp dword[angle_x]
443
		call draw_3d
566
		call draw_3d
444
		jmp .end
567
		jmp .end
445
	@@:
568
	@@:
446
	cmp ah,177 ;Down
569
	cmp ah,177 ;Down
447
	jne @f
570
	jne @f
448
		fld dword[angle_x]
571
		fld dword[angle_x]
449
		fsub dword[delt_size]
572
		fsub dword[delt_size]
450
		fstp dword[angle_x]
573
		fstp dword[angle_x]
451
		call draw_3d
574
		call draw_3d
452
		jmp .end
575
		jmp .end
453
	@@:
576
	@@:
454
	cmp ah,176 ;Left
577
	cmp ah,176 ;Left
455
	jne @f
578
	jne @f
456
		fld dword[angle_y]
579
		fld dword[angle_y]
457
		fadd dword[delt_size]
580
		fadd dword[delt_size]
458
		fstp dword[angle_y]
581
		fstp dword[angle_y]
459
		call draw_3d
582
		call draw_3d
460
		jmp .end
583
		jmp .end
461
	@@:
584
	@@:
462
	cmp ah,179 ;Right
585
	cmp ah,179 ;Right
463
	jne @f
586
	jne @f
464
		fld dword[angle_y]
587
		fld dword[angle_y]
465
		fsub dword[delt_size]
588
		fsub dword[delt_size]
466
		fstp dword[angle_y]
589
		fstp dword[angle_y]
467
		call draw_3d
590
		call draw_3d
468
		;jmp .end
591
		;jmp .end
469
	@@:
592
	@@:
470
	.end:
593
	.end:
471
pop eax
-
 
472
	ret
594
	ret
-
 
595
endp
473
 
596
 
474
align 4
597
align 4
475
prop_mouse:
598
prop_mouse:
476
	;push ecx edi
599
	;push ecx edi
-
 
600
	stdcall [kmainmenu_dispatch_cursorevent], [main_menu]
477
	stdcall [tl_mouse], tree3
601
	stdcall [tl_mouse], tree3
478
	stdcall [edit_box_mouse], edit1
602
	stdcall [edit_box_mouse], edit1
479
	stdcall [edit_box_mouse], edit2
603
	stdcall [edit_box_mouse], edit2
480
	stdcall [edit_box_mouse], edit3
604
	stdcall [edit_box_mouse], edit3
481
	;pop edi ecx
605
	;pop edi ecx
482
	ret
606
	ret
483
 
607
 
484
align 4
608
align 4
485
prop_button:
609
prop_button:
486
	mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨
610
	mcall 17 ;¯®«ãç¨âì ª®¤ ­ ¦ â®© ª­®¯ª¨
487
 
611
 
488
	cmp ah,3
612
	cmp ah,3
489
	jne @f
613
	jne @f
490
		call get_point_coords
614
		call get_point_coords
491
		call draw_3d
615
		call draw_3d
492
		jmp prop_still.end
616
		jmp prop_still.end
493
	@@:
617
	@@:
494
	cmp ah,4
618
	cmp ah,4
495
	jne @f
619
	jne @f
496
		push eax ebx ecx edi esi
620
		push eax ebx ecx edi esi
497
		stdcall [tl_node_get_data],tree3
621
		stdcall [tl_node_get_data],tree3
498
		cmp eax,0
622
		cmp eax,0
499
		je .no_select_1
623
		je .no_select_1
500
			mov ebx,[eax]
624
			mov ebx,[eax]
501
			finit
625
			finit
502
 
626
 
503
			mov esi,string1
627
			mov esi,string1
504
			mov edi,Data_String
628
			mov edi,Data_String
505
			cld
629
			cld
506
			mov ecx,8
630
			mov ecx,8
507
			rep movsd
631
			rep movsd
508
			call String_to_DoubleFloat
632
			call String_to_DoubleFloat
509
			fld  qword[Data_Double] ;áç¨â뢠¥¬ ª ª double
633
			fld  qword[Data_Double] ;áç¨â뢠¥¬ ª ª double
510
			fstp dword[ebx] ;á®å࠭塞 ª ª float
634
			fstp dword[ebx] ;á®å࠭塞 ª ª float
511
 
635
 
512
			mov esi,string2
636
			mov esi,string2
513
			mov edi,Data_String
637
			mov edi,Data_String
514
			cld
638
			cld
515
			mov ecx,8
639
			mov ecx,8
516
			rep movsd
640
			rep movsd
517
			call String_to_DoubleFloat
641
			call String_to_DoubleFloat
518
			fld  qword[Data_Double] ;áç¨â뢠¥¬ ª ª double
642
			fld  qword[Data_Double] ;áç¨â뢠¥¬ ª ª double
519
			fstp dword[ebx+4] ;á®å࠭塞 ª ª float
643
			fstp dword[ebx+4] ;á®å࠭塞 ª ª float
520
 
644
 
521
			mov esi,string3
645
			mov esi,string3
522
			mov edi,Data_String
646
			mov edi,Data_String
523
			cld
647
			cld
524
			mov ecx,8
648
			mov ecx,8
525
			rep movsd
649
			rep movsd
526
			call String_to_DoubleFloat
650
			call String_to_DoubleFloat
527
			fld  qword[Data_Double] ;áç¨â뢠¥¬ ª ª double
651
			fld  qword[Data_Double] ;áç¨â뢠¥¬ ª ª double
528
			fstp dword[ebx+8] ;á®å࠭塞 ª ª float
652
			fstp dword[ebx+8] ;á®å࠭塞 ª ª float
529
 
653
 
530
			;®¡­®¢«¥­¨¥ ¨§¬¥­¥­­®£® 㧫  ¢ ᯨ᪥ tree3 ¨ £« ¢­®£® ®ª­  (¯® â ©¬¥àã)
654
			;®¡­®¢«¥­¨¥ ¨§¬¥­¥­­®£® 㧫  ¢ ᯨ᪥ tree3 ¨ £« ¢­®£® ®ª­  (¯® â ©¬¥àã)
531
			mov word[NumberSymbolsAD],5
655
			mov word[NumberSymbolsAD],5
532
			mov dword[obj_point],ebx
656
			mov dword[obj_point],ebx
533
			mov dword[obj_point.text],0
657
			mov dword[obj_point.text],0
534
			cld
658
			cld
535
			mov ecx,3
659
			mov ecx,3
536
			.coord:
660
			.coord:
537
				fld dword[ebx]
661
				fld dword[ebx]
538
				fstp qword[Data_Double]
662
				fstp qword[Data_Double]
539
				call DoubleFloat_to_String
663
				call DoubleFloat_to_String
540
				add ebx,4
664
				add ebx,4
541
				stdcall str_len, Data_String
665
				stdcall str_len, Data_String
542
				mov esi,txt_space
666
				mov esi,txt_space
543
				add esi,eax
667
				add esi,eax
544
				cmp esi,txt_space.end
668
				cmp esi,txt_space.end
545
				jl .normal_size
669
				jl .normal_size
546
					mov esi,txt_space.end-1 ;¬¨­¨¬ã¬ 1 ¯à®¡¥« ­ã¦­® ¤®¡ ¢¨âì, çâ®-¡ë æ¨äàë ­¥ ᫨¯ «¨áì
670
					mov esi,txt_space.end-1 ;¬¨­¨¬ã¬ 1 ¯à®¡¥« ­ã¦­® ¤®¡ ¢¨âì, çâ®-¡ë æ¨äàë ­¥ ᫨¯ «¨áì
547
				.normal_size:
671
				.normal_size:
548
				stdcall str_cat, obj_point.text,esi
672
				stdcall str_cat, obj_point.text,esi
549
				stdcall str_cat, obj_point.text,Data_String
673
				stdcall str_cat, obj_point.text,Data_String
550
				loop .coord
674
				loop .coord
551
			stdcall dword[tl_node_set_data], tree3,obj_point
675
			stdcall dword[tl_node_set_data], tree3,obj_point
552
			stdcall dword[tl_draw], tree3
676
			stdcall dword[tl_draw], tree3
553
			mov byte[can_save],1 ;¤«ï ¯®ª §  ª­®¯ª¨ '‘®åà ­¨âì'
677
			mov byte[can_save],1 ;¤«ï ¯®ª §  ª­®¯ª¨ '‘®åà ­¨âì'
554
			mov dword[offs_last_timer],0 ;¤«ï ®¡­®¢«¥­¨ï ¡«®ª  ¢ â ©¬¥à¥
678
			mov dword[offs_last_timer],0 ;¤«ï ®¡­®¢«¥­¨ï ¡«®ª  ¢ â ©¬¥à¥
555
			call draw_3d
679
			call draw_3d
556
		.no_select_1:
680
		.no_select_1:
557
		pop esi edi ecx ebx eax
681
		pop esi edi ecx ebx eax
558
		jmp prop_still.end
682
		jmp prop_still.end
559
	@@:
683
	@@:
-
 
684
	cmp ah,5
-
 
685
	jne @f
-
 
686
		call mnu_vertexes_on_off
-
 
687
		jmp prop_still.end
-
 
688
	@@:
-
 
689
	cmp ah,6
-
 
690
	jne @f
-
 
691
		call mnu_faces_on_off
-
 
692
		jmp prop_still.end
-
 
693
	@@:
-
 
694
	cmp ah,7
-
 
695
	jne @f
-
 
696
		call mnu_light_on_off
-
 
697
		jmp prop_still.end
-
 
698
	@@:
560
 
699
 
561
	cmp ah,1
700
	cmp ah,1
562
	jne prop_still.end
701
	jne prop_still.end
563
.exit:
702
.exit:
564
	mov dword[tree3.data_img],0 ;ç¨á⨬ 㪠§ â¥«¨ ­  ¨ª®­ª¨ çâ®-¡ë ¨å ­¥ 㤠«¨« ¤¥áâàãªâ®à
703
	mov dword[tree3.data_img],0 ;ç¨á⨬ 㪠§ â¥«¨ ­  ¨ª®­ª¨ çâ®-¡ë ¨å ­¥ 㤠«¨« ¤¥áâàãªâ®à
565
	mov dword[tree3.data_img_sys],0 ;â. ª. ®­¨ ¥é¥ ¨á¯®«ì§ãîâìáï ¢ ¤à㣨å í«¥¬¥­â å
704
	mov dword[tree3.data_img_sys],0 ;â. ª. ®­¨ ¥é¥ ¨á¯®«ì§ãîâìáï ¢ ¤à㣨å í«¥¬¥­â å
566
	stdcall dword[tl_data_clear], tree3
705
	stdcall dword[tl_data_clear], tree3
567
	mov byte[prop_wnd_run],0 ;®¡­ã«ï¥¬ áç¥â稪 ®ª®­
706
	mov byte[prop_wnd_run],0 ;®¡­ã«ï¥¬ áç¥â稪 ®ª®­
568
	mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
707
	mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë
569
 
708
 
570
align 4
709
align 4
571
get_point_coords:
710
get_point_coords:
572
	;§ £à㧪  ª®®à¤¨­ â ¢ editbox-ë
711
	;§ £à㧪  ª®®à¤¨­ â ¢ editbox-ë
573
	push eax ebx
712
	push eax ebx
574
	stdcall [tl_node_get_data],tree3
713
	stdcall [tl_node_get_data],tree3
575
	cmp eax,0
714
	cmp eax,0
576
	je @f
715
	je @f
577
		mov ebx,[eax]
716
		mov ebx,[eax]
578
		mov word[NumberSymbolsAD],8
717
		mov word[NumberSymbolsAD],8
579
		finit
718
		finit
580
		fld dword[ebx]
719
		fld dword[ebx]
581
		fstp qword[Data_Double]
720
		fstp qword[Data_Double]
582
		call DoubleFloat_to_String
721
		call DoubleFloat_to_String
583
		stdcall [edit_box_set_text], edit1, Data_String
722
		stdcall [edit_box_set_text], edit1, Data_String
584
		fld dword[ebx+4]
723
		fld dword[ebx+4]
585
		fstp qword[Data_Double]
724
		fstp qword[Data_Double]
586
		call DoubleFloat_to_String
725
		call DoubleFloat_to_String
587
		stdcall [edit_box_set_text], edit2, Data_String
726
		stdcall [edit_box_set_text], edit2, Data_String
588
		fld dword[ebx+8]
727
		fld dword[ebx+8]
589
		fstp qword[Data_Double]
728
		fstp qword[Data_Double]
590
		call DoubleFloat_to_String
729
		call DoubleFloat_to_String
591
		stdcall [edit_box_set_text], edit3, Data_String
730
		stdcall [edit_box_set_text], edit3, Data_String
592
		stdcall [edit_box_draw], edit1
731
		stdcall [edit_box_draw], edit1
593
		stdcall [edit_box_draw], edit2
732
		stdcall [edit_box_draw], edit2
594
		stdcall [edit_box_draw], edit3
733
		stdcall [edit_box_draw], edit3
595
	@@:
734
	@@:
596
	pop ebx eax
735
	pop ebx eax
597
	ret
736
	ret
598
 
737
 
599
align 4
738
align 4
-
 
739
proc prop_timer_funct uses eax
-
 
740
	;¯à®á¬ âਢ ¥¬ ¢ë¤¥«¥­­ãî ª®®à¤¨­ âã
-
 
741
	stdcall [tl_node_get_data],tree3
-
 
742
	cmp [cursor_last_draw],eax
-
 
743
	je @f
-
 
744
		mov [cursor_last_draw],eax
-
 
745
		call draw_3d
-
 
746
	@@:
-
 
747
	ret
-
 
748
endp
-
 
749
 
-
 
750
align 4
-
 
751
mnu_vertexes_on_off:
-
 
752
	xor dword[draw_mode], 1 shl bit_vertexes
-
 
753
	ret
-
 
754
 
-
 
755
align 4
-
 
756
mnu_faces_on_off:
-
 
757
	xor dword[draw_mode], 1 shl bit_faces
-
 
758
	ret
-
 
759
 
-
 
760
align 4
-
 
761
mnu_light_on_off:
-
 
762
	xor dword[draw_mode], 1 shl bit_light
-
 
763
	ret
-
 
764
 
-
 
765
align 4
-
 
766
draw_mode dd 0
-
 
767
obj_poi_data dd 0 ;㪠§ â¥«ì ­  ª®®à¤¨­ âë ¢¥à設
-
 
768
obj_poi_count dd 0 ;ª®««¨ç¥á⢮ ¢¥à設
-
 
769
obj_tri_data dd 0 ;㪠§ â¥«ì ­  ¤ ­­ë¥ âà¥ã£®«ì­¨ª®¢
-
 
770
obj_tri_count dd 0 ;ª®««¨ç¥á⢮ âà¥ã£®«ì­¨ª®¢
-
 
771
cursor_last_draw dd 0 ;¯®«®¦¥­¨¥ ªãàá®à  ¯à¨ ¯®á«¥¤­¥© ¯à®à¨á®¢ª¥ 3d ®ª­ 
600
sph_radius dd 0 ;à ¤¨ãá áä¥àë ¤«ï ¢ë¤¥«¥­¨ï  ªâ¨¢­®© â®çª¨
772
sph_radius dd 0 ;à ¤¨ãá áä¥àë ¤«ï ¢ë¤¥«¥­¨ï  ªâ¨¢­®© â®çª¨
601
obj_x_max dd 0
773
obj_x_max dd 0
602
obj_x_min dd 0
774
obj_x_min dd 0
603
obj_x_centr dd 0
775
obj_x_centr dd 0
604
obj_x_scale dd 1.0
776
obj_x_scale dd 1.0
605
obj_y_max dd 0
777
obj_y_max dd 0
606
obj_y_min dd 0
778
obj_y_min dd 0
607
obj_y_centr dd 0
779
obj_y_centr dd 0
608
obj_y_scale dd 1.0
780
obj_y_scale dd 1.0
609
obj_z_max dd 0
781
obj_z_max dd 0
610
obj_z_min dd 0
782
obj_z_min dd 0
611
obj_z_centr dd 0
783
obj_z_centr dd 0
612
obj_z_scale dd 1.0
784
obj_z_scale dd 1.0
613
 
785
 
614
capt_p dd 0
786
capt_p dd 0
615
 
787
 
616
;¤¥à¥¢® á ®¡ê¥ªâ ¬¨ ¢ ¯®«ì§®¢ â¥«ì᪮¬ ä ©«¥
788
;¤¥à¥¢® á ®¡ê¥ªâ ¬¨ ¢ ¯®«ì§®¢ â¥«ì᪮¬ ä ©«¥
617
tree3 tree_list MAX_OBJECT_SIZE,3, tl_key_no_edit+tl_list_box_mode,\
789
tree3 tree_list MAX_OBJECT_SIZE,3, tl_key_no_edit+tl_list_box_mode,\
618
	16,16, 0xffffff,0xb0d0ff,0x400040, 5,270,303,160, 16, 4,0, el_focus,\
790
	16,16, 0xffffff,0xb0d0ff,0x400040, 5,290,303,140, 16, 4,0, el_focus,\
619
	w_scr_t3,get_point_coords
791
	w_scr_t3,get_point_coords
620
 
792
 
621
edit1 edit_box 80,  76, 249, 0xffd0d0, 0xff, 0x80ff, 0, 0x8000, 34, string1, mouse_dd, 0
793
edit1 edit_box 80,  76, 269, 0xffd0d0, 0xff, 0x80ff, 0, 0x8000, 34, string1, mouse_dd, 0
622
edit2 edit_box 80, 160, 249, 0xd0d0ff, 0xff, 0x80ff, 0, 0x8000, 34, string2, mouse_dd, 0
794
edit2 edit_box 80, 160, 269, 0xd0d0ff, 0xff, 0x80ff, 0, 0x8000, 34, string2, mouse_dd, 0
623
edit3 edit_box 80, 244, 249, 0xd0ffd0, 0xff, 0x80ff, 0, 0x8000, 34, string3, mouse_dd, 0
795
edit3 edit_box 80, 244, 269, 0xd0ffd0, 0xff, 0x80ff, 0, 0x8000, 34, string3, mouse_dd, 0
624
editboxes_end:
796
editboxes_end:
625
 
797
 
626
string1 rb 34
798
string1 rb 34
627
string2 rb 34
799
string2 rb 34
628
string3 rb 34
800
string3 rb 34
629
 
801
 
630
align 4
802
align 4
631
w_scr_t3 scrollbar 16, 0,0,0, 15, 100,0,0, 0,0,0, 1
803
w_scr_t3 scrollbar 16, 0,0,0, 15, 100,0,0, 0,0,0, 1