Example #1
0
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);
	}
}
Example #2
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++;
	}