/// <summary> /// Make a canvas space object to a world space position. /// /// NOTE(jenchieh): Make UI object (canvas space) on top of the /// world space game object. /// </summary> /// <param name="pos"></param> /// <returns></returns> public Vector3 CastToScreen(Vector3 pos) { JCS_Camera jcsCam = JCS_Camera.main; JCS_ResizeUI resizeUI = JCS_ResizeUI.instance; Vector3 positionOffset = mPositionOffset; if (mPanelRoot != null) { positionOffset.x /= mPanelRoot.PanelDeltaWidthRatio; positionOffset.y /= mPanelRoot.PanelDeltaHeightRatio; } switch (GetObjectType()) { case JCS_UnityObjectType.TEXT: case JCS_UnityObjectType.UI: { Vector2 worldToCanvasSpace = jcsCam.WorldToCanvasSpace(pos); float targetScale = resizeUI.TargetScale; if (targetScale != 0.0f) { worldToCanvasSpace.x /= resizeUI.TargetScale; worldToCanvasSpace.y /= resizeUI.TargetScale; } this.LocalPosition = worldToCanvasSpace + (Vector2)positionOffset; } break; } return(this.LocalPosition); }
//======================================== // Self-Define //------------------------------ //---------------------- // Public Functions /// <summary> /// /// </summary> /// <param name="pos"></param> /// <returns></returns> public Vector3 CastToScreen(Vector3 pos) { JCS_Camera jcsCam = JCS_Camera.main; switch (GetObjectType()) { case JCS_UnityObjectType.TEXT: case JCS_UnityObjectType.UI: { this.LocalPosition = jcsCam.WorldToCanvasSpace(pos) + (Vector2)mPositionOffset; } break; } return(this.LocalPosition); }