GUIContentImages BuiltinEditorResources::getEditorToggleIcon(EditorToggleIcon icon) const
	{
		HSpriteTexture off;
		HSpriteTexture on;

		switch (icon)
		{
		case EditorToggleIcon::AnimateProperty:
			off = getGUIIcon("AnimPropertyIcon.png");
			on = getGUIIcon("AnimPropertyIconOn.png");
			break;
		}

		GUIContentImages output;
		output.normal = off;
		output.hover = off;
		output.active = on;
		output.focused = off;
		output.normalOn = on;
		output.hoverOn = on;
		output.activeOn = on;
		output.focusedOn = on;

		return output;
	}
	HSpriteTexture BuiltinEditorResources::getIcon(EditorIcon icon) const
	{
		switch (icon)
		{
		case EditorIcon::X:
			return getGUIIcon(XButtonNormalTex);
		case EditorIcon::Component:
			return getGUIIcon("IconComponent.png");
		case EditorIcon::SceneObject:
			return getGUIIcon("IconSceneObject.png");
		}

		return HSpriteTexture();
	}
	HSpriteTexture BuiltinEditorResources::getLibraryWindowIcon(LibraryWindowIcon icon) const
	{
		switch (icon)
		{
		case LibraryWindowIcon::Home:
			return getGUIIcon("LibraryHomeIcon.png");
		case LibraryWindowIcon::Up:
			return getGUIIcon("LibraryUpIcon.png");
		case LibraryWindowIcon::Clear:
			return getGUIIcon("LibraryClearSearchIcon.png");
		case LibraryWindowIcon::Options:
			return getGUIIcon("LibraryOptionsIcon.png");
		}

		return HSpriteTexture();
	}
	HSpriteTexture BuiltinEditorResources::getLogMessageIcon(LogMessageIcon icon, UINT32 size, bool dark) const
	{
		if (size < 24) // Round to 16
		{
			if (dark)
			{
				switch (icon)
				{
				case LogMessageIcon::Info:
					return getGUIIcon("IconInfoDark.png");
				case LogMessageIcon::Warning:
					return getGUIIcon("IconWarningDark.png");
				case LogMessageIcon::Error:
					return getGUIIcon("IconErrorDark.png");
				}
			}
			else
			{
				switch (icon)
				{
				case LogMessageIcon::Info:
					return getGUIIcon("IconInfo.png");
				case LogMessageIcon::Warning:
					return getGUIIcon("IconWarning.png");
				case LogMessageIcon::Error:
					return getGUIIcon("IconError.png");
				}
			}
		}
		else // Round to 32
		{
			switch (icon)
			{
			case LogMessageIcon::Info:
				return getGUIIcon("IconInfo32.png");
			case LogMessageIcon::Warning:
				return getGUIIcon("IconWarning32.png");
			case LogMessageIcon::Error:
				return getGUIIcon("IconError32.png");
			}
		}

		return HSpriteTexture();
	}
	GUIContentImages BuiltinEditorResources::getAnimationWindowIcon(AnimationWindowIcon icon) const
	{
		HSpriteTexture off;
		HSpriteTexture on;

		switch (icon)
		{
		case AnimationWindowIcon::Play:
			off = getGUIIcon("AnimationPlayIcon.png");
			on = getGUIIcon("AnimationPlayIconOn.png");
			break;
		case AnimationWindowIcon::Record:
			off = getGUIIcon("AnimationRecordIcon.png");
			on = getGUIIcon("AnimationRecordIconOn.png");
			break;
		case AnimationWindowIcon::FrameForward:
			off = getGUIIcon("AnimationFrameForwardIcon.png");
			on = getGUIIcon("AnimationFrameForwardIconOn.png");
			break;
		case AnimationWindowIcon::FrameBack:
			off = getGUIIcon("AnimationFrameBackIcon.png");
			on = getGUIIcon("AnimationFrameBackIconOn.png");
			break;
		case AnimationWindowIcon::AddEvent:
			off = getGUIIcon("AnimationAddEventIcon.png");
			on = getGUIIcon("AnimationAddEventIconOn.png");
			break;
		case AnimationWindowIcon::AddKeyframe:
			off = getGUIIcon("AnimationAddKeyframeIcon.png");
			on = getGUIIcon("AnimationAddKeyframeIconOn.png");
			break;
		case AnimationWindowIcon::Event:
			off = getGUIIcon("AnimationEventIcon.png");
			on = off;
			break;
		case AnimationWindowIcon::Keyframe:
			off = getGUIIcon("AnimationKeyframeIcon.png");
			on = off;
			break;
		}

		GUIContentImages output;
		output.normal = off;
		output.hover = off;
		output.active = on;
		output.focused = off;
		output.normalOn = on;
		output.hoverOn = on;
		output.activeOn = on;
		output.focusedOn = on;

		return output;
	}
	HSpriteTexture BuiltinEditorResources::getInspectorWindowIcon(InspectorWindowIcon icon) const
	{
		switch (icon)
		{
		case InspectorWindowIcon::Create:
			return getGUIIcon("InspectorCreateIcon.png");
		case InspectorWindowIcon::Clone:
			return getGUIIcon("InspectorCloneIcon.png");
		case InspectorWindowIcon::Clear:
			return getGUIIcon("InspectorClearIcon.png");
		case InspectorWindowIcon::Resize:
			return getGUIIcon("InspectorResizeIcon.png");
		case InspectorWindowIcon::Delete:
			return getGUIIcon("InspectorDeleteIcon.png");
		case InspectorWindowIcon::MoveUp:
			return getGUIIcon("InspectorMoveUpIcon.png");
		case InspectorWindowIcon::MoveDown:
			return getGUIIcon("InspectorMoveDownIcon.png");
		case InspectorWindowIcon::Edit:
			return getGUIIcon("InspectorEditIcon.png");
		case InspectorWindowIcon::Apply:
			return getGUIIcon("InspectorApplyIcon.png");
		case InspectorWindowIcon::Add:
			return getGUIIcon("InspectorAddIcon.png");
		case InspectorWindowIcon::Cancel:
			return getGUIIcon("InspectorCancelIcon.png");
		}

		return HSpriteTexture();
	}
	GUIContentImages BuiltinEditorResources::getSceneWindowIcon(SceneWindowIcon icon) const
	{
		HSpriteTexture off;
		HSpriteTexture on;

		switch (icon)
		{
		case SceneWindowIcon::View:
			off = getGUIIcon("SceneViewIcon.png");
			on = getGUIIcon("SceneViewIconOn.png");
			break;
		case SceneWindowIcon::Move:
			off = getGUIIcon("SceneMoveIcon.png");
			on = getGUIIcon("SceneMoveIconOn.png");
			break;
		case SceneWindowIcon::Rotate:
			off = getGUIIcon("SceneRotateIcon.png");
			on = getGUIIcon("SceneRotateIconOn.png");
			break;
		case SceneWindowIcon::Scale:
			off = getGUIIcon("SceneScaleIcon.png");
			on = getGUIIcon("SceneScaleIconOn.png");
			break;
		case SceneWindowIcon::Pivot:
			off = getGUIIcon("ScenePivotIcon.png");
			on = getGUIIcon("ScenePivotIconOn.png");
			break;
		case SceneWindowIcon::Center:
			off = getGUIIcon("SceneCenterIcon.png");
			on = getGUIIcon("SceneCenterIconOn.png");
			break;
		case SceneWindowIcon::Local:
			off = getGUIIcon("SceneLocalIcon.png");
			on = getGUIIcon("SceneLocalIconOn.png");
			break;
		case SceneWindowIcon::World:
			off = getGUIIcon("SceneWorldIcon.png");
			on = getGUIIcon("SceneWorldIconOn.png");
			break;
		case SceneWindowIcon::MoveSnap:
			off = getGUIIcon("SceneMoveSnapIcon.png");
			on = getGUIIcon("SceneMoveSnapIconOn.png");
			break;
		case SceneWindowIcon::RotateSnap:
			off = getGUIIcon("SceneRotateSnapIcon.png");
			on = getGUIIcon("SceneRotateSnapIconOn.png");
			break;
		}

		GUIContentImages output;
		output.normal = off;
		output.hover = off;
		output.active = on;
		output.focused = off;
		output.normalOn = on;
		output.hoverOn = on;
		output.activeOn = on;
		output.focusedOn = on;

		return output;
	}
	HSpriteTexture BuiltinEditorResources::getToolbarIcon(ToolbarIcon icon) const
	{
		switch (icon)
		{
		case ToolbarIcon::NewCamera:
			return getGUIIcon("ToolbarNewCameraIcon.png");
		case ToolbarIcon::NewRenderable:
			return getGUIIcon("ToolbarNewRenderableIcon.png");
		case ToolbarIcon::NewPointLight:
			return getGUIIcon("ToolbarNewPointLightIcon.png");
		case ToolbarIcon::NewDirLight:
			return getGUIIcon("ToolbarNewDirectionalLightIcon.png");
		case ToolbarIcon::NewSpotLight:
			return getGUIIcon("ToolbarNewSpotLightIcon.png");
		case ToolbarIcon::NewSceneObject:
			return getGUIIcon("ToolbarNewSceneObjectIcon.png");
		case ToolbarIcon::NewCube:
			return getGUIIcon("ToolbarNewCubeIcon.png");
		case ToolbarIcon::NewSphere:
			return getGUIIcon("ToolbarNewSphereIcon.png");
		case ToolbarIcon::NewCone:
			return getGUIIcon("ToolbarNewConeIcon.png");
		case ToolbarIcon::NewQuad:
			return getGUIIcon("ToolbarNewQuadIcon.png");
		case ToolbarIcon::NewMat:
			return getGUIIcon("ToolbarNewMaterialIcon.png");
		case ToolbarIcon::NewCSScript:
			return getGUIIcon("ToolbarNewCSScriptIcon.png");
		case ToolbarIcon::NewShader:
			return getGUIIcon("ToolbarNewShaderIcon.png");
		case ToolbarIcon::NewSpriteTex:
			return getGUIIcon("ToolbarNewSpriteTextureIcon.png");
		case ToolbarIcon::Pause:
			return getGUIIcon("ToolbarPauseIcon.png");
		case ToolbarIcon::Play:
			return getGUIIcon("ToolbarPlayIcon.png");
		case ToolbarIcon::Step:
			return getGUIIcon("ToolbarStepIcon.png");
		case ToolbarIcon::Undo:
			return getGUIIcon("ToolbarUndoIcon.png");
		case ToolbarIcon::Redo:
			return getGUIIcon("ToolbarRedoIcon.png");
		case ToolbarIcon::OpenProject:
			return getGUIIcon("ToolbarOpenProjectIcon.png");
		case ToolbarIcon::SaveProject:
			return getGUIIcon("ToolbarSaveProjectIcon.png");
		case ToolbarIcon::SaveScene:
			return getGUIIcon("ToolbarSaveSceneIcon.png");
		}

		return HSpriteTexture();
	}
	HSpriteTexture BuiltinEditorResources::getLibraryIcon(ProjectIcon icon, int size) const
	{
		String iconName;

		switch (icon)
		{
		case ProjectIcon::Folder:
			iconName = FolderIconTex;
			break;
		case ProjectIcon::Font:
			iconName = FontIconTex;
			break;
		case ProjectIcon::Mesh:
			iconName = MeshIconTex;
			break;
		case ProjectIcon::Texture:
			iconName = TextureIconTex;
			break;
		case ProjectIcon::PlainText:
			iconName = PlainTextIconTex;
			break;
		case ProjectIcon::ScriptCode:
			iconName = ScriptCodeIconTex;
			break;
		case ProjectIcon::Shader:
			iconName = ShaderIconTex;
			break;
		case ProjectIcon::ShaderInclude:
			iconName = ShaderIncludeIconTex;
			break;
		case ProjectIcon::Material:
			iconName = MaterialIconTex;
			break;
		case ProjectIcon::SpriteTexture:
			iconName = SpriteTextureIconTex;
			break;
		case ProjectIcon::Prefab:
			iconName = PrefabIconTex;
			break;
		case ProjectIcon::GUISkin:
			iconName = GUISkinIconTex;
			break;
		case ProjectIcon::PhysicsMaterial:
			iconName = PhysicsMaterialIconTex;
			break;
		case ProjectIcon::PhysicsMesh:
			iconName = PhysicsMeshIconTex;
			break;
		case ProjectIcon::AudioClip:
			iconName = AudioClipIconTex;
			break;
		case ProjectIcon::AnimationClip:
			iconName = AnimationClipIconTex;
			break;
		}

		if (iconName.empty())
			return HSpriteTexture();

		if (size <= 16)
			iconName += "16";
		else if (size <= 32)
			iconName += "32";
		else if (size <= 48)
			iconName += "48";

		return getGUIIcon(iconName);
	}