80 lines
1.5 KiB
C#
80 lines
1.5 KiB
C#
// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.
|
|
|
|
#if !UNITY_FLASH
|
|
|
|
using UnityEngine;
|
|
|
|
namespace HutongGames.PlayMaker.Actions
|
|
{
|
|
[ActionCategory(ActionCategory.GUI)]
|
|
[Tooltip("Scales the GUI around a pivot point. By default only effects GUI rendered by this FSM, check Apply Globally to effect all GUI controls.")]
|
|
public class ScaleGUI : FsmStateAction
|
|
{
|
|
[RequiredField]
|
|
public FsmFloat scaleX;
|
|
|
|
[RequiredField]
|
|
public FsmFloat scaleY;
|
|
|
|
[RequiredField]
|
|
public FsmFloat pivotX;
|
|
|
|
[RequiredField]
|
|
public FsmFloat pivotY;
|
|
|
|
[Tooltip("Pivot point uses normalized coordinates. E.g. 0.5 is the center of the screen.")]
|
|
public bool normalized;
|
|
|
|
public bool applyGlobally;
|
|
|
|
bool applied;
|
|
|
|
public override void Reset()
|
|
{
|
|
scaleX = 1f;
|
|
scaleY = 1f;
|
|
pivotX = 0.5f;
|
|
pivotY = 0.5f;
|
|
normalized = true;
|
|
applyGlobally = false;
|
|
}
|
|
|
|
public override void OnGUI()
|
|
{
|
|
if (applied)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var scale = new Vector2(scaleX.Value, scaleY.Value);
|
|
|
|
// Not allowed to scale to 0 - it breaks the GUI matrix
|
|
|
|
if (Equals(scale.x, 0)) scale.x = 0.0001f;
|
|
if (Equals(scale.y, 0)) scale.x = 0.0001f;
|
|
|
|
var pivotPoint = new Vector2(pivotX.Value, pivotY.Value);
|
|
|
|
if (normalized)
|
|
{
|
|
pivotPoint.x *= Screen.width;
|
|
pivotPoint.y *= Screen.height;
|
|
}
|
|
|
|
GUIUtility.ScaleAroundPivot(scale, pivotPoint);
|
|
|
|
if (applyGlobally)
|
|
{
|
|
PlayMakerGUI.GUIMatrix = GUI.matrix;
|
|
applied = true;
|
|
}
|
|
}
|
|
|
|
public override void OnUpdate()
|
|
{
|
|
applied = false;
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif |