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); }
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 = ""; } }
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; }
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); }
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); } } } }
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; }
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(); } } }