コード例 #1
0
 protected void OnDestroy()
 {
     if (parentWindow)
     {
         parentWindow.assetWindow = null;
     }
     parentWindow = null;
 }
コード例 #2
0
 public static void createWindow()
 {
     if (_window != null)
     {
         _window.Close();
     }
     _window = GetWindow <GauntletLevelEditor>();
     _window.titleContent = new GUIContent("Gauntlet Level Editor");
     _window.maxSize      = new Vector2(width, height);
     _window.minSize      = new Vector2(width, height);
 }
コード例 #3
0
 public static EditorWindow createWindow <T>(GauntletLevelEditor _parentWindow, string windowTitle) where T : EditorWindow
 {
     if (_window != null)
     {
         _window.Close();
     }
     _window = GetWindow <T>();
     _window.titleContent = new GUIContent(windowTitle);
     _window.maxSize      = new Vector2(width, _parentWindow.position.height);
     _window.minSize      = new Vector2(width, _parentWindow.position.height);
     _window.Repaint();
     parentWindow = _parentWindow;
     return(_window);
 }
コード例 #4
0
    public void OnEnable()
    {
        setupWindow();

        // Data
        dataRoot.Add(new Label("Choose a Enemy:"));
        objectData            = new ObjectField();
        objectData.objectType = typeof(Enemy);
        dataRoot.Add(objectData);

        objectData.RegisterCallback <ChangeEvent <UnityEngine.Object> >((evt) =>
        {
            var change = (evt.target as ObjectField).value;
            enemy      = change as Enemy;
            UpdateBinding();
        });

        dataRoot.Add(new Spacer(30));
        dataRoot.Add(new Label("Name:"));
        nameTextField             = new TextField();
        nameTextField.bindingPath = "objectName";
        dataRoot.Add(nameTextField);

        addSlider(ref dataRoot, 20, 100, "Health:   ", "health");
        addSlider(ref dataRoot, 30, 500, "Walk Speed:   ", "walkSpeed");
        addSlider(ref dataRoot, 1, 100, "Time Between Each Attack (s):   ", "attackTimeInterval");

        dataRoot.Add(new Spacer(30));
        dataRoot.Add(new Label("Attack Style:"));
        var attackStyleEnumField = new EnumField(AttackStyles.RangeBased);

        dataRoot.Add(attackStyleEnumField);

        attackStyleEnumField.RegisterCallback <ChangeEvent <Enum> >((evt) =>
        {
            var change = evt.newValue;
            if (enemy)
            {
                enemy.attackStyle = Convert.ToInt32(change);
            }
        });

        dataRoot.Add(new Spacer(30));
        dataRoot.Add(new Label("Weapon:"));
        var weaponData = new ObjectField();

        weaponData.objectType  = typeof(Projectile);
        weaponData.bindingPath = "weapon";
        dataRoot.Add(weaponData);

        // sprites
        Button newData = new Button(() =>
        {
            Enemy newEnemy      = CreateInstance <Enemy>();
            newEnemy.objectName = "Enemy";
            var path            = "Assets/Resources/Gauntlet/Prefabs/Enemies";
            AssetDatabase.CreateAsset(newEnemy, AssetDatabase.GenerateUniqueAssetPath(path + "/Enemy-00.asset"));
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
            objectData.value = newEnemy;
            UpdateBinding();
        });

        newData.text = "New";
        spriteRoot.Add(newData);
        spriteRoot.Add(new Spacer(30));
        spriteRoot.Add(new Label("Enemy Sprite:"));
        objectTileSprite             = new ObjectField();
        objectTileSprite.objectType  = typeof(Sprite);
        objectTileSprite.bindingPath = "mainSprite";
        spriteRoot.Add(objectTileSprite);
        objectTileSpriteImage = new Image()
        {
            style =
            {
                width             = 100,
                height            = 100,
                borderLeftWidth   =   2,
                borderRightWidth  =   2,
                borderTopWidth    =   2,
                borderBottomWidth =   2,
                marginTop         =  10,
                marginBottom      =  20,
                marginLeft        =  10,
                borderColor       = Color.gray
            },
            scaleMode = ScaleMode.ScaleToFit
        };

        objectTileSprite.RegisterCallback <ChangeEvent <UnityEngine.Object> >((evt) =>
        {
            var change = (evt.target as ObjectField).value;
            if (change)
            {
                var sprite = change as Sprite;
                GauntletLevelEditor.rebindImageTexture(ref objectTileSpriteImage, sprite);
            }
            else
            {
                objectTileSpriteImage.image = null;
            }

            if (objectData.value)
            {
                (objectData.value as Enemy).mainSprite = change as Sprite;
            }
            Repaint();
            parentWindow.rebindPrefabListView();
        });

        spriteRoot.Add(objectTileSpriteImage);
    }
コード例 #5
0
    public void OnEnable()
    {
        setupWindow();

        // Data
        dataRoot.Add(new Label("Choose a Projectile:"));
        objectData            = new ObjectField();
        objectData.objectType = typeof(Projectile);
        dataRoot.Add(objectData);

        objectData.RegisterCallback <ChangeEvent <Object> >((evt) =>
        {
            var change = (evt.target as ObjectField).value;
            projectile = change as Projectile;
            UpdateBinding();
        });

        dataRoot.Add(new Spacer(30));
        dataRoot.Add(new Label("Name:"));
        nameTextField             = new TextField();
        nameTextField.bindingPath = "objectName";
        dataRoot.Add(nameTextField);

        addSlider(ref dataRoot, 1, 100, "Damage:   ", "damage");
        addSlider(ref dataRoot, 50, 1000, "Throw Speed:   ", "throwSpeed");

        // sprites
        Button newData = new Button(() =>
        {
            Projectile newProjectile = CreateInstance <Projectile>();
            newProjectile.objectName = "Projectile";
            var path = "Assets/Resources/Gauntlet/Prefabs/Projectiles";
            AssetDatabase.CreateAsset(newProjectile, AssetDatabase.GenerateUniqueAssetPath(path + "/Projectile-00.asset"));
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
            objectData.value = newProjectile;
            UpdateBinding();
        });

        newData.text = "New";
        spriteRoot.Add(newData);
        spriteRoot.Add(new Spacer(30));
        spriteRoot.Add(new Label("Projectile Sprite:"));
        objectTileSprite             = new ObjectField();
        objectTileSprite.objectType  = typeof(Sprite);
        objectTileSprite.bindingPath = "mainSprite";
        spriteRoot.Add(objectTileSprite);
        objectTileSpriteImage = new Image()
        {
            style =
            {
                width             = 100,
                height            = 100,
                borderLeftWidth   =   2,
                borderRightWidth  =   2,
                borderTopWidth    =   2,
                borderBottomWidth =   2,
                marginTop         =  10,
                marginBottom      =  20,
                marginLeft        =  10,
                borderColor       = Color.gray
            },
            scaleMode = ScaleMode.ScaleToFit
        };

        objectTileSprite.RegisterCallback <ChangeEvent <Object> >((evt) =>
        {
            var change = (evt.target as ObjectField).value;
            if (change)
            {
                var sprite = change as Sprite;
                GauntletLevelEditor.rebindImageTexture(ref objectTileSpriteImage, sprite);
            }
            else
            {
                objectTileSpriteImage.image = null;
            }

            if (objectData.value)
            {
                (objectData.value as Projectile).mainSprite = change as Sprite;
            }
            Repaint();
            parentWindow.rebindPrefabListView();
        });

        spriteRoot.Add(objectTileSpriteImage);
    }
コード例 #6
0
    public void OnEnable()
    {
        setupWindow();

        // Data
        dataRoot.Add(new Label("Choose a SpawnFactory:"));
        objectData            = new ObjectField();
        objectData.objectType = typeof(SpawnFactory);
        dataRoot.Add(objectData);

        objectData.RegisterCallback <ChangeEvent <Object> >((evt) =>
        {
            var change   = (evt.target as ObjectField).value;
            spawnFactory = change as SpawnFactory;
            UpdateBinding();
        });

        dataRoot.Add(new Spacer(30));
        dataRoot.Add(new Label("Name:"));
        nameTextField             = new TextField();
        nameTextField.bindingPath = "objectName";
        dataRoot.Add(nameTextField);

        addSlider(ref dataRoot, 20, 100, "Health:   ", "health");
        addSlider(ref dataRoot, 1, 100, "TimeInterval (s):   ", "timeInterval");


        dataRoot.Add(new Spacer(30));
        dataRoot.Add(new Label("Enemy:"));
        var enemyData = new ObjectField();

        enemyData.objectType  = typeof(Enemy);
        enemyData.bindingPath = "enemy";
        dataRoot.Add(enemyData);

        dataRoot.Add(new Spacer(30));
        dataRoot.Add(new Label("Drop Item:"));
        var itemData = new ObjectField();

        itemData.objectType  = typeof(Item);
        itemData.bindingPath = "dropItem";
        dataRoot.Add(itemData);

        // sprites
        Button newData = new Button(() =>
        {
            SpawnFactory newSpawnFactory = CreateInstance <SpawnFactory>();
            newSpawnFactory.objectName   = "SpawnFactory";
            var path = "Assets/Resources/Gauntlet/Prefabs/SpawnFactories";
            AssetDatabase.CreateAsset(newSpawnFactory, AssetDatabase.GenerateUniqueAssetPath(path + "/SpawnFactory-00.asset"));
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
            objectData.value = newSpawnFactory;
            UpdateBinding();
        });

        newData.text = "New";
        spriteRoot.Add(newData);
        spriteRoot.Add(new Spacer(30));
        spriteRoot.Add(new Label("SpawnFactory Sprite:"));
        objectTileSprite             = new ObjectField();
        objectTileSprite.objectType  = typeof(Sprite);
        objectTileSprite.bindingPath = "mainSprite";
        spriteRoot.Add(objectTileSprite);
        objectTileSpriteImage = new Image()
        {
            style =
            {
                width             = 100,
                height            = 100,
                borderLeftWidth   =   2,
                borderRightWidth  =   2,
                borderTopWidth    =   2,
                borderBottomWidth =   2,
                marginTop         =  10,
                marginBottom      =  20,
                marginLeft        =  10,
                borderColor       = Color.gray
            },
            scaleMode = ScaleMode.ScaleToFit
        };

        objectTileSprite.RegisterCallback <ChangeEvent <Object> >((evt) =>
        {
            var change = (evt.target as ObjectField).value;
            if (change)
            {
                var sprite = change as Sprite;
                GauntletLevelEditor.rebindImageTexture(ref objectTileSpriteImage, sprite);
            }
            else
            {
                objectTileSpriteImage.image = null;
            }

            if (objectData.value)
            {
                (objectData.value as SpawnFactory).mainSprite = change as Sprite;
            }
            Repaint();
            parentWindow.rebindPrefabListView();
        });

        spriteRoot.Add(objectTileSpriteImage);
    }
コード例 #7
0
    public void OnEnable()
    {
        setupWindow();

        // Data
        dataRoot.Add(new Label("Choose a Ground Tile:"));
        objectData            = new ObjectField();
        objectData.objectType = typeof(GroundTile);
        dataRoot.Add(objectData);

        objectData.RegisterCallback <ChangeEvent <Object> >((evt) =>
        {
            var change = (evt.target as ObjectField).value;
            groundTile = change as GroundTile;
            UpdateBinding();
        });

        dataRoot.Add(new Spacer(30));
        dataRoot.Add(new Label("Name:"));
        nameTextField             = new TextField();
        nameTextField.bindingPath = "objectName";
        dataRoot.Add(nameTextField);

        dataRoot.Add(new Spacer(30));
        Toggle colToggle     = new Toggle("Is Collider:");
        Toggle triggerToggle = new Toggle("Is Trigger:");

        colToggle.bindingPath     = "isCollider";
        triggerToggle.bindingPath = "isTrigger";
        triggerToggle.visible     = false;

        colToggle.RegisterCallback <ChangeEvent <bool> >((evt) =>
        {
            if (evt.newValue == false)
            {
                triggerToggle.value   = false;
                triggerToggle.visible = false;
            }
            else
            {
                triggerToggle.visible = true;
            }
        });

        dataRoot.Add(colToggle);
        dataRoot.Add(triggerToggle);



        // sprites
        Button newData = new Button(() =>
        {
            GroundTile tile = CreateInstance <GroundTile>();
            tile.objectName = "GroundTile";
            var path        = "Assets/Resources/Gauntlet/Prefabs/GroundTiles";
            AssetDatabase.CreateAsset(tile, AssetDatabase.GenerateUniqueAssetPath(path + "/GroundTile-00.asset"));
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
            objectData.value = tile;
            UpdateBinding();
        });

        newData.text = "New";
        spriteRoot.Add(newData);
        spriteRoot.Add(new Spacer(30));
        spriteRoot.Add(new Label("Ground Tile Sprite:"));
        objectTileSprite             = new ObjectField();
        objectTileSprite.objectType  = typeof(Sprite);
        objectTileSprite.bindingPath = "mainSprite";
        spriteRoot.Add(objectTileSprite);
        objectTileSpriteImage = new Image()
        {
            style =
            {
                width             = 100,
                height            = 100,
                borderLeftWidth   =   2,
                borderRightWidth  =   2,
                borderTopWidth    =   2,
                borderBottomWidth =   2,
                marginTop         =  10,
                marginBottom      =  20,
                marginLeft        =  10,
                borderColor       = Color.gray
            },
            scaleMode = ScaleMode.ScaleToFit
        };

        objectTileSprite.RegisterCallback <ChangeEvent <Object> >((evt) =>
        {
            var change = (evt.target as ObjectField).value;
            if (change)
            {
                var sprite = change as Sprite;
                GauntletLevelEditor.rebindImageTexture(ref objectTileSpriteImage, sprite);
            }
            else
            {
                objectTileSpriteImage.image = null;
            }

            if (objectData.value)
            {
                (objectData.value as GroundTile).mainSprite = change as Sprite;
            }
            Repaint();
            parentWindow.rebindPrefabListView();
        });

        spriteRoot.Add(objectTileSpriteImage);
    }
コード例 #8
0
    public void OnEnable()
    {
        setupWindow();

        // Data
        dataRoot.Add(new Label("Choose a Item:"));
        objectData            = new ObjectField();
        objectData.objectType = typeof(Item);
        dataRoot.Add(objectData);

        objectData.RegisterCallback <ChangeEvent <UnityEngine.Object> >((evt) =>
        {
            var change = (evt.target as ObjectField).value;
            item       = change as Item;
            UpdateBinding();
        });

        dataRoot.Add(new Spacer(30));
        dataRoot.Add(new Label("Name:"));
        nameTextField             = new TextField();
        nameTextField.bindingPath = "objectName";
        dataRoot.Add(nameTextField);

        dataRoot.Add(new Spacer(30));
        dataRoot.Add(new Label("Item Type:"));
        var itemTypeEnumField = new EnumField(ItemTypes.HealthBoost);

        itemTypeEnumField.bindingPath = "itemType";
        dataRoot.Add(itemTypeEnumField);

        itemTypeEnumField.RegisterCallback <ChangeEvent <Enum> >((evt) =>
        {
            var change = evt.newValue;
            if (item)
            {
                item.itemType = Convert.ToInt32(change);
            }
        });

        // sprites
        Button newData = new Button(() =>
        {
            Item newItem       = CreateInstance <Item>();
            newItem.objectName = "Item";
            var path           = "Assets/Resources/Gauntlet/Prefabs/Items";
            AssetDatabase.CreateAsset(newItem, AssetDatabase.GenerateUniqueAssetPath(path + "/Item-00.asset"));
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
            objectData.value = newItem;
            UpdateBinding();
        });

        newData.text = "New";
        spriteRoot.Add(newData);
        spriteRoot.Add(new Spacer(30));
        spriteRoot.Add(new Label("Item Sprite:"));
        objectTileSprite             = new ObjectField();
        objectTileSprite.objectType  = typeof(Sprite);
        objectTileSprite.bindingPath = "mainSprite";
        spriteRoot.Add(objectTileSprite);
        objectTileSpriteImage = new Image()
        {
            style =
            {
                width             = 100,
                height            = 100,
                borderLeftWidth   =   2,
                borderRightWidth  =   2,
                borderTopWidth    =   2,
                borderBottomWidth =   2,
                marginTop         =  10,
                marginBottom      =  20,
                marginLeft        =  10,
                borderColor       = Color.gray
            },
            scaleMode = ScaleMode.ScaleToFit
        };

        objectTileSprite.RegisterCallback <ChangeEvent <UnityEngine.Object> >((evt) =>
        {
            var change = (evt.target as ObjectField).value;
            if (change)
            {
                var sprite = change as Sprite;
                GauntletLevelEditor.rebindImageTexture(ref objectTileSpriteImage, sprite);
            }
            else
            {
                objectTileSpriteImage.image = null;
            }

            if (objectData.value)
            {
                (objectData.value as Item).mainSprite = change as Sprite;
            }
            Repaint();
            parentWindow.rebindPrefabListView();
        });

        spriteRoot.Add(objectTileSpriteImage);
    }