using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
#if UNITY_EDITOR
using UnityEditor;
#endif
using System;
namespace UIWidgets {
///
/// Utilites.
///
static public class Utilites {
#if UNITY_EDITOR
///
/// Creates the object by path to asset prefab.
///
/// The created object.
/// Path.
/// Parent.
static public GameObject CreateObject(string path, Transform parent=null)
{
var prefab = AssetDatabase.LoadAssetAtPath(path);
if (prefab==null)
{
throw new ArgumentException(string.Format("Prefab not found at path {0}.", path));
}
var go = UnityEngine.Object.Instantiate(prefab) as GameObject;
var go_parent = (parent!=null) ? parent : Selection.activeTransform;
if ((go_parent==null) || ((go_parent.gameObject.transform as RectTransform)==null))
{
go_parent = GetCanvasTransform();
}
if (go_parent!=null)
{
go.transform.SetParent(go_parent, false);
}
go.name = prefab.name;
var rectTransform = go.transform as RectTransform;
if (rectTransform!=null)
{
rectTransform.anchoredPosition = new Vector2(0, 0);
}
FixInstantiated(prefab, go);
return go;
}
///
/// Creates the object from asset.
///
/// The object from asset.
/// Search string.
/// Undo name.
static public GameObject CreateObjectFromAsset(string searchString, string undoName)
{
var prefab = AssetDatabase.FindAssets(searchString);
if (prefab.Length==0)
{
return null;
}
var go = Utilites.CreateObject(AssetDatabase.GUIDToAssetPath(prefab[0]));
Undo.RegisterCreatedObjectUndo(go, undoName);
return go;
}
///
/// Creates the widget from prefab by name.
///
/// Created GameObject.
/// Widget name.
static public GameObject CreateWidgetFromAsset(string widget)
{
return CreateObjectFromAsset("l:Uiwidgets" + widget + "Prefab", "Create " + widget);
}
///
/// Gets the canvas transform.
///
/// The canvas transform.
static public Transform GetCanvasTransform()
{
var canvas = (Selection.activeGameObject!=null) ? Selection.activeGameObject.GetComponentInParent