public InputAxis GetAxis( string axisID, InputAxisType axisType = InputAxisType.Mouse )
	{
		InputAxis newAxis = inputAxes.Find( axis => axisID == axis.Name );

		if( newAxis == null ) 
		{
			if( axisType == InputAxisType.Mouse ) newAxis = new MouseInputAxis();
			else if( axisType == InputAxisType.Keyboard ) newAxis = new KeyboardInputAxis();
			else if( axisType == InputAxisType.PXIe ) newAxis = new PXIeInputAxis();
			else if( axisType == InputAxisType.AnkleBot ) newAxis = new AnkleBotInputAxis();
			else return null;

			if( !newAxis.Init( axisID ) ) return null;

			inputAxes.Add( newAxis );
		}

		return newAxis;
	}
        private void AccumulateMouse()
        {
            for (int i = 0; i < 3; i++)
            {
                MouseInputAxis m = (i == 0) ? mousePitch : (i == 1) ? mouseYaw : mouseRoll;

                if (m.mouseAxis != MouseAxes.None)
                {
                    turn[i] += (
                        (m.mouseAxis == MouseAxes.MouseX) ? (_lastMouseX - Input.mousePosition.x) :
                        (m.mouseAxis == MouseAxes.MouseY) ? (_lastMouseY - Input.mousePosition.y) :
                        (m.mouseAxis == MouseAxes.ScrollX) ? Input.mouseScrollDelta.x :
                        Input.mouseScrollDelta.y
                        )
                               * (m.invert ? -m.sensitivity : m.sensitivity);
                }
            }
            _lastMouseX = Input.mousePosition.x;
            _lastMouseY = Input.mousePosition.y;
        }