2
0
Эх сурвалжийг харах

Added icon resources to be used in editor toolbar, scene and library windows

BearishSun 10 жил өмнө
parent
commit
64bb37bc32

+ 41 - 1
BansheeEditor/Include/BsBuiltinEditorResources.h

@@ -8,13 +8,38 @@
 namespace BansheeEngine
 namespace BansheeEngine
 {
 {
 	/**
 	/**
-	 * @brief	Types of valid icons used when viewing the project library
+	 * @brief	Types of valid icons used when viewing the project library.
 	 */
 	 */
 	enum class ProjectIcon
 	enum class ProjectIcon
 	{
 	{
 		Folder, Mesh, Font, Texture, PlainText, ScriptCode, SpriteTexture, Shader, ShaderInclude, Material, Prefab
 		Folder, Mesh, Font, Texture, PlainText, ScriptCode, SpriteTexture, Shader, ShaderInclude, Material, Prefab
 	};
 	};
 
 
+	/**
+	 * @brief	Types of icons that may be displayed on the tool bar.
+	 */
+	enum class ToolbarIcon
+	{
+		NewCamera, NewRenderable, NewPointLight, NewDirLight, NewSpotLight, NewCube, NewSphere, NewCone, NewQuad,
+		NewMat, NewCSScript, NewShader, NewSpriteTex, Pause, Play, Step, Undo, Redo, OpenProject, SaveProject, SaveScene
+	};
+
+	/**
+	 * @brief	Types of icons that may be displayed in the scene window.
+	 */
+	enum class SceneWindowIcon
+	{
+		View, Move, Rotate, Scale, Pivot, Center, Local, World, MoveSnap, RotateSnap
+	};
+
+	/**
+	* @brief	Types of icons that may be displayed in the library window.
+	*/
+	enum class LibraryWindowIcon
+	{
+		Home, Up, Clear, Options
+	};
+
 	/**
 	/**
 	 * @brief	Types of icons used in various areas throughout the editor.
 	 * @brief	Types of icons used in various areas throughout the editor.
 	 */
 	 */
@@ -111,6 +136,21 @@ namespace BansheeEngine
 		 */
 		 */
 		HSpriteTexture getLibraryIcon(ProjectIcon icon) const;
 		HSpriteTexture getLibraryIcon(ProjectIcon icon) const;
 
 
+		/**
+		 * @brief	Retrieves an icon that may be displayed on the main window's toolbar.
+		 */
+		HSpriteTexture getToolbarIcon(ToolbarIcon icon) const;
+
+		/**
+		 * @brief	Retrieves an icon that may be displayed on the scene window.
+		 */
+		HSpriteTexture getSceneWindowIcon(SceneWindowIcon icon) const;
+
+		/**
+		 * @brief	Retrieves an icon that may be displayed on the library window.
+		 */
+		HSpriteTexture getLibraryWindowIcon(LibraryWindowIcon icon) const;
+
 		/**
 		/**
 		 * @brief	Retrieves an icon that represents a specific generic editor icon.
 		 * @brief	Retrieves an icon that represents a specific generic editor icon.
 		 */
 		 */

+ 97 - 0
BansheeEditor/Source/BsBuiltinEditorResources.cpp

@@ -1854,6 +1854,103 @@ namespace BansheeEngine
 		return HSpriteTexture();
 		return HSpriteTexture();
 	}
 	}
 
 
