예제 #1
0
	protected void SetupPointers()
	{
		pointers = new POINTER_INFO[uiCameras.Length, numTouches];

		// Get our raycasting object:
		/*
				if (raycastingObject != null)
					raycastingTransform = raycastingObject.transform;
				else
		*/
		raycastingTransform = rayCamera.gameObject.transform;


		switch (pointerType)
		{
			case POINTER_TYPE.MOUSE:
				pointerPoller = PollMouse;
				activePointers[0] = 0;
				numActivePointers = 1;
				for (int i = 0; i < uiCameras.Length; ++i)
				{
					pointers[i, 0].id = 0;
					pointers[i, 0].rayDepth = uiCameras[i].rayDepth;
					pointers[i, 0].layerMask = uiCameras[i].mask;
					pointers[i, 0].camera = uiCameras[i].camera;
					pointers[i, 0].type = POINTER_INFO.POINTER_TYPE.MOUSE;
				}
				break;
			case POINTER_TYPE.TOUCHPAD:
				pointerPoller = PollTouchpad;
				for (int i = 0; i < uiCameras.Length; ++i)
					for (int j = 0; j < numPointers; ++j)
					{
						pointers[i, j].id = j;
						pointers[i, j].rayDepth = uiCameras[i].rayDepth;
						pointers[i, j].layerMask = uiCameras[i].mask;
						pointers[i, j].camera = uiCameras[i].camera;
						pointers[i, j].type = POINTER_INFO.POINTER_TYPE.TOUCHPAD;
					}
				break;
			case POINTER_TYPE.AUTO_TOUCHPAD:
				pointerPoller = PollMouseAndTouchpad;
				for (int i = 0; i < uiCameras.Length; ++i)
				{
					for (int j = 0; j < numPointers; ++j)
					{
						pointers[i, j].id = j;
						pointers[i, j].rayDepth = uiCameras[i].rayDepth;
						pointers[i, j].layerMask = uiCameras[i].mask;
						pointers[i, j].camera = uiCameras[i].camera;
						pointers[i, j].type = POINTER_INFO.POINTER_TYPE.TOUCHPAD;
					}
					pointers[i, numPointers - 1].type = POINTER_INFO.POINTER_TYPE.MOUSE;
				}
				break;
			case POINTER_TYPE.RAY:
				pointerPoller = PollRay;
				numActivePointers = 0;
				rayPtr.type = POINTER_INFO.POINTER_TYPE.RAY;
				rayPtr.id = 0;
				rayPtr.rayDepth = rayDepth;
				rayPtr.layerMask = rayMask;
				rayPtr.camera = rayCamera;
				break;
			case POINTER_TYPE.MOUSE_AND_RAY:
				pointerPoller = PollMouseRay;
				activePointers[0] = 0;
				numActivePointers = 1;
				// 0 is the mouse:
				for (int i = 0; i < uiCameras.Length; ++i)
				{
					pointers[i, 0].id = 0;
					pointers[i, 0].rayDepth = uiCameras[i].rayDepth;
					pointers[i, 0].layerMask = uiCameras[i].mask;
					pointers[i, 0].camera = uiCameras[i].camera;
					pointers[i, 0].type = POINTER_INFO.POINTER_TYPE.MOUSE;
				}

				rayPtr.type = POINTER_INFO.POINTER_TYPE.RAY;
				rayPtr.rayDepth = rayDepth;
				rayPtr.layerMask = rayMask;
				rayPtr.camera = rayCamera;
				break;
			case POINTER_TYPE.TOUCHPAD_AND_RAY:
				pointerPoller = PollTouchpadRay;
				for (int i = 0; i < uiCameras.Length; ++i)
					for (int j = 0; j < numPointers; ++j)
					{
						pointers[i, j].id = j;
						pointers[i, j].rayDepth = uiCameras[i].rayDepth;
						pointers[i, j].layerMask = uiCameras[i].mask;
						pointers[i, j].camera = uiCameras[i].camera;
						pointers[i, j].type = POINTER_INFO.POINTER_TYPE.TOUCHPAD;
					}

				rayPtr.type = POINTER_INFO.POINTER_TYPE.RAY;
				rayPtr.rayDepth = rayDepth;
				rayPtr.layerMask = rayMask;
				rayPtr.camera = rayCamera;
				break;
			default:
				Debug.LogError("ERROR: Invalid pointer type selected!");
				break;
		}
	}
예제 #2
0
	protected void SetupPointers()
	{
		Start(); // Incase we've just been instantiated

		pointers = new POINTER_INFO[uiCameras.Length, numTouches];

		try
		{
			// Get our raycasting object:
			if (raycastingTransform == null)
				raycastingTransform = Camera.main.transform;

			raycastingTransform = rayCamera.gameObject.transform;
		}
		catch
		{
			ScreenLog.AddMessage("There appears to be no \"Main\" camera. Please tag one of your cameras with the \"MainCamera\" tag.", ScreenLogType.Error);
		}

		switch (pointerType)
		{
			case POINTER_TYPE.MOUSE:
				pointerPoller = PollMouse;
				activePointers[0] = 0;
				numActivePointers = 1;
				for (int i = 0; i < uiCameras.Length; ++i)
				{
					pointers[i, 0].id = 0;
					pointers[i, 0].rayDepth = uiCameras[i].rayDepth;
					pointers[i, 0].layerMask = uiCameras[i].mask;
					pointers[i, 0].camera = uiCameras[i].camera;
					pointers[i, 0].type = POINTER_INFO.POINTER_TYPE.MOUSE;
				}
				break;
			case POINTER_TYPE.TOUCHPAD:
				pointerPoller = PollTouchpad;
				for (int i = 0; i < uiCameras.Length; ++i)
					for (int j = 0; j < numPointers; ++j)
					{
						pointers[i, j].id = j;
						pointers[i, j].rayDepth = uiCameras[i].rayDepth;
						pointers[i, j].layerMask = uiCameras[i].mask;
						pointers[i, j].camera = uiCameras[i].camera;
						pointers[i, j].type = POINTER_INFO.POINTER_TYPE.TOUCHPAD;
					}
				break;
			case POINTER_TYPE.AUTO_TOUCHPAD:
				pointerPoller = PollMouseAndTouchpad;
				for (int i = 0; i < uiCameras.Length; ++i)
				{
					for (int j = 0; j < numPointers; ++j)
					{
						pointers[i, j].id = j;
						pointers[i, j].rayDepth = uiCameras[i].rayDepth;
						pointers[i, j].layerMask = uiCameras[i].mask;
						pointers[i, j].camera = uiCameras[i].camera;
						pointers[i, j].type = POINTER_INFO.POINTER_TYPE.TOUCHPAD;
					}
					pointers[i, numPointers - 1].type = POINTER_INFO.POINTER_TYPE.MOUSE;
				}
				break;
			case POINTER_TYPE.RAY:
				pointerPoller = PollRay;
				numActivePointers = 0;
				rayPtr.type = POINTER_INFO.POINTER_TYPE.RAY;
				rayPtr.id = -1;
				rayPtr.rayDepth = rayDepth;
				rayPtr.layerMask = rayMask;
				rayPtr.camera = rayCamera;
				break;
			case POINTER_TYPE.MOUSE_AND_RAY:
				pointerPoller = PollMouseRay;
				activePointers[0] = 0;
				numActivePointers = 1;
				// 0 is the mouse:
				for (int i = 0; i < uiCameras.Length; ++i)
				{
					pointers[i, 0].id = 0;
					pointers[i, 0].rayDepth = uiCameras[i].rayDepth;
					pointers[i, 0].layerMask = uiCameras[i].mask;
					pointers[i, 0].camera = uiCameras[i].camera;
					pointers[i, 0].type = POINTER_INFO.POINTER_TYPE.MOUSE;
				}

				rayPtr.id = -1;
				rayPtr.type = POINTER_INFO.POINTER_TYPE.RAY;
				rayPtr.rayDepth = rayDepth;
				rayPtr.layerMask = rayMask;
				rayPtr.camera = rayCamera;
				break;
			case POINTER_TYPE.TOUCHPAD_AND_RAY:
				pointerPoller = PollTouchpadRay;
				for (int i = 0; i < uiCameras.Length; ++i)
					for (int j = 0; j < numPointers; ++j)
					{
						pointers[i, j].id = j;
						pointers[i, j].rayDepth = uiCameras[i].rayDepth;
						pointers[i, j].layerMask = uiCameras[i].mask;
						pointers[i, j].camera = uiCameras[i].camera;
						pointers[i, j].type = POINTER_INFO.POINTER_TYPE.TOUCHPAD;
					}

				rayPtr.id = -1;
				rayPtr.type = POINTER_INFO.POINTER_TYPE.RAY;
				rayPtr.rayDepth = rayDepth;
				rayPtr.layerMask = rayMask;
				rayPtr.camera = rayCamera;
				break;
			default:
				ScreenLog.AddMessage("ERROR: Invalid pointer type selected!", ScreenLogType.Error);
				break;
		}
	}