public bool HandleMouseEvent(float x, float y, int icase, int buttonType) { if (MovieID == -1) { return(false); } if (AcceptMouseEvents()) { // Adjust according to viewport float xx = x; float yy = y; if (mRenderTexture != null && Camera.main != null) { RaycastHit hit; if (Physics.Raycast(Camera.main.ScreenPointToRay(new Vector2(x, Screen.height - y)), out hit)) { Renderer hitRenderer = hit.collider.gameObject.renderer; MeshCollider meshCollider = hit.collider as MeshCollider; if (!(hit.collider is MeshCollider) || hitRenderer == null || meshCollider == null) { return(false); } SFRTT rtt = hit.collider.gameObject.GetComponent("SFRTT") as SFRTT; if (rtt == null) { return(false); } float rttWidth = hitRenderer.material.mainTexture.width; float rttHeight = hitRenderer.material.mainTexture.height; float hitCoordX = hit.textureCoord.x * rttWidth; float hitCoordY = rttHeight - hit.textureCoord.y * rttHeight; xx = hitCoordX; yy = hitCoordY; yy -= 32; // HACK } } else { xx -= ViewPort.OX; yy -= ViewPort.OY; } if (SF_HandleMouseEvent(MovieID, xx, yy, icase, buttonType)) { UnityEngine.Debug.Log("Handle mouse event"); return(true); } } return(false); }
public override void Update() { if (SFRTT.SF_WasDeviceReset()) { if (!m_RenderTexture.IsCreated()) { m_RenderTexture.Release(); m_RenderTexture.Create(); ApplyRenderTexture(m_RenderTexture); } } base.Update(); }
public void SetRTT(SFRTT rtt) { mRenderTexture = rtt; }