+	HSpriteTexture BuiltinEditorResources::getToolbarIcon(ToolbarIcon icon) const
+	{
+		switch (icon)
+		{
+		case ToolbarIcon::NewCamera:
+			return getGUIIcon(L"ToolbarNewCameraIcon.png");
+		case ToolbarIcon::NewRenderable:
+			return getGUIIcon(L"ToolbarNewRenderableIcon.png");
+		case ToolbarIcon::NewPointLight:
+			return getGUIIcon(L"ToolbarNewPointLightIcon.png");
+		case ToolbarIcon::NewDirLight:
+			return getGUIIcon(L"ToolbarNewDirectionalLightIcon.png");
+		case ToolbarIcon::NewSpotLight:
+			return getGUIIcon(L"ToolbarNewSpotLightIcon.png");
+		case ToolbarIcon::NewCube:
+			return getGUIIcon(L"ToolbarNewCubeIcon.png");
+		case ToolbarIcon::NewSphere:
+			return getGUIIcon(L"ToolbarNewSphereIcon.png");
+		case ToolbarIcon::NewCone:
+			return getGUIIcon(L"ToolbarNewConeIcon.png");
+		case ToolbarIcon::NewQuad:
+			return getGUIIcon(L"ToolbarNewQuadIcon.png");
+		case ToolbarIcon::NewMat:
+			return getGUIIcon(L"ToolbarNewMaterialIcon.png");
+		case ToolbarIcon::NewCSScript:
+			return getGUIIcon(L"ToolbarNewCSScriptIcon.png");
+		case ToolbarIcon::NewShader:
+			return getGUIIcon(L"ToolbarNewShaderIcon.png");
+		case ToolbarIcon::NewSpriteTex:
+			return getGUIIcon(L"ToolbarNewSpriteTextureIcon.png");
+		case ToolbarIcon::Pause:
+			return getGUIIcon(L"ToolbarPauseIcon.png");
+		case ToolbarIcon::Play:
+			return getGUIIcon(L"ToolbarPlayIcon.png");
+		case ToolbarIcon::Step:
+			return getGUIIcon(L"ToolbarStepIcon.png");
+		case ToolbarIcon::Undo:
+			return getGUIIcon(L"ToolbarUndoIcon.png");
+		case ToolbarIcon::Redo:
+			return getGUIIcon(L"ToolbarRedoIcon.png");
+		case ToolbarIcon::OpenProject:
+			return getGUIIcon(L"ToolbarOpenProjectIcon.png");
+		case ToolbarIcon::SaveProject:
+			return getGUIIcon(L"ToolbarSaveProjectIcon.png");
+		case ToolbarIcon::SaveScene:
+			return getGUIIcon(L"ToolbarSaveSceneIcon.png");
+		}
+
+		return HSpriteTexture();
+	}
+
+	HSpriteTexture BuiltinEditorResources::getSceneWindowIcon(SceneWindowIcon icon) const
+	{
+		switch (icon)
+		{
+		case SceneWindowIcon::View:
+			return getGUIIcon(L"SceneViewIcon.png");
+		case SceneWindowIcon::Move:
+			return getGUIIcon(L"SceneMoveIcon.png");
+		case SceneWindowIcon::Rotate:
+			return getGUIIcon(L"SceneRotateIcon.png");
+		case SceneWindowIcon::Scale:
+			return getGUIIcon(L"SceneScaleIcon.png");
+		case SceneWindowIcon::Pivot:
+			return getGUIIcon(L"ScenePivotIcon.png");
+		case SceneWindowIcon::Center:
+			return getGUIIcon(L"SceneCenterIcon.png");
+		case SceneWindowIcon::Local:
+			return getGUIIcon(L"SceneLocalIcon.png");
+		case SceneWindowIcon::World:
+			return getGUIIcon(L"SceneWorldIcon.png");
+		case SceneWindowIcon::MoveSnap:
+			return getGUIIcon(L"SceneMoveSnapIcon.png");
+		case SceneWindowIcon::RotateSnap:
+			return getGUIIcon(L"SceneRotateSnapIcon.png");
+		}
+
+		return HSpriteTexture();
+	}
+
+	HSpriteTexture BuiltinEditorResources::getLibraryWindowIcon(LibraryWindowIcon icon) const
+	{
+		switch (icon)
+		{
+		case LibraryWindowIcon::Home:
+			return getGUIIcon(L"LibraryHomeIcon.png");
+		case LibraryWindowIcon::Up:
+			return getGUIIcon(L"LibraryUpIcon.png");
+		case LibraryWindowIcon::Clear:
+			return getGUIIcon(L"LibraryClearSearchIcon.png");
+		case LibraryWindowIcon::Options:
+			return getGUIIcon(L"LibraryOptionsIcon.png");
+		}
+
+		return HSpriteTexture();
+	}
+
 	HSpriteTexture BuiltinEditorResources::getIcon(EditorIcon icon) const
 	HSpriteTexture BuiltinEditorResources::getIcon(EditorIcon icon) const
 	{
 	{
 		switch (icon)
 		switch (icon)

+ 64 - 0
MBansheeEditor/EditorBuiltin.cs

@@ -3,6 +3,31 @@ using BansheeEngine;
 
 
 namespace BansheeEditor
 namespace BansheeEditor
 {
 {
+    /// <summary>
+    /// Types of icons that may be displayed on the tool bar.
+    /// </summary>
+    public enum ToolbarIcon // Note: Must match C++ enum ToolbarIcon
+	{
+		NewCamera, NewRenderable, NewPointLight, NewDirLight, NewSpotLight, NewCube, NewSphere, NewCone, NewQuad,
+		NewMat, NewCSScript, NewShader, NewSpriteTex, Pause, Play, Step, Undo, Redo, OpenProject, SaveProject, SaveScene
+	};
+
+    /// <summary>
+    /// Types of icons that may be displayed in the scene window.
+    /// </summary>
+    public enum SceneWindowIcon // Note: Must match C++ enum SceneWindowIcon
+	{
+		View, Move, Rotate, Scale, Pivot, Center, Local, World, MoveSnap, RotateSnap
+	};
+
+    /// <summary>
+    /// Types of icons that may be displayed in the library window.
+    /// </summary>
+    public enum LibraryWindowIcon // Note: Must match C++ enum LibraryWindowIcon
+	{
+		Home, Up, Clear, Options
+	};
+
     /// <summary>
     /// <summary>
     /// Contains various editor-specific resources that are always available.
     /// Contains various editor-specific resources that are always available.
     /// </summary>
     /// </summary>
@@ -49,6 +74,36 @@ namespace BansheeEditor
         /// <summary>Returns text contained in the default "empty" C# script.</summary>
         /// <summary>Returns text contained in the default "empty" C# script.</summary>
         public static string EmptyCSScriptCode { get { return Internal_GetEmptyCSScriptCode(); } }
         public static string EmptyCSScriptCode { get { return Internal_GetEmptyCSScriptCode(); } }
 
 
+        /// <summary>
+        /// Retrieves an icon that may be displayed on the main window's toolbar.
+        /// </summary>
+        /// <param name="icon">Type of icon to retrieve.</param>
+        /// <returns>Sprite texture of the icon.</returns>
+        public static SpriteTexture GetToolbarIcon(ToolbarIcon icon)
+        {
+            return Internal_GetToolbarIcon(icon);
+        }
+
+        /// <summary>
+        /// Retrieves an icon that may be displayed on the library window.
+        /// </summary>
+        /// <param name="icon">Type of icon to retrieve.</param>
+        /// <returns>Sprite texture of the icon.</returns>
+        public static SpriteTexture GetLibraryWindowIcon(LibraryWindowIcon icon)
+        {
+            return Internal_LibraryWindowIcon(icon);
+        }
+
+        /// <summary>
+        /// Retrieves an icon that may be displayed on the scene window.
+        /// </summary>
+        /// <param name="icon">Type of icon to retrieve.</param>
+        /// <returns>Sprite texture of the icon.</returns>
+        public static SpriteTexture GetSceneWindowIcon(SceneWindowIcon icon)
+        {
+            return Internal_GetSceneWindowIcon(icon);
+        }
+
         [MethodImpl(MethodImplOptions.InternalCall)]
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern SpriteTexture Internal_GetFolderIcon();
         private static extern SpriteTexture Internal_GetFolderIcon();
 
 
@@ -90,5 +145,14 @@ namespace BansheeEditor
 
 
         [MethodImpl(MethodImplOptions.InternalCall)]
         [MethodImpl(MethodImplOptions.InternalCall)]
         private static extern string Internal_GetEmptyCSScriptCode();
         private static extern string Internal_GetEmptyCSScriptCode();
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern SpriteTexture Internal_GetToolbarIcon(ToolbarIcon icon);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern SpriteTexture Internal_LibraryWindowIcon(LibraryWindowIcon icon);
+
+        [MethodImpl(MethodImplOptions.InternalCall)]
+        private static extern SpriteTexture Internal_GetSceneWindowIcon(SceneWindowIcon icon);
     }
     }
 }
 }

+ 5 - 0
SBansheeEditor/Include/BsScriptEditorBuiltin.h

@@ -2,6 +2,7 @@
 
 
 #include "BsScriptEditorPrerequisites.h"
 #include "BsScriptEditorPrerequisites.h"
 #include "BsScriptObject.h"
 #include "BsScriptObject.h"
+#include "BsBuiltinEditorResources.h"
 
 
 namespace BansheeEngine
 namespace BansheeEngine
 {
 {
@@ -34,5 +35,9 @@ namespace BansheeEngine
 
 
 		static MonoString* internal_GetEmptyShaderCode();
 		static MonoString* internal_GetEmptyShaderCode();
 		static MonoString* internal_GetEmptyCSScriptCode();
 		static MonoString* internal_GetEmptyCSScriptCode();
+
+		static MonoObject* internal_GetToolbarIcon(ToolbarIcon icon);
+		static MonoObject* internal_LibraryWindowIcon(LibraryWindowIcon icon);
+		static MonoObject* internal_GetSceneWindowIcon(SceneWindowIcon icon);
 	};
 	};
 }
 }

+ 24 - 1
SBansheeEditor/Source/BsScriptEditorBuiltin.cpp

@@ -3,7 +3,6 @@
 #include "BsMonoClass.h"
 #include "BsMonoClass.h"
 #include "BsMonoMethod.h"
 #include "BsMonoMethod.h"
 #include "BsMonoUtil.h"
 #include "BsMonoUtil.h"
