Created
May 29, 2018 05:12
-
-
Save nicloay/5f0591f274711d18e972ff026a73067d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEngine; | |
using PaintCraft.Controllers; | |
using UnityEngine.Assertions; | |
using UnityEngine.UI; | |
[RequireComponent(typeof(RectTransform))] | |
public class RectToCanvasPosition : MonoBehaviour { | |
public ScreenCameraController ScreenCameraController; | |
RectTransform _rt; | |
private CanvasScaler _cs; | |
void Awake(){ | |
_rt =GetComponent<RectTransform>(); | |
_rt.hasChanged = true; | |
Assert.IsNotNull(_rt); | |
_cs = GetComponentInParent<CanvasScaler>(); | |
} | |
void LateUpdate () { | |
if (_rt.hasChanged) | |
{ | |
_rt.hasChanged = false; | |
Vector3[] corners = GetScreenRect(_rt); | |
ScreenCameraController.CameraSize.ViewPortOffset.left = (int)corners[0].x; | |
ScreenCameraController.CameraSize.ViewPortOffset.bottom = (int)corners[0].y; | |
ScreenCameraController.CameraSize.ViewPortOffset.right = Screen.width - (int)corners[2].x; | |
ScreenCameraController.CameraSize.ViewPortOffset.top = Screen.height - (int)corners[2].y; | |
ScreenCameraController.CameraSize.Init(ScreenCameraController.Camera, ScreenCameraController.Canvas); | |
ScreenCameraController.CameraSize.ResetSize(); | |
} | |
} | |
public Vector3[] GetScreenRect(RectTransform rectTransform) | |
{ | |
Vector3[] corners = new Vector3[4]; | |
rectTransform.GetWorldCorners(corners); | |
if (_cs != null) | |
{ | |
for (int j = 0; j < 4; j++) | |
{ | |
corners[j] = corners[j] * _cs.scaleFactor; | |
} | |
} | |
return corners; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment