예제 #1
0
 private void Collider2D_OnCollide(PolygonColliderObject collider)
 {
     if (collider.Tag == "Bullet")
     {
         OnCollideBullet();
     }
 }
예제 #2
0
 public PolygonCollider(SceneActor actor, Polygon polygon, CollisionWorld collisionWorld, int layer) : base(actor)
 {
     colliderObject = new PolygonColliderObject(polygon, actor.Transform);
     AddSubObject(colliderObject);
     indexInWorld              = collisionWorld.AddCollider(colliderObject, layer);
     this.collisionWorld       = collisionWorld;
     this.layer                = layer;
     colliderObject.OnCollide += ColliderObject_OnCollide;
 }
예제 #3
0
    private void AddNewObject(MouseUpEvent evt)
    {
        objectEditSelectionContainer.Clear();

        if (objectSelectionField.value == null)
        {
            string typeOfObject = ObjectTypeLayer.value;
            switch (typeOfObject)
            {
            case "SpriteObject":
                #region
                ObjectField SpriteSpriteSelection = ve.Q <ObjectField>("SpriteImageObjectSelectionField");
                if (SpriteSpriteSelection.value != null)
                {
                    ScriptableObject so = ScriptableObject.CreateInstance <SpriteObject>();

                    SpriteObject spriteObject = (SpriteObject)so;
                    Sprite       s            = (Sprite)SpriteSpriteSelection.value;
                    spriteObject.sprite = (Sprite)SpriteSpriteSelection.value;
                    EditorUtility.SetDirty(spriteObject);
                    spriteObject.x = (int)s.rect.x;
                    EditorUtility.SetDirty(spriteObject);
                    spriteObject.y = (int)s.rect.y;
                    EditorUtility.SetDirty(spriteObject);
                    spriteObject.width = (int)s.rect.width;
                    EditorUtility.SetDirty(spriteObject);
                    spriteObject.height = (int)s.rect.height;
                    EditorUtility.SetDirty(spriteObject);

                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(spriteObject, "Assets/Export/Data/SpriteData.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(spriteObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                break;

                #endregion
            case "EnvironmentObject":
                #region
                ObjectField EnvironmentSpriteSelection = ve.Q <ObjectField>("SpriteImageObjectSelectionField");
                ObjectField ColliderSelection          = ve.Q <ObjectField>("SpriteColliderObjectSelectionField");
                if (EnvironmentSpriteSelection.value != null)
                {
                    ScriptableObject eo = ScriptableObject.CreateInstance <EnvironmentObject>();

                    EnvironmentObject environmentObject = (EnvironmentObject)eo;
                    environmentObject.sprite = (SpriteObject)EnvironmentSpriteSelection.value;
                    EditorUtility.SetDirty(environmentObject);
                    if (ColliderSelection.value != null)
                    {
                        environmentObject.collider = (ColliderObject)ColliderSelection.value;
                        EditorUtility.SetDirty(environmentObject);
                    }

                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(environmentObject, "Assets/Export/Data/EnvironementData.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(environmentObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();

                //ve.Bind(serializedObject);
                break;

                #endregion
            case "StaticObject":
                #region
                ObjectField StaticSpriteSelection   = ve.Q <ObjectField>("SpriteImageObjectSelectionField");
                ObjectField StaticColliderSelection = ve.Q <ObjectField>("SpriteColliderObjectSelectionField");
                if (StaticSpriteSelection.value != null && StaticColliderSelection.value != null)
                {
                    ScriptableObject so = ScriptableObject.CreateInstance <StaticObject>();

                    StaticObject staticObject = (StaticObject)so;
                    staticObject.sprite = (SpriteObject)StaticSpriteSelection.value;
                    EditorUtility.SetDirty(staticObject);
                    staticObject.collider = (ColliderObject)StaticColliderSelection.value;
                    EditorUtility.SetDirty(staticObject);

                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(staticObject, "Assets/Export/Data/StaticObject.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(staticObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                break;

                #endregion
            case "AnimationObject":
                #region
                ScriptableObject animso     = ScriptableObject.CreateInstance <AnimationObject>();
                AnimationObject  animObject = (AnimationObject)animso;
                if (string.IsNullOrEmpty(ObjectNameTextField.value))
                {
                    AssetDatabase.CreateAsset(animObject, "Assets/Export/Data/AnimationObject.asset");
                }
                else
                {
                    AssetDatabase.CreateAsset(animObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                break;

                #endregion
            case "EnemyObject":
                #region
                ObjectField EnemyObjectSpriteSelection   = ve.Q <ObjectField>("EnemySpriteObjectSelectionField");
                FloatField  EnemyHealthField             = ve.Q <FloatField>("EnemyObjectHealthField");
                FloatField  EnemyAttackField             = ve.Q <FloatField>("EnemyObjectAttackField");
                ObjectField EnemyObjectColliderSelection = ve.Q <ObjectField>("EnemyColliderObjectSelectionField");
                if (EnemyObjectSpriteSelection.value != null && EnemyHealthField.value != 0 && EnemyAttackField.value != 0 && EnemyObjectColliderSelection.value != null)
                {
                    ScriptableObject so = ScriptableObject.CreateInstance <EnemyObject>();

                    EnemyObject enemyObject = (EnemyObject)so;
                    enemyObject.sprite = (SpriteObject)EnemyObjectSpriteSelection.value;
                    EditorUtility.SetDirty(enemyObject);
                    enemyObject.health = EnemyHealthField.value;
                    EditorUtility.SetDirty(enemyObject);
                    enemyObject.attack = EnemyAttackField.value;
                    EditorUtility.SetDirty(enemyObject);
                    enemyObject.enemyCollider = (CircleColliderObject)EnemyObjectColliderSelection.value;
                    EditorUtility.SetDirty(enemyObject);

                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(enemyObject, "Assets/Export/Data/EnemyObject.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(enemyObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                break;

                #endregion
            case "EnemySpawner":
                #region
                ObjectField EnemySpawnerObjectSpriteSelection   = ve.Q <ObjectField>("EnemySpawnerSpriteObjectSelectionField");
                FloatField  EnemySpawnerTimeField               = ve.Q <FloatField>("EnemySpawnTimeField");
                ObjectField EnemySpawnerenemySelection          = ve.Q <ObjectField>("EnemyObjectSelectionField");
                ObjectField EnemySpawnerObjectColliderSelection = ve.Q <ObjectField>("SpawnerColliderObjectSelectionField");
                if (EnemySpawnerObjectSpriteSelection.value != null && EnemySpawnerTimeField != null && EnemySpawnerenemySelection.value != null && EnemySpawnerObjectColliderSelection.value != null)
                {
                    ScriptableObject so = ScriptableObject.CreateInstance <EnemySpawnerObject>();

                    EnemySpawnerObject enemySpawnerObject = (EnemySpawnerObject)so;
                    enemySpawnerObject.sprite = (SpriteObject)EnemySpawnerObjectSpriteSelection.value;
                    EditorUtility.SetDirty(enemySpawnerObject);
                    enemySpawnerObject.spawnTime = EnemySpawnerTimeField.value;
                    EditorUtility.SetDirty(enemySpawnerObject);
                    enemySpawnerObject.enemy = (EnemyObject)EnemySpawnerenemySelection.value;
                    EditorUtility.SetDirty(enemySpawnerObject);
                    enemySpawnerObject.spawnerCollider = (CircleColliderObject)EnemySpawnerObjectColliderSelection.value;
                    EditorUtility.SetDirty(enemySpawnerObject);

                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(enemySpawnerObject, "Assets/Export/Data/EnemySpawnerObject.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(enemySpawnerObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                break;

                #endregion
            //case "Player":
            //    break;
            case "PolygonCollider":
                #region
                FloatField PolyColliderHeightField     = ve.Q <FloatField>("PolygonColliderHeightField");
                FloatField PolyColliderWidthField      = ve.Q <FloatField>("PolygonColliderWidthField");
                Toggle     PolyColliderIsTriggerToggle = ve.Q <Toggle>("PolygonColliderSetTrigger");
                if (PolyColliderHeightField != null && PolyColliderWidthField != null && PolyColliderIsTriggerToggle != null)
                {
                    ScriptableObject so = ScriptableObject.CreateInstance <PolygonColliderObject>();

                    PolygonColliderObject polygonColliderObject = (PolygonColliderObject)so;
                    polygonColliderObject.height = PolyColliderHeightField.value;
                    EditorUtility.SetDirty(polygonColliderObject);
                    polygonColliderObject.width = PolyColliderWidthField.value;
                    EditorUtility.SetDirty(polygonColliderObject);
                    polygonColliderObject.isTrigger = PolyColliderIsTriggerToggle.value;
                    EditorUtility.SetDirty(polygonColliderObject);

                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(polygonColliderObject, "Assets/Export/Data/PolygonColliderObject.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(polygonColliderObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                break;

                #endregion
            case "CircleCollider":
                #region
                FloatField CircleColliderRadiustField    = ve.Q <FloatField>("CircleColliderRadiusField");
                Toggle     CircleColliderIsTriggerToggle = ve.Q <Toggle>("CircleColliderSetTrigger");

                if (CircleColliderRadiustField != null && CircleColliderIsTriggerToggle != null)
                {
                    ScriptableObject so = ScriptableObject.CreateInstance <CircleColliderObject>();

                    CircleColliderObject circleColliderObject = (CircleColliderObject)so;

                    circleColliderObject.radius = CircleColliderRadiustField.value;
                    EditorUtility.SetDirty(circleColliderObject);
                    circleColliderObject.isTrigger = CircleColliderIsTriggerToggle.value;
                    EditorUtility.SetDirty(circleColliderObject);


                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(circleColliderObject, "Assets/Export/Data/CircleColliderObject.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(circleColliderObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                break;

                #endregion
            case "ProjectileObject":
                #region
                ObjectField ProjectileObjectSpriteSelection   = ve.Q <ObjectField>("ProjectileSpriteObjectSelectionField");
                FloatField  ProjectileSpeedField              = ve.Q <FloatField>("ProjectileSpeedField");
                ObjectField ProjectileObjectColliderSelection = ve.Q <ObjectField>("ProjectileColliderObjectSelectionField");

                if (ProjectileObjectSpriteSelection.value != null && ProjectileSpeedField != null && ProjectileObjectColliderSelection.value != null)
                {
                    ScriptableObject so = ScriptableObject.CreateInstance <ProjectileObject>();

                    ProjectileObject projectileObject = (ProjectileObject)so;
                    projectileObject.sprite = (SpriteObject)ProjectileObjectSpriteSelection.value;
                    EditorUtility.SetDirty(projectileObject);
                    projectileObject.speed = ProjectileSpeedField.value;
                    EditorUtility.SetDirty(projectileObject);
                    projectileObject.projectileCollider = (CircleColliderObject)ProjectileObjectColliderSelection.value;
                    EditorUtility.SetDirty(projectileObject);

                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(projectileObject, "Assets/Export/Data/ProjectileObject.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(projectileObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                break;

                #endregion
            case "PlayerObject":
                #region
                ObjectField PlayerObjectSpriteSelection     = ve.Q <ObjectField>("PlayerSpriteObjectSelectionField");
                FloatField  PlayerHealthField               = ve.Q <FloatField>("PlayerObjectHealthField");
                FloatField  PlayerAttackField               = ve.Q <FloatField>("PlayerObjectAttackField");
                FloatField  PlayerSpeedField                = ve.Q <FloatField>("PlayerObjectSpeedField");
                ObjectField PlayerObjectProjectileSelection = ve.Q <ObjectField>("PlayerProjectileObjectSelectionField");
                ObjectField PlayerObjectColliderSelection   = ve.Q <ObjectField>("PlayerColliderObjectSelectionField");

                if (PlayerObjectSpriteSelection.value != null && PlayerHealthField.value != 0 && PlayerAttackField.value != 0 && PlayerSpeedField.value != 0 && PlayerObjectProjectileSelection.value != null && PlayerObjectColliderSelection.value != null)
                {
                    ScriptableObject so = ScriptableObject.CreateInstance <PlayerObject>();

                    PlayerObject playerObject = (PlayerObject)so;
                    playerObject.sprite = (SpriteObject)PlayerObjectSpriteSelection.value;
                    EditorUtility.SetDirty(playerObject);
                    playerObject.health = PlayerHealthField.value;
                    EditorUtility.SetDirty(playerObject);
                    playerObject.attack = PlayerAttackField.value;
                    EditorUtility.SetDirty(playerObject);
                    playerObject.projectile = (ProjectileObject)PlayerObjectProjectileSelection.value;
                    EditorUtility.SetDirty(playerObject);
                    playerObject.playerCollider = (CircleColliderObject)PlayerObjectColliderSelection.value;
                    EditorUtility.SetDirty(playerObject);

                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(playerObject, "Assets/Export/Data/PlayerObject.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(playerObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                break;
                #endregion
            }
        }
    }
예제 #4
0
 private void ColliderObject_OnCollide(PolygonColliderObject collider)
 {
     OnCollide(collider);
 }