private void OnCollisionEnter(Collision collision) { Debug.Log("collide"); RaycastHit[] rcasts = Physics.RaycastAll(RayShooter.transform.position, collision.contacts[0].point - RayShooter.transform.position); VdmDesktopManager.ActionInThisFrame = true; foreach (RaycastHit rcast in rcasts) { if (rcast.transform.gameObject.name != "Monitor") { continue; } Debug.Log(rcast.textureCoord + " " + RayShooter.transform.position + " " + collision.contacts[0].point + " " + rcast.point + " " + rcast.transform.gameObject.name); float dx = m_manager.GetScreenWidth(Screen); float dy = m_manager.GetScreenHeight(Screen); float vx = rcast.textureCoord.x; float vy = rcast.textureCoord.y; vy = 1 - vy; float x = (vx * dx); float y = (vy * dy); int iX = (int)x; int iY = (int)y; m_manager.SetCursorPos(iX, iY); m_manager.SimulateMouseLeftDown(); m_manager.SimulateMouseLeftUp(); m_manager.SetCursorPos(0, 0); VdmDesktopManager.ActionInThisFrame = true; } }
public void CheckKeyboardAndMouse() { if (Input.GetKeyDown(m_manager.KeyboardShow)) { VdmDesktopManager.ActionInThisFrame = true; m_lastShowClickStart = Time.time; if (Visible() == false) { Show(); m_lastShowClickStart -= 10; // Avoid quick show/close } } if (Input.GetKey(m_manager.KeyboardShow)) { VdmDesktopManager.ActionInThisFrame = true; m_manager.KeyboardDistance += Input.GetAxisRaw("Mouse ScrollWheel"); m_manager.KeyboardDistance = Mathf.Clamp(m_manager.KeyboardDistance, 0.2f, 100); m_positionNormal = Camera.main.transform.position + Camera.main.transform.rotation * new Vector3(0, 0, m_manager.KeyboardDistance); m_positionNormal += m_manager.MultiMonitorPositionOffset * ScreenIndex; m_rotationNormal = Camera.main.transform.rotation; } if (Input.GetKeyUp(m_manager.KeyboardShow)) { VdmDesktopManager.ActionInThisFrame = true; if (Time.time - m_lastShowClickStart < 0.5f) { m_lastShowClickStart = 0; Hide(); } } if (m_manager.KeyboardZoom != KeyCode.None) { if (Input.GetKeyDown(m_manager.KeyboardZoom)) { if (m_zoom == false) { m_zoomWithFollowCursor = true; ZoomIn(); } else { ZoomOut(); } } if ((m_zoom) && (m_zoomWithFollowCursor)) { VdmDesktopManager.ActionInThisFrame = true; m_manager.KeyboardZoomDistance += Input.GetAxisRaw("Mouse ScrollWheel"); m_manager.KeyboardZoomDistance = Mathf.Clamp(m_manager.KeyboardZoomDistance, 0.2f, 100); // Cursor position in world space Vector3 cursorPos = m_manager.GetCursorPos(); cursorPos.x = cursorPos.x / m_manager.GetScreenWidth(Screen); cursorPos.y = cursorPos.y / m_manager.GetScreenHeight(Screen); cursorPos.y = 1 - cursorPos.y; cursorPos.x = cursorPos.x - 0.5f; cursorPos.y = cursorPos.y - 0.5f; cursorPos = transform.TransformPoint(cursorPos); Vector3 deltaCursor = transform.position - cursorPos; m_positionZoomed = Camera.main.transform.position + Camera.main.transform.rotation * new Vector3(0, 0, m_manager.KeyboardZoomDistance); m_positionZoomed += m_manager.MultiMonitorPositionOffset * ScreenIndex; m_rotationZoomed = Camera.main.transform.rotation; m_positionZoomed += deltaCursor; } } }