Exemple #1
0
    // ===========================================================
    // Static Methods
    // ===========================================================
    
    public static T CreateChild<T>(Transform parent, string name, bool disabled = false) where T : Component {
        GameObject go = null;
    
        go = new GameObject(name);
        if (disabled) {
            MadGameObject.SetActive(go, false);
        }

        go.transform.parent = parent;
        
        go.transform.localRotation = Quaternion.identity;
        go.transform.localScale = Vector3.one;
        go.transform.localPosition = Vector3.zero;
        
        T component = go.GetComponent<T>();
        if (component == null) {
            component = go.AddComponent<T>();
        }

        if (registerUndo) {
            MadUndo.RegisterCreatedObjectUndo(go, "Created " + name);
        }
        
        return component;
    }
Exemple #2
0
 public static GameObject CreateChild(Transform parent, string name, GameObject template) {
     GameObject go = null;
     go = GameObject.Instantiate(template) as GameObject;
     go.transform.parent = parent;
     go.name = name;
     
     MadUndo.RegisterCreatedObjectUndo(go, "Created " + name);
     
     return go;
 }
Exemple #3
0
 public static GameObject CreateChild(Transform parent, string name) {
     GameObject go = new GameObject();
     go.transform.parent = parent;
     
     go.transform.localScale = Vector3.one;
     go.transform.localPosition = Vector3.zero;
     
     go.name = name;
     
     MadUndo.RegisterCreatedObjectUndo(go, "Created " + name);
     
     return go;
 }
Exemple #4
0
    public static GameObject CreateChild(Transform parent, string name, GameObject template) {
        GameObject go = null;
        
        instantiating = true;
        try {
        
            go = GameObject.Instantiate(template) as GameObject;
            go.transform.parent = parent;
            go.name = name;
            
            if (registerUndo) {
                MadUndo.RegisterCreatedObjectUndo(go, "Created " + name);
            }
#if !MAD_EBT && (!UNITY_5 || !UNITY_WEBGL) // http://fogbugz.unity3d.com/default.asp?675175_r3deh2mdhmitddpj
        } finally {
#else
} finally {} {
Exemple #5
0
    // ===========================================================
    // Constants
    // ===========================================================

    // ===========================================================
    // Static Methods
    // ===========================================================
    
    public static T CreateChild<T>(Transform parent, string name) where T : Component {
        GameObject go = null;
    
        go = new GameObject(name);
        go.transform.parent = parent;
        
        go.transform.localRotation = Quaternion.identity;
        go.transform.localScale = Vector3.one;
        go.transform.localPosition = Vector3.zero;
        
        T component = go.GetComponent<T>();
        if (component == null) {
            component = go.AddComponent<T>();
        }
        MadUndo.RegisterCreatedObjectUndo(go, "Created " + name);
        
        return component;
    }
Exemple #6
0
 public static GameObject CreateChild(Transform parent, string name, GameObject template) {
     GameObject go = null;
     
     instantiating = true;
     try {
     
         go = GameObject.Instantiate(template) as GameObject;
         go.transform.parent = parent;
         go.name = name;
         
         if (registerUndo) {
             MadUndo.RegisterCreatedObjectUndo(go, "Created " + name);
         }
     } finally {
         instantiating = false;
     }
     
     return go;
 }
    /// <summary>
    /// Will replace all icons in the layout with selected icon. Position, scale and rotation will be preserved.
    /// This method is meant for editor-use only.
    /// </summary>
    /// <param name="newIcon"></param>
    public void ReplaceIcons(GameObject newIcon)
    {
        if (Application.isPlaying)
        {
            Debug.LogError("This method can be called only from the editor");
            return;
        }

        MadUndo.LegacyRegisterSceneUndo("Replaced Icons");

        var icons       = MadTransform.FindChildren <MadLevelIcon>(draggable.transform);
        var activeIcons = from i in icons where MadGameObject.IsActive(i.gameObject) select i;

        // keep track of unlock on complete settings
        Dictionary <int, List <int> > unlockOnCompleteDict = new Dictionary <int, List <int> >();
        List <MadLevelIcon>           createdIcons         = new List <MadLevelIcon>();

        foreach (var icon in activeIcons)
        {
            var position      = icon.transform.position;
            var rotation      = icon.transform.rotation;
            var localScale    = icon.transform.localScale;
            var name          = icon.name;
            var baseDepth     = icon.guiDepth;
            var levelIndex    = icon.levelIndex;
            var configuration = icon.configuration;

            // build unlock on complete dict
            List <int> toUnlockList = new List <int>();
            foreach (var unlock in icon.unlockOnComplete)
            {
                toUnlockList.Add(unlock.levelIndex);
            }
            unlockOnCompleteDict[icon.levelIndex] = toUnlockList;


            MadUndo.DestroyObjectImmediate(icon.gameObject);

            var nIcon = CreateIcon(draggable.transform, name, iconTemplate);
            nIcon.transform.position    = position;
            nIcon.transform.rotation    = rotation;
            nIcon.transform.localScale  = localScale;
            nIcon.guiDepth              = baseDepth;
            nIcon.levelIndex            = levelIndex;
            nIcon.configuration         = configuration;
            nIcon.hasLevelConfiguration = true;

            createdIcons.Add(nIcon);


            var childSprites = MadTransform.FindChildren <MadSprite>(nIcon.transform);
            foreach (var cs in childSprites)
            {
                cs.guiDepth += baseDepth;
            }

            MadUndo.RegisterCreatedObjectUndo(nIcon.gameObject, "Replaced Icons");
        }

        icons = MadTransform.FindChildren <MadLevelIcon>(draggable.transform);

        // apply unlock on complete list
        foreach (var icon in createdIcons)
        {
            List <int> unlockList = unlockOnCompleteDict[icon.levelIndex];
            foreach (var unlockLevelIndex in unlockList)
            {
                var          query        = from i in icons where i.levelIndex == unlockLevelIndex select i;
                MadLevelIcon iconToUnlock = query.First();
                icon.unlockOnComplete.Add(iconToUnlock);
            }
        }
    }