/// <summary>
///
/// </summary>
/// <param name="popup"></param>
/// <param name="target"></param>
/// <param name="downward"></param>
/// <returns></returns>
public Vector2 GetPoupPosition(GObject popup, GObject target, object downward)
{
Vector2 pos;
Vector2 size = Vector2.zero;
if (target != null)
{
pos = target.LocalToRoot(Vector2.zero, this);
size = target.LocalToRoot(target.size, this) - pos;
}
else
{
pos = this.GlobalToLocal(Stage.inst.touchPosition);
}
float xx, yy;
xx = pos.x;
if (xx + popup.width > this.width)
{
xx = xx + size.x - popup.width;
}
yy = pos.y + size.y;
if ((downward == null && yy + popup.height > this.height) ||
downward != null && (bool)downward == false)
{
yy = pos.y - popup.height - 1;
if (yy < 0)
{
yy = 0;
xx += size.x / 2;
}
}
return(new Vector2(Mathf.RoundToInt(xx), Mathf.RoundToInt(yy)));
}