Inheritance: MonoBehaviour
示例#1
0
    public static void ProcessNode(SuperMetaNode root_node, Transform parent, Dictionary <string, object> node, GameObject maybe_recycled_node)
    {
        #if UNITY_EDITOR
        string image_name = (string)node["name"];
        string image_type = image_name.Split('_')[0];

        if (spriteClasses.ContainsKey(image_type))
        {
            object[] args = new object[4];
            args[0] = root_node;
            args[1] = parent;
            args[2] = node;
            args[3] = maybe_recycled_node;
            spriteClasses[image_type].GetMethod("ProcessNode").Invoke(null, args);
            return;
        }

        GameObject  game_object = maybe_recycled_node;
        SuperSprite sprite      = null;
        Image       image       = null;
        if (game_object == null)
        {
            game_object = new GameObject();
            image       = game_object.AddComponent(typeof(Image)) as Image;
            sprite      = game_object.AddComponent(typeof(SuperSprite)) as SuperSprite;
        }
        else
        {
            image  = game_object.GetComponent <Image>();
            sprite = game_object.GetComponent <SuperSprite>();
        }

        sprite.CreateRectTransform(game_object, node);

        sprite.name = image_name;
        sprite.hierarchyDescription = "SPRITE";

        image.sprite = AssetDatabase.LoadAssetAtPath <Sprite>(root_node.imagePath + "/" + image_name + ".png");

        if (image_type == "flipX")
        {
            sprite.flipX = true;
        }

        sprite.cachedMetadata = node;
        sprite.rootNode       = root_node;

        root_node.spriteReferences.Add(new SpriteReference(image_name, sprite));
        game_object.transform.SetParent(parent);
        sprite.Reset();
        #endif
    }
示例#2
0
    //SuperScaleButton takes two inputs:
    //  a contaner named scalebtn_
    //  a single sprite named scalebtn_
    //  the end result is the same!
    //  but if we're just an image... let's fake being an image inside a container
    public static void ProcessNode(SuperMetaNode root_node, Transform parent, Dictionary <string, object> node, GameObject maybe_recycled_node)
    {
        #if UNITY_EDITOR
        string node_type = (string)node["type"];
        string name      = (string)node["name"];

        GameObject       game_object = maybe_recycled_node;
        SuperScaleButton button      = null;
        if (game_object == null)
        {
            game_object = new GameObject();
            button      = game_object.AddComponent(typeof(SuperScaleButton)) as SuperScaleButton;
            button.createAnimation();
        }
        else
        {
            button = game_object.GetComponent <SuperScaleButton>();
            //TODO: should probably verify that our animation is still set up properly
            //but for now just assume we're not changing classes
        }

        button.CreateRectTransform(game_object, node);
        button.name                 = name;
        button.rootNode             = root_node;
        button.cachedMetadata       = node;
        button.hierarchyDescription = "BUTTON";

        root_node.buttonReferences.Add(new ButtonReference(name, button));

        game_object.transform.SetParent(parent);
        button.Reset();

        if (node_type == "image")
        {
            SuperSprite sprite = game_object.GetComponent <SuperSprite>();
            Image       image  = null;
            if (sprite == null)
            {
                sprite = game_object.AddComponent(typeof(SuperSprite)) as SuperSprite;
                image  = game_object.AddComponent(typeof(Image)) as Image;
            }
            else
            {
                image = game_object.GetComponent <Image>();
            }

            sprite.name           = name;
            sprite.rootNode       = root_node;
            sprite.cachedMetadata = node;

            image.sprite = AssetDatabase.LoadAssetAtPath <Sprite>(root_node.imagePath + "/" + name + ".png");

            sprite.resetX = button.resetX;
            sprite.resetY = button.resetY;

            root_node.spriteReferences.Add(new SpriteReference(name, sprite));
            game_object.transform.SetParent(parent);

            sprite.Reset();
        }

        //image nodes don't have children
        if (node.ContainsKey("children"))
        {
            root_node.ProcessChildren(game_object.transform, node["children"] as List <object>);
        }
        #endif
    }
示例#3
0
 public SpriteReference(string name, SuperSprite sprite)
 {
     this.name   = name;
     this.sprite = sprite;
 }