void help(int argc,char* argv[]) { bool gccring= 0<=argc && NULL!=strstr(argv[0],"gccring"); bool show_help=false; bool do_refine=false; for(int i=1;argc>i;++i) { if(gccring) { if(0==strcmp("--help",argv[i])) { show_help=true; break; } if(0==strcmp("--refine",argv[i])) { do_refine=true; break; } } if(0==strcmp("--gccring-help",argv[i])) { show_help=true; break; } if(0==strcmp("--gccring-refine",argv[i])) { do_refine=true; break; } } if(show_help) { main_show_help(); exit(0); } if(do_refine) { main_do_refine(); exit(0); } if(gccring) { main_show_help(); exit(0); } }
void main_handle_input() { char buf[64]; float io[3], iv[4], fw[2], pt[4], tv[3], f, g, v; float im[16], im1[16], *imv; char *s; int i, j, k, l; unsigned short *kcur; if(Con_IsDown() || main_loadsave) return; if(pdgl_mb&4) PDGLUI_ShowMenu("menu", pdgl_mx, -pdgl_my); s=PDGLUI_GetMenuSelection("menu"); if(s) { if(!strcmp(s, "clear_all")) { main_bones=0; bone_solids=0; n_frames=0; mesh_root=NULL; } if(!strcmp(s, "clear_bones")) { main_bones=0; bone_solids=0; } if(!strcmp(s, "clear_anim")) n_frames=0; if(!strcmp(s, "clear_mesh")) mesh_root=NULL; if(!strcmp(s, "load_bones")) { UI_LoadSave_SetTitle("Load Bones", "bone"); main_loadsave=1; } if(!strcmp(s, "save_bones")) { UI_LoadSave_SetTitle("Save Bones", "bone"); main_loadsave=2; } if(!strcmp(s, "load_anim")) { UI_LoadSave_SetTitle("Load Anim", "anim"); main_loadsave=3; } if(!strcmp(s, "save_anim")) { UI_LoadSave_SetTitle("Save Anim", "anim"); main_loadsave=4; } if(!strcmp(s, "load_model")) { UI_LoadSave_SetTitle("Load Model", "model"); main_loadsave=5; } if(!strcmp(s, "save_model")) { UI_LoadSave_SetTitle("Save Model", "model"); main_loadsave=6; } if(!strcmp(s, "load_mesh")) { UI_LoadSave_SetTitle("Load Mesh", "mesh"); main_loadsave=7; } if(!strcmp(s, "save_mesh")) { UI_LoadSave_SetTitle("Save Mesh", "mesh"); main_loadsave=8; } if(!strcmp(s, "load_ac3d")) { UI_LoadSave_SetTitle("Import AC3D", "ac"); main_loadsave=9; } if(!strcmp(s, "cmd_rebind")) main_BindMeshGroup(mesh_root); if(!strcmp(s, "cmd_unbind")) main_UnbindMeshGroup(mesh_root); if(!strcmp(s, "help_generic")) main_show_help("general"); if(!strcmp(s, "help_about")) main_show_help("about"); } kcur=pdgl_keybuf; while(*kcur) { if(*kcur==K_ESCAPE) { main_kill=1; return; } if(*kcur==K_MWHEELUP) { main_speed*=1.5; Con_Printf("Move Speed %g ft/s\n", main_speed/12); } if(*kcur==K_MWHEELDOWN) { main_speed*=1.0/1.5; Con_Printf("Move Speed %g ft/s\n", main_speed/12); } if(*kcur==K_F1) { main_show_help("general"); } if(*kcur==K_TAB) { main_mode++; if(main_mode>MODE_LAST)main_mode=MODE_FIRST; } if(*kcur=='S') { main_save_anim(frame_file); } if((*kcur==K_DEL) && (main_bone_sel>=0) && (main_mode==MODE_ANIMATE)) { if(PDGL_KeyDown(K_SHIFT)) { for(i=0; i<n_frames; i++) { j=i*64+main_bone_sel; frame_mask[j>>3]&=~(1<<(j&7)); } }else { i=frame_cur*64+main_bone_sel; frame_mask[i>>3]&=~(1<<(i&7)); } } if((*kcur==K_DEL) && (main_bone_sel>=0) && (main_mode==MODE_BONES)) { main_delete_bone(main_bone_sel); } if((*kcur==K_DEL) && (main_bone_sel>=0) && (main_mode==MODE_MESH)) { mesh_grp[main_bone_sel]=NULL; } if((*kcur==K_INS) && (main_mode==MODE_BONES)) { for(i=0; i<main_bones; i++) if(!main_bone_name[i]) break; if(i>=main_bones)main_bones=i+1; sprintf(buf, "auto-%d", i); main_bone_name[i]=strdup(buf); main_bone_up[i]=main_bone_sel; Mat3F_Identity(main_bone_rot+i*9); Mat3F_Identity(main_bone_rmat+i*9); j=main_bone_sel; V3F_ZERO(tv); if(j>=0) { V3F_COPY(main_bone_rorg+j*3, tv); } pt[0]=V3F_DOT(tv, main_cam_rt)- V3F_DOT(main_cam_org, main_cam_rt); pt[1]=V3F_DOT(tv, main_cam_up)- V3F_DOT(main_cam_org, main_cam_up); pt[2]=V3F_DOT(tv, main_cam_fw)- V3F_DOT(main_cam_org, main_cam_fw); V3F_ZERO(io); V3F_ADDSCALE(io, main_cam_rt, (pdgl_mx/400.0)*pt[2]-pt[0], io); V3F_ADDSCALE(io, main_cam_up, (-pdgl_my/400.0)*pt[2]-pt[1], io); main_bone_org[i*3+0]=io[0]; main_bone_org[i*3+1]=io[1]; main_bone_org[i*3+2]=io[2]; main_bone_rorg[i*3+0]=io[0]+tv[0]; main_bone_rorg[i*3+1]=io[1]+tv[1]; main_bone_rorg[i*3+2]=io[2]+tv[2]; return; } /* if(*kcur=='L') { UI_LoadSave_SetTitle("Load", "txt"); main_loadsave=1; } */ if(((*kcur=='+') || (*kcur=='=')) && (frame_time>=(1.0/15.0))) { main_mode=MODE_ANIMATE; frame_time-=1.0/15.0; frame_cur++; if(n_frames)frame_cur%=n_frames; else frame_cur=0; } if(((*kcur=='-') || (*kcur=='_')) && (frame_time>=(1.0/15.0))) { main_mode=MODE_ANIMATE; frame_time-=1.0/15.0; frame_cur--; if(frame_cur<0)frame_cur+=n_frames; if(n_frames)frame_cur%=n_frames; else frame_cur=0; } if(*kcur=='*') { main_mode=MODE_ANIMATE; for(i=n_frames; i>frame_cur; i--) { for(j=0; j<64*3; j++) frame_org[i*64*3+j]= frame_org[(i-1)*64*3+j]; for(j=0; j<64*9; j++) frame_rot[i*64*9+j]= frame_rot[(i-1)*64*9+j]; for(j=0; j<64/8; j++) frame_mask[i*64/8+j]= frame_mask[(i-1)*64/8+j]; } if(n_frames)frame_cur++; for(j=0; j<64/8; j++)frame_mask[i*64/8+j]=0; n_frames++; } if((n_frames>0) && (*kcur=='/')) { main_mode=MODE_ANIMATE; for(i=frame_cur; i<n_frames; i++) { for(j=0; j<64*3; j++) frame_org[i*64*3+j]= frame_org[(i+1)*64*3+j]; for(j=0; j<64*9; j++) frame_rot[i*64*9+j]= frame_rot[(i+1)*64*9+j]; for(j=0; j<64/8; j++) frame_mask[i*64/8+j]= frame_mask[(i+1)*64/8+j]; } if(frame_cur>0)frame_cur--; n_frames--; } kcur++; }