-#include "BsBuiltinEditorResources.h"
 #include "BsScriptSpriteTexture.h"
 #include "BsScriptSpriteTexture.h"
 #include "BsScriptResourceManager.h"
 #include "BsScriptResourceManager.h"
 
 
@@ -29,6 +28,9 @@ namespace BansheeEngine
 		metaData.scriptClass->addInternalCall("Internal_GetXBtnIcon", &ScriptEditorBuiltin::internal_getXBtnIcon);
 		metaData.scriptClass->addInternalCall("Internal_GetXBtnIcon", &ScriptEditorBuiltin::internal_getXBtnIcon);
 		metaData.scriptClass->addInternalCall("Internal_GetEmptyShaderCode", &ScriptEditorBuiltin::internal_GetEmptyShaderCode);
 		metaData.scriptClass->addInternalCall("Internal_GetEmptyShaderCode", &ScriptEditorBuiltin::internal_GetEmptyShaderCode);
 		metaData.scriptClass->addInternalCall("Internal_GetEmptyCSScriptCode", &ScriptEditorBuiltin::internal_GetEmptyCSScriptCode);
 		metaData.scriptClass->addInternalCall("Internal_GetEmptyCSScriptCode", &ScriptEditorBuiltin::internal_GetEmptyCSScriptCode);
+		metaData.scriptClass->addInternalCall("Internal_GetToolbarIcon", &ScriptEditorBuiltin::internal_GetToolbarIcon);
+		metaData.scriptClass->addInternalCall("Internal_LibraryWindowIcon", &ScriptEditorBuiltin::internal_LibraryWindowIcon);
+		metaData.scriptClass->addInternalCall("Internal_GetSceneWindowIcon", &ScriptEditorBuiltin::internal_GetSceneWindowIcon);
 	}
 	}
 
 
 	MonoObject* ScriptEditorBuiltin::internal_getFolderIcon()
 	MonoObject* ScriptEditorBuiltin::internal_getFolderIcon()
@@ -128,4 +130,25 @@ namespace BansheeEngine
 
 
 		return MonoUtil::wstringToMono(MonoManager::instance().getDomain(), code);
 		return MonoUtil::wstringToMono(MonoManager::instance().getDomain(), code);
 	}
 	}
+
+	MonoObject* ScriptEditorBuiltin::internal_GetToolbarIcon(ToolbarIcon icon)
+	{
+		HSpriteTexture tex = BuiltinEditorResources::instance().getToolbarIcon(icon);
+
+		return ScriptSpriteTexture::toManaged(tex);
+	}
+
+	MonoObject* ScriptEditorBuiltin::internal_LibraryWindowIcon(LibraryWindowIcon icon)
+	{
+		HSpriteTexture tex = BuiltinEditorResources::instance().getLibraryWindowIcon(icon);
+
+		return ScriptSpriteTexture::toManaged(tex);
+	}
+
+	MonoObject* ScriptEditorBuiltin::internal_GetSceneWindowIcon(SceneWindowIcon icon)
+	{
+		HSpriteTexture tex = BuiltinEditorResources::instance().getSceneWindowIcon(icon);
+
+		return ScriptSpriteTexture::toManaged(tex);
+	}
 }
 }

+ 1 - 1
TODO.txt

@@ -60,7 +60,7 @@ Ribek use:
  - Resource inspectors for: Material, Texture, Mesh, Font, Shader, Script Code, Plain Text, Sprite Texture, GUISkin, StringTable, Prefab (just something basic for now)
  - Resource inspectors for: Material, Texture, Mesh, Font, Shader, Script Code, Plain Text, Sprite Texture, GUISkin, StringTable, Prefab (just something basic for now)
  - Test release mode
  - Test release mode
  - Add temporary icon textures too all icon buttons currently containing only text so that Ribek can modify them
  - Add temporary icon textures too all icon buttons currently containing only text so that Ribek can modify them
-  - Also add dummy icons to toolbar (New Project, Open Project, Save Scene, Undo, Redo, Basic shapes, Camera, Renderable, Lights)
+  - Also add dummy icons to toolbar (Open Project, Save Scene, Undo, Redo, Basic shapes, Camera, Renderable, Lights, Play, Pause, Step)
 
 
 Other polish:
 Other polish:
  - C# interface for Font and SpriteTexture
  - C# interface for Font and SpriteTexture