void ScriptEditorApplication::internal_SetStatusProject(bool modified)
	{
		MainEditorWindow* mainWindow = EditorWindowManager::instance().getMainWindow();

		if (gEditorApplication().isProjectLoaded())
			mainWindow->getStatusBar().setProject(gEditorApplication().getProjectName(), modified);
		else
			mainWindow->getStatusBar().setProject("None", false);
	}
	BuiltinEditorResources::BuiltinEditorResources()
	{
		// Set up paths
		BuiltinRawDataFolder = gEditorApplication().getDataPath() + "Raw/";
		EditorRawSkinFolder = BuiltinRawDataFolder + SkinFolder;
		EditorRawIconsFolder = BuiltinRawDataFolder + IconFolder;
		EditorRawShaderFolder = BuiltinRawDataFolder + ShaderFolder;
		EditorRawShaderIncludeFolder = BuiltinRawDataFolder + ShaderIncludeFolder;

		BuiltinDataFolder = gEditorApplication().getDataPath();
		EditorSkinFolder = BuiltinDataFolder + SkinFolder;
		EditorSkinSpritesFolder = EditorSkinFolder + SpriteSubFolder;
		EditorIconFolder = BuiltinDataFolder + IconFolder;
		EditorIcon3DFolder = BuiltinDataFolder + Icon3DFolder;
		EditorIconSpritesFolder = EditorIconFolder + SpriteSubFolder;
		EditorIcon3DSpritesFolder = EditorIcon3DFolder + SpriteSubFolder;
		EditorAnimatedSpritesFolder = BuiltinDataFolder + AnimatedSpritesFolder + SpriteSubFolder;
		EditorShaderFolder = BuiltinDataFolder + ShaderFolder;
		EditorShaderIncludeFolder = BuiltinDataFolder + ShaderIncludeFolder;

		ResourceManifestPath = BuiltinDataFolder + "ResourceManifest.asset";

		// Load manifest
		if (FileSystem::exists(ResourceManifestPath))
			mResourceManifest = ResourceManifest::load(ResourceManifestPath, BuiltinDataFolder);

		if (mResourceManifest == nullptr)
			mResourceManifest = ResourceManifest::create("BuiltinResources");

		gResources().registerResourceManifest(mResourceManifest);

		// Load basic resources
		mShaderDockOverlay = getShader(ShaderDockOverlayFile);
		mShaderSceneGrid = getShader(ShaderSceneGridFile);
		mShaderPicking[(int)CULL_NONE] = getShader(ShaderPickingCullNoneFile);
		mShaderPicking[(int)CULL_CLOCKWISE] = getShader(ShaderPickingCullCWFile);
		mShaderPicking[(int)CULL_COUNTERCLOCKWISE] = getShader(ShaderPickingCullCCWFile);
		mShaderPickingAlpha[(int)CULL_NONE] = getShader(ShaderPickingAlphaCullNoneFile);
		mShaderPickingAlpha[(int)CULL_CLOCKWISE] = getShader(ShaderPickingAlphaCullCWFile);
		mShaderPickingAlpha[(int)CULL_COUNTERCLOCKWISE] = getShader(ShaderPickingAlphaCullCCWFile);
		mShaderGizmoSolid = getShader(ShaderSolidGizmoFile);
		mShaderGizmoLine = getShader(ShaderLineGizmoFile);
		mShaderGizmoWire = getShader(ShaderWireGizmoFile);
		mShaderGizmoIcon = getShader(ShaderIconGizmoFile);
		mShaderGizmoPicking = getShader(ShaderGizmoPickingFile);
		mShaderGizmoAlphaPicking = getShader(ShaderGizmoPickingAlphaFile);
		mShaderGizmoText = getShader(ShaderTextGizmoFile);
		mShaderHandleSolid = getShader(ShaderSolidHandleFile);
		mShaderHandleClearAlpha = getShader(ShaderHandleClearAlphaFile);
		mShaderHandleLine = getShader(ShaderLineHandleFile);
		mShaderSelection = getShader(ShaderSelectionFile);

		mDefaultFont = gResources().load<Font>(BuiltinDataFolder + (DefaultFontFilename + ".asset"));
		mDefaultAAFont = gResources().load<Font>(BuiltinDataFolder + (DefaultAAFontFilename + ".asset"));
		mSkin = gResources().load<GUISkin>(BuiltinDataFolder + (GUISkinFile + ".json.asset"));
	}
	void ScriptEditorSettings::internal_SetBool(MonoString* name, bool value)
	{
		String nativeName = MonoUtil::monoToString(name);

		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		settings->setBool(nativeName, value);
	}
	bool ScriptEditorSettings::internal_GetBool(MonoString* name, bool defaultValue)
	{
		String nativeName = MonoUtil::monoToString(name);

		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		return settings->getBool(nativeName, defaultValue);
	}
	bool ScriptEditorSettings::internal_HasKey(MonoString* name)
	{
		String nativeName = MonoUtil::monoToString(name);

		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		return settings->hasKey(nativeName);
	}
	SPtr<PixelData> BuiltinEditorResources::getSplashScreen()
	{
		Path splashScreenPath = gEditorApplication().getDataPath() + (String(SplashScreenName) + ".asset");
		FileDecoder fd(splashScreenPath);

		return std::static_pointer_cast<PixelData>(fd.decode());
	}
	void ScriptEditorSettings::internal_DeleteKey(MonoString* name)
	{
		String nativeName = MonoUtil::monoToString(name);

		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		settings->deleteKey(nativeName);
	}
	void ScriptEditorSettings::internal_SetString(MonoString* name, MonoString* value)
	{
		String nativeName = MonoUtil::monoToString(name);
		WString nativeValue = MonoUtil::monoToWString(value);

		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		settings->setString(nativeName, nativeValue);
	}
Ejemplo n.º 9
0
	Path BuildManager::getBuildFolder(BuildFolder folder, PlatformType platform) const
	{
		// Use Data folder as an anchor to find where the root is
		Path sourceRoot = Paths::getRuntimeDataPath();

		UINT32 numDataDirs = Paths::RUNTIME_DATA_PATH.getNumDirectories();
		if (Paths::RUNTIME_DATA_PATH.isFile())
			numDataDirs++;

		for (UINT32 i = 0; i < numDataDirs; i++)
			sourceRoot.makeParent();

		switch (folder)
		{
		case BuildFolder::SourceRoot:
			return sourceRoot;
		case BuildFolder::DestinationRoot:
		{
			switch (platform)
			{
			case PlatformType::Windows:
				return gEditorApplication().getProjectPath() + BUILD_FOLDER_NAME + L"Windows";
			default:
				break;
			}

			return gEditorApplication().getProjectPath() + BUILD_FOLDER_NAME;
		}
		case BuildFolder::NativeBinaries:
		{
			Path binariesPath = Paths::getBinariesPath();

			return binariesPath.makeRelative(sourceRoot);
		}
		case BuildFolder::BansheeDebugAssemblies:
			return Paths::DEBUG_ASSEMBLY_PATH;
		case BuildFolder::BansheeReleaseAssemblies:
			return Paths::RELEASE_ASSEMBLY_PATH;
		case BuildFolder::Data:
			return Paths::ENGINE_DATA_PATH;
		}

		return Path::BLANK;
	}
	MonoString* ScriptEditorSettings::internal_GetString(MonoString* name, MonoString* defaultValue)
	{
		String nativeName = MonoUtil::monoToString(name);
		WString nativeDefaultValue = MonoUtil::monoToWString(defaultValue);

		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		WString nativeValue = settings->getString(nativeName, nativeDefaultValue);

		return MonoUtil::wstringToMono(nativeValue);
	}
Ejemplo n.º 11
0
	void EditorScriptManager::loadMonoTypes()
	{
		WString editorAssemblyPath = gEditorApplication().getEditorAssemblyPath().toWString();
		mEditorAssembly = &MonoManager::instance().loadAssembly(editorAssemblyPath, EDITOR_ASSEMBLY);

		mProgramEdClass = mEditorAssembly->getClass("BansheeEditor", "Program");
		mUpdateMethod = mProgramEdClass->getMethod("OnEditorUpdate");

		ScriptEditorWindow::clearRegisteredEditorWindow();
		ScriptEditorWindow::registerManagedEditorWindows();
	}
	void ScriptEditorSettings::internal_SetRecentProjects(MonoArray* paths, MonoArray* timeStamps)
	{
		ScriptArray pathsArray(paths);
		ScriptArray timeStampsArray(timeStamps);
		UINT32 numEntries = pathsArray.size();

		Vector<RecentProject> recentProjects(numEntries);
		for (UINT32 i = 0; i < numEntries; i++)
		{
			recentProjects[i].path = pathsArray.get<WString>(i);
			recentProjects[i].accessTimestamp = timeStampsArray.get<UINT64>(i);
		}

		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		settings->setRecentProjects(recentProjects);
	}
	void ScriptEditorApplication::update()
	{
		// Project load must be delayed when requested from managed code because it
		// triggers managed assembly reload, and that can't be performed when called
		// from the Mono thread.
		if (mRequestProjectLoad)
		{
			gEditorApplication().loadProject(mProjectLoadPath);

			mRequestProjectLoad = false;
			mRequestAssemblyReload = false;
			MonoUtil::invokeThunk(onProjectLoadedThunk);
		}
		else if (mRequestAssemblyReload)
		{
			ScriptManager::instance().reload();
			mRequestAssemblyReload = false;
		}
	}
	void ScriptEditorSettings::internal_GetRecentProjects(MonoArray** paths, MonoArray** timeStamps)
	{
		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		const Vector<RecentProject>& recentProjects = settings->getRecentProjects();
		UINT32 numEntries = (UINT32)recentProjects.size();

		ScriptArray outputPaths = ScriptArray::create<WString>(numEntries);
		ScriptArray outputTimeStamps = ScriptArray::create<UINT64>(numEntries);

		for (UINT32 i = 0; i < numEntries; i++)
		{
			WString projectPath = recentProjects[i].path.toWString();
			MonoString* monoPath = MonoUtil::wstringToMono(projectPath);

			outputPaths.set(i, monoPath);
			outputTimeStamps.set(i, recentProjects[i].accessTimestamp);
		}

		*paths = outputPaths.getInternal();
		*timeStamps = outputPaths.getInternal();
	}
	void ScriptEditorSettings::internal_SetRotateHandleSnapActive(bool value)
	{
		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		settings->setRotateHandleSnapActive(value);
	}
	bool ScriptEditorSettings::internal_GetRotateHandleSnapActive()
	{
		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		return settings->getRotateHandleSnapActive();
	}
	void ScriptEditorSettings::internal_Save()
	{
		gEditorApplication().saveEditorSettings();
	}
	UINT32 ScriptEditorSettings::internal_GetHash()
	{
		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		return settings->getHash();
	}
	void ScriptEditorSettings::internal_DeleteAllKeys()
	{
		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		settings->deleteAllKeys();
	}
	void ScriptEditorSettings::internal_SetActivePivotMode(UINT32 value)
	{
		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		settings->setActivePivotMode(value);
	}
	void ScriptEditorSettings::internal_SetAutoLoadLastProject(bool value)
	{
		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		settings->setAutoLoadLastProject(value);
	}
	float ScriptEditorSettings::internal_GetRotateHandleSnapAmount()
	{
		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		return settings->getRotationHandleSnap().valueDegrees();
	}
	float ScriptEditorSettings::internal_GetMouseSensitivity()
	{
		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		return settings->getMouseSensitivity();
	}
	void ScriptEditorSettings::internal_SetMouseSensitivity(float value)
	{
		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		settings->setMouseSensitivity(value);
	}
	float ScriptEditorSettings::internal_GetMoveHandleSnapAmount()
	{
		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		return settings->getMoveHandleSnap();
	}
	void ScriptEditorSettings::internal_SetLastOpenProject(MonoString* value)
	{
		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		settings->setLastOpenProject(MonoUtil::monoToWString(value));
	}
	void ScriptEditorSettings::internal_SetMoveHandleSnapAmount(float value)
	{
		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		settings->setMoveHandleSnap(value);
	}
	bool ScriptEditorSettings::internal_GetAutoLoadLastProject()
	{
		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		return settings->getAutoLoadLastProject();
	}
	void ScriptEditorSettings::internal_SetFPSLimit(UINT32 value)
	{
		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		settings->setFPSLimit(value);
	}
	MonoString* ScriptEditorSettings::internal_GetLastOpenProject()
	{
		SPtr<EditorSettings> settings = gEditorApplication().getEditorSettings();
		return MonoUtil::wstringToMono(settings->getLastOpenProject().toWString());
	}