#include "hgimgx.as" ; ; MXファイルビューアー(DirectX) ; sdim fname,256 sdim optname,256 sdim s1,256 sdim s2,256 sdim work,256 sdim tools,256 if (hspstat&1) { ; debug中 work=curdir+"\\temp\\" tools=curdir+"\\" } else { ; exe時 work=exedir+"\\temp\\" tools=exedir+"\\" } fname = "none" goto *boot *prinfo gsel 4 color 192,192,192 boxf 0,0,140,80 color 0,0,0 pos 8,8 mes fname mes ""+polys+"polys" return *cutfname ; fnameのpathを取り除く ; a=0:cuti=0 repeat peek a,fname,cnt if a=0 : break if a='\\' : cuti=cnt+1 loop strmid fname,fname,cuti,256 return *cutext ; s1の拡張子を取り除く ; a=0 strlen cuti,s1 if cuti=0 : return repeat cuti-- if cuti<0 : break peek a,s1,cuti if a='\\' : break if a='.' : poke s1,cuti,0 : break loop return *snapshot dialog "bmp",17,"BMPファイル" if stat=0 : goto *main s1=refstr gsel 0 gosub *cutext s1+=".bmp" bmpsave s1 goto *main1 *loadmx dialog "mx",16,"mxファイル" if stat=0 : goto *main fname=refstr goto *mload *allclr gsel 0 hgreset goto *main0 *boot ; start ; ; screen 0,320,240,0 screen 0,640,480,0 cls 4 screen 4,140,300,8+4 title "mx viewer" cls 1 objmode 1 pos 4,50 objsize 130,24 button "カメラリセット",*creset button "mx読み込み",*loadmx button "SHADE0(N/C)",*shade0 button "SHADE1(FLAT)",*shade1 button "SHADE2(GOURAUD)",*shade2 button "スナップショット",*snapshot button "階層構造",*seetree button "シーン初期化",*allclr button "終了",*owari *boot2 gsel 0 hgini goto *main0 *seetree sdim mdltree,256 gettree mdltree,model dialog mdltree goto *main *shade0 modelshade model,0 goto *main *shade1 modelshade model,1 goto *main *shade2 modelshade model,2 goto *main *mload ; model load ; s1=fname gosub *cutext mxload s1 ; モデルファイル読み込み model = stat ; (変数statにモデルIDが返される) regobj a,model gsel 0 palcopy 3 gosub *cutfname *main0 ; main loop ; selcpos objsetf3 0.0f, 0.0f, 20.0f selcang objsetf3 0.0f, 0.0f, 0.0f *main1 gosub *prinfo gsel 0:gmode 0,320,240 pos 0,0 color 255,255,255 axis="" btn1=0:bx1=0:by1=0:bx2=0:by2=0 *main hgdraw:a=stat getsync t1,0 hgsync 20 title "t"+t1+"/"+a stick k,$3ff,1 if k&$100 { selang if btn1=0 : btn1=1 : bx1=mousex : by1=mousey : objgetfv btn1fv fvseti fv,mousey-by1,bx1-mousex,0 fvmul fv,0.02f,0.02f,0.02f fvadd fv,btn1fv.0,btn1fv.1,btn1fv.2 objsetfv fv } else btn1=0 if k&$200 { selpos if btn2=0 : btn2=1 : bx2=mousex : by2=mousey : objgetfv btn2fv fvseti fv,mousex-bx2,mousey-by2,0 fvmul fv,0.1f,0.1f,0.1f fvadd fv,btn2fv.0,btn2fv.1,btn2fv.2 objsetfv fv } else btn2=0 selcpos if k&1 : objaddf3 0.25f, 0.0f, 0.0f if k&4 : objaddf3 -0.25f, 0.0f, 0.0f if k&16 { if k&2 : objaddf3 0.0f, 0.25f, 0.0f if k&8 : objaddf3 0.0f, -0.25f, 0.0f } else { if k&2 : objaddf3 0.0f, 0.0f, 0.25f if k&8 : objaddf3 0.0f, 0.0f, -0.25f } goto *main *creset selcpos objsetf3 0.0f, 0.0f, 20.0f selcang objsetf3 0.0f, 0.0f, 0.0f goto *main *owari end