private void PositionElement(HudElement element, CameraProperties cameraProperties)
    {
        var viewportRect = GuiPlacement.CameraViewportRectangle(cameraProperties, distance: element.ViewportPoint.z);
        var guiTransform = GuiPlacement.ProjectPointOnPlane(viewportRect, element.ViewportPoint);

        guiTransform = guiTransform.Rotate(element.RotationOffset);

        if (element.AdjustToFieldOfView)
        {
            guiTransform = guiTransform.UpdateScale(element.Scale * GuiPlacement.FocalLength(cameraProperties.FieldOfView));
        }
        else
        {
            guiTransform = guiTransform.UpdateScale(element.Scale);
        }
        // Make everything smaller when VR is enabled
        if (_settingsProvider.ActiveVrMode != VrMode.None)
        {
            guiTransform = guiTransform.Scale(Vector3.one / _vrShrinkFactor);
        }

        var scale = guiTransform.Scale;

        scale.z      = 1;
        guiTransform = guiTransform.UpdateScale(scale);

        element.transform.SetLocal(guiTransform);
    }
Beispiel #2
0
    private GuiPlacement getPlacement()
    {
        GuiPlacement             referencePlacement    = positionReference != null ? positionReference.placement : null;
        GuiPositionWithReference positionWithReference = new GuiPositionWithReference(position, referencePlacement);

        return(GuiPlacementCalculatorApi.GetPlacement(positionWithReference, contentSize()));
    }
Beispiel #3
0
    void Update()
    {
        // TODO Listen to field of view events
        var focalLength = GuiPlacement.FocalLength(_cameraRig.FieldOfView);

        transform.localScale = _initialScale * focalLength;
    }
Beispiel #4
0
    private Vector3 RelativeTargetScale(Vector3 scale)
    {
        var distanceScale = _cameraTransform != null
            ? GuiPlacement.RelativeScale(_cameraTransform, transform.parent.position)
            : 1f;

        var targetScale = scale * distanceScale;

        targetScale = Vector3.Scale(targetScale, _initialScale);
        return(targetScale);
    }
Beispiel #5
0
    void Update()
    {
        if (_cameraTransform.IsDestroyed())
        {
            Debug.Log("camera transform is destroyed ");
            return;
        }

        // Set the bottom position of the GUI element as anchor point
        transform.position = transform.parent.position + _cameraTransform.up * (transform.localScale.y / 2);
        GuiPlacement.FaceTransform(transform, _cameraTransform);
        transform.Rotate(0, 180, 0, Space.Self);
    }
 public void Render()
 {
     placement = getPlacement();
     Control.Render(placement.Placement, Content);
 }
Beispiel #7
0
 public void Render()
 {
     placement = getPlacement();
     Control.Render(placement.Placement, Content);
 }
 public GuiPositionWithReference(GuiPosition position, GuiPlacement reference)
 {
     this.position  = position;
     this.reference = reference;
 }