void OnSelectionChanged(Object pSelectedObject)
    {
        SaveCurrentActiveAsset();
        RemoveCurrentObjectVE();
        if (pSelectedObject == null)
        {
            return;
        }
        CreateNewObjectVE();
        mActiveGameObjectAsset = (GameScriptable)pSelectedObject;
        switch (mActiveType)
        {
        case GameObjectType.Enemy:
            SelectEnemy((Enemy)mActiveGameObjectAsset);
            break;

        case GameObjectType.Pickable:
            SelectPickable((Item)mActiveGameObjectAsset);
            break;

        case GameObjectType.Projectile:
            SelectProjectile((Projectile)mActiveGameObjectAsset);
            break;

        case GameObjectType.SpawnFactory:
            SelectSpawnFactory((SpawnFactory)mActiveGameObjectAsset);
            break;

        case GameObjectType.StaticObject:
            SelectStaticObject((StaticObject)mActiveGameObjectAsset);
            break;
        }
        EditorUtility.SetDirty(mActiveGameObjectAsset);
    }
Пример #2
0
    public void AddScriptable(Vector2Int pPosition, GameScriptable pObject)
    {
        if (mActiveLevel.mLevelData == null)
        {
            mActiveLevel.mLevelData = new List <LevelMapData>();
            EditorUtility.SetDirty(mActiveLevel);
            EditorUtility.SetDirty(mAllLevels);
        }
        int aLIx = GetPositionIndex(pPosition);

        if (aLIx == -1)
        {
            aLIx = mActiveLevel.mLevelData.Count;
            LevelMapData aData = new LevelMapData();
            aData.mLayerTypes  = new List <Level.LayerTypes>();
            aData.mPosition    = pPosition;
            aData.mScriptables = new List <GameScriptable>();
            mActiveLevel.mLevelData.Add(aData);
            EditorUtility.SetDirty(mActiveLevel);
            EditorUtility.SetDirty(mAllLevels);
        }
        mActiveLevel.mLevelData[aLIx].mLayerTypes.Add(pObject.mRenderLayer);
        EditorUtility.SetDirty(mActiveLevel);
        EditorUtility.SetDirty(mAllLevels);
        mActiveLevel.mLevelData[aLIx].mScriptables.Add(pObject);
        EditorUtility.SetDirty(mActiveLevel);
        EditorUtility.SetDirty(mAllLevels);
    }
 void SaveCurrentActiveAsset()
 {
     if (mActiveGameObjectAsset != null)
     {
         EditorUtility.SetDirty(mActiveGameObjectAsset);
         AssetDatabase.SaveAssets();
         AssetDatabase.Refresh();
         mEditoryBlock.Unbind();
         mActiveGameObjectAsset = null;
         mNameField.value       = "";
     }
 }
Пример #4
0
    public void RemoveScriptable(Vector2Int pPosition, GameScriptable pObject)
    {
        if (mActiveLevel.mLevelData == null)
        {
            return;
        }
        int aIx = GetPositionIndex(pPosition);

        mActiveLevel.mLevelData[aIx].mLayerTypes.Remove(pObject.mRenderLayer);
        EditorUtility.SetDirty(mActiveLevel);
        EditorUtility.SetDirty(mAllLevels);
        mActiveLevel.mLevelData[aIx].mScriptables.Remove(pObject);
        EditorUtility.SetDirty(mActiveLevel);
        EditorUtility.SetDirty(mAllLevels);
    }
 void SaveAsScriptableAsset()
 {
     if (IsDataValid())
     {
         SaveCurrentActiveAsset();
     }
     else
     {
         if (!EditorUtility.DisplayDialog("Some Required Values Are Missing", mActiveType.ToString() + " requires a few fields that you haven't filled. Please fill them before saving, or delete the asset.", "Keep Editing", "Delete Asset"))
         {
             AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(mActiveGameObjectAsset));
             mEditoryBlock.Unbind();
             mActiveGameObjectAsset = null;
             mNameField.value       = "";
         }
     }
     mTypeEnum.value = GameObjectType.None;
 }
Пример #6
0
    public bool IsScriptablePresent(Vector2Int pPosition, GameScriptable pObject)
    {
        if (mActiveLevel.mLevelData == null)
        {
            return(false);
        }
        int aLIx = GetPositionIndex(pPosition);

        if (aLIx == -1)
        {
            return(false);
        }
        if (mActiveLevel.mLevelData[aLIx].mScriptables.Contains(pObject))
        {
            return(true);
        }
        return(false);
    }
Пример #7
0
 void GetAllScriptableObjects()
 {
     string[] aAllAssetGUIDs = AssetDatabase.FindAssets("", new[] { "Assets/ScriptableObjects/GameObjects" });
     mBrushes = new Dictionary <Level.LayerTypes, List <GameScriptable> >(aAllAssetGUIDs.Length)
     {
         { Level.LayerTypes.Environment, new List <GameScriptable>() },
         { Level.LayerTypes.StaticObjects, new List <GameScriptable>() },
         { Level.LayerTypes.Enemies, new List <GameScriptable>() },
         { Level.LayerTypes.Players, new List <GameScriptable>() }
     };
     foreach (string aAssetGUID in aAllAssetGUIDs)
     {
         string         aPath  = AssetDatabase.GUIDToAssetPath(aAssetGUID);
         GameScriptable aAsset = AssetDatabase.LoadAssetAtPath <GameScriptable>(aPath);
         if (aAsset != null)
         {
             if (!aAsset.mIsPrefab)
             {
                 mBrushes[aAsset.mRenderLayer].Add(aAsset);
             }
         }
     }
 }
Пример #8
0
    static StringBuilder GetGameScriptableJson(Vector2Int pPosition, GameScriptable pScriptable, ref StringBuilder pResources)
    {
        StringBuilder aGameScriptable = new StringBuilder("{\n");

        aGameScriptable.Append("\"name\" : \"" + pScriptable.mName + "\",\n");
        aGameScriptable.Append("\"Components\" : [\n");
        GTransform aTransform = new GTransform();

        aTransform.Position = new position(pPosition.x * 64.00001f, pPosition.y * 64.00001f);
        aGameScriptable.Append(aTransform.ToString() + ",\n");
        switch (pScriptable.mType)
        {
        case GameScriptable.ObjectType.SpawnFactory:
            aGameScriptable.Append(GetSpawnFactoryJson((SpawnFactory)pScriptable, ref pResources));
            break;

        case GameScriptable.ObjectType.StaticObject:
            aGameScriptable.Append(GetStaticObjectJson((StaticObject)pScriptable, ref pResources));
            break;
        }
        aGameScriptable.Append("]\n");
        aGameScriptable.Append("}");
        return(aGameScriptable);
    }
    void OnCreateNewObject()
    {
        if (mActiveType == GameObjectType.None)
        {
            return;
        }
        if (string.IsNullOrEmpty(mNameField.value))
        {
            return;
        }
        string[]    aAssetFolder = { "Assets/ScriptableObjects/GameObjects/" };
        System.Type aAssetType   = null;
        switch (mActiveType)
        {
        case GameObjectType.Enemy:
            aAssetFolder[0] = aAssetFolder[0] + "Enemy";
            aAssetType      = typeof(Enemy);
            break;

        case GameObjectType.Pickable:
            aAssetFolder[0] = aAssetFolder[0] + "Item";
            aAssetType      = typeof(Item);
            break;

        case GameObjectType.Projectile:
            aAssetFolder[0] = aAssetFolder[0] + "Projectile";
            aAssetType      = typeof(Projectile);
            break;

        case GameObjectType.SpawnFactory:
            aAssetFolder[0] = aAssetFolder[0] + "Spawn Factory";
            aAssetType      = typeof(SpawnFactory);
            break;

        case GameObjectType.StaticObject:
            aAssetFolder[0] = aAssetFolder[0] + "Static Object";
            aAssetType      = typeof(StaticObject);
            break;
        }

        string[] aAssetGUIDs = AssetDatabase.FindAssets(mNameField.value, aAssetFolder);
        if (aAssetGUIDs.Length > 0)
        {
            foreach (string aAssetGUID in aAssetGUIDs)
            {
                string aPath = AssetDatabase.GUIDToAssetPath(aAssetGUID);
                if (AssetDatabase.GetMainAssetTypeAtPath(aPath) == aAssetType)
                {
                    GameScriptable aTempAsset = (GameScriptable)AssetDatabase.LoadAssetAtPath(aPath, aAssetType);
                    if (aTempAsset.mName == mNameField.value)
                    {
                        mSelectionField.value = aTempAsset;
                        return;
                    }
                }
            }
        }

        SaveCurrentActiveAsset();

        mActiveGameObjectAsset = (GameScriptable)ScriptableObject.CreateInstance(aAssetType);
        mActiveGameObjectAsset.Init();
        mActiveGameObjectAsset.mName = mNameField.value;
        AssetDatabase.CreateAsset(mActiveGameObjectAsset, aAssetFolder[0] + "/" + mNameField.value + ".asset");
        mSelectionField.value = mActiveGameObjectAsset;
    }
Пример #10
0
    void ClickGrid(MouseUpEvent pEvent)
    {
        if (pEvent.localMousePosition.x <= (mLevelMapScrollerSize.x - 15))
        {
            if (pEvent.localMousePosition.y >= 20 && pEvent.localMousePosition.y <= (mLevelMapScrollerSize.y + 5))
            {
                Vector2    postion = pEvent.localMousePosition + mLevelMapGUIScrollPos + new Vector2(0, -20);
                Vector2Int actP    = new Vector2Int((int)postion.x / mCellSize, (int)postion.y / mCellSize);
                if (actP.x >= mActiveLevel.mColumns || actP.y >= mActiveLevel.mRows)
                {
                    return;
                }

                if (mActiveBrushId == -1)
                {
                    return;
                }
                if (mActiveLayer == Level.LayerTypes.Players && mActiveBrushId <= 1)
                {
                    if (mActiveBrushId == 0)
                    {
                        SetResetStartPosition(actP);
                    }
                    else
                    {
                        SetResetEndPosition(actP);
                    }
                }
                else
                {
                    GameScriptable aObject = GetActiveBrushObject();
                    if (aObject != null)
                    {
                        if (IsScriptablePresent(actP, aObject))
                        {
                            RemoveScriptable(actP, aObject);
                        }
                        else
                        {
                            if (!IsLayerObjectPresent(actP, mActiveLayer))
                            {
                                AddScriptable(actP, aObject);
                            }
                        }
                    }
                }
                GauntletEditorMain.DoRepaint();
            }
        }
        else if (pEvent.localMousePosition.x > (mLevelMapScrollerSize.x + 15) && pEvent.localMousePosition.x < (mLevelMapScrollerSize.x + mPlaceableObjectsScrollerSize.x))
        {
            if (pEvent.localMousePosition.y >= 45 && pEvent.localMousePosition.y <= (mPlaceableObjectsScrollerSize.y + 5))
            {
                Vector2 postion = pEvent.localMousePosition + mPlaceableObjectsGUIScrollPos + new Vector2(0, -45);
                int     actP    = (int)postion.y / (mCellSize + 25);
                if (actP >= mActiveBrushesCount)
                {
                    return;
                }
                mActiveBrushId = actP;
                GauntletEditorMain.DoRepaint();
            }
        }
    }