예제 #1
0
long VFSPlugin_LWO::ReadSubChunk(void)
{
	long	id	= ReadLong();
	short	len	= ReadShort();

	switch(id)
	{
		case ID_STIL:	{	read_unkn(id,len);	}break;
		case ID_COLR:	{	read_colr(len);			}break;
		case ID_DIFF:	{	read_diff(len);			}break;
		case ID_LUMI:	{	read_lumi(len);			}break;
		case ID_SPEC:	{	read_spec(len);			}break;
		case ID_REFL:	{	read_refl(len);			}break;
		case ID_TRAN:	{	read_tran(len);			}break;
		case ID_TRNL:	{	read_trnl(len);			}break;
		case ID_GLOS:	{	read_glos(len);			}break;
		case ID_SHRP:	{	read_shrp(len);			}break;
		case ID_SMAN:	{	read_sman(len);			}break;
		case ID_BUMP:	{	read_bump(len);			}break;
		case ID_SIDE:	{	read_unkn(id,len);	}break;
		case ID_BLOK:	{	read_unkn(id,len);	}break;
		case ID_IMAP:	{	read_unkn(id,len);	}break;
		case ID_TMAP:	{	read_unkn(id,len);	}break;
		case ID_IMAG:	{	read_unkn(id,len);	}break;
		case ID_CHAN:	{	read_unkn(id,len);	}break;
		default:			{	read_unkn(id,len);	}break;

	};

	return len + 6;
}
예제 #2
0
/***************************************************
功能:按下遥控器的前后左右按键之后,机器按照遥控器的方向运动
      不要管理红外碰撞
***************************************************/
uint8 YaoKongFangXiang(void)
{
static uint8 piv_yaokong = 0;
    //在有遥控的时候有碰撞信号,机器后退
    if(piv_yaokong == 1)
	{
        if(read_bump() != 0)        //机器有碰撞
        {
			    stop_rap();
			    mode.step = 0;
			    mode.bump = 0;
				mode.step_yaokong = 0;
				piv_yaokong = 0;
	            return 0;
        }
	}
    if((gsv_yaokong.effect == 1)||(gsv_yaokong.sign == 1))
	{
	    gsv_yaokong.sign = 0;
		if(read_bump() != 0)
		{			   		 
			piv_yaokong = 0;
		    mode.step_yaokong = 0;
		    return 0;
		}
	    switch(gsv_yaokong.key)
		{
	        case YAOKONG_LEFT:
			    if(mode.step_yaokong != 1)
				{		   
				    stop_rap();
				    mode.step_yaokong = 1;
				}
				break;
	        case YAOKONG_RIGHT:	   
			    if(mode.step_yaokong != 2)
				{		   
				    stop_rap();
				    mode.step_yaokong = 2;
				}
				break;
	        case YAOKONG_FRONT:		 
			    if(mode.step_yaokong != 4)
				{		   
				    stop_rap();
				    mode.step_yaokong = 4;
				}
				break;
	        case YAOKONG_BACK:	   
			    if(mode.step_yaokong != 3)
				{		   
				    stop_rap();
				    mode.step_yaokong = 3;
				}
				break;
			default :
			    piv_yaokong = 0;
				return 0;
		}
		if(piv_yaokong == 0)
		{
		    stop_rap();
			piv_yaokong = 1;
		}
	}
    else 
	{
	    if((piv_yaokong != 0)&&(mode.step_yaokong != 5))
		{
			stop_rap();
			mode.step_yaokong = 5;
		}
	}
    if(piv_yaokong != 0)
	{			 
	    switch(mode.step_yaokong)
	    {
		    case 0:
			    break;
		    case 1:
			    do_action(1,angle360);
		        break;
		    case 2:
			    do_action(2,angle360);
			    break;
		    case 3:
			    do_action(4,METE_TWO);
			    break;
		    case 4:
			    do_action(3,METE_TWO);
		        break;
		    case 5:
			    if(do_action(3,angle120))
		        {
	                piv_yaokong = 0;
			        mode.bump = 0;
		            mode.step_yaokong = 0;
			        mode.step = 0;
			    }
	    }
	}
	return piv_yaokong;
}