From 95e886f25d5c8f5cee3a34cd449b70d4796bc716 Mon Sep 17 00:00:00 2001 From: Pavel Kovalenko Date: Wed, 22 Oct 2014 15:59:50 +0400 Subject: [PATCH] Add xrManagedApi library project and initial xrCore API. --- src/editors/xrManagedApi/AssemblyInfo.cpp | 38 +++++++ src/editors/xrManagedApi/Pch.cpp | 1 + src/editors/xrManagedApi/Pch.hpp | 1 + src/editors/xrManagedApi/wrappers/Core.cpp | 55 +++++++++ src/editors/xrManagedApi/wrappers/Core.hpp | 25 +++++ src/editors/xrManagedApi/xrManagedApi.vcxproj | 105 ++++++++++++++++++ .../xrManagedApi/xrManagedApi.vcxproj.filters | 21 ++++ src/engine.sln | 33 ++++++ 8 files changed, 279 insertions(+) create mode 100644 src/editors/xrManagedApi/AssemblyInfo.cpp create mode 100644 src/editors/xrManagedApi/Pch.cpp create mode 100644 src/editors/xrManagedApi/Pch.hpp create mode 100644 src/editors/xrManagedApi/wrappers/Core.cpp create mode 100644 src/editors/xrManagedApi/wrappers/Core.hpp create mode 100644 src/editors/xrManagedApi/xrManagedApi.vcxproj create mode 100644 src/editors/xrManagedApi/xrManagedApi.vcxproj.filters diff --git a/src/editors/xrManagedApi/AssemblyInfo.cpp b/src/editors/xrManagedApi/AssemblyInfo.cpp new file mode 100644 index 00000000000..6b2e43fb854 --- /dev/null +++ b/src/editors/xrManagedApi/AssemblyInfo.cpp @@ -0,0 +1,38 @@ +#include "Pch.hpp" + +using namespace System; +using namespace System::Reflection; +using namespace System::Runtime::CompilerServices; +using namespace System::Runtime::InteropServices; +using namespace System::Security::Permissions; + +// +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +// +[assembly:AssemblyTitleAttribute(L"xrManagedApi")]; +[assembly:AssemblyDescriptionAttribute(L"")]; +[assembly:AssemblyConfigurationAttribute(L"")]; +[assembly:AssemblyCompanyAttribute(L"")]; +[assembly:AssemblyProductAttribute(L"xrManagedApi")]; +[assembly:AssemblyCopyrightAttribute(L"Copyright (c) GSC Game World 2014")]; +[assembly:AssemblyTrademarkAttribute(L"")]; +[assembly:AssemblyCultureAttribute(L"")]; + +// +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the value or you can default the Revision and Build Numbers +// by using the '*' as shown below: + +[assembly:AssemblyVersionAttribute("1.0.*")]; + +[assembly:ComVisible(false)]; + +[assembly:CLSCompliantAttribute(true)]; \ No newline at end of file diff --git a/src/editors/xrManagedApi/Pch.cpp b/src/editors/xrManagedApi/Pch.cpp new file mode 100644 index 00000000000..30fb41593c7 --- /dev/null +++ b/src/editors/xrManagedApi/Pch.cpp @@ -0,0 +1 @@ +#include "Pch.hpp" diff --git a/src/editors/xrManagedApi/Pch.hpp b/src/editors/xrManagedApi/Pch.hpp new file mode 100644 index 00000000000..6f70f09beec --- /dev/null +++ b/src/editors/xrManagedApi/Pch.hpp @@ -0,0 +1 @@ +#pragma once diff --git a/src/editors/xrManagedApi/wrappers/Core.cpp b/src/editors/xrManagedApi/wrappers/Core.cpp new file mode 100644 index 00000000000..977c5984c8d --- /dev/null +++ b/src/editors/xrManagedApi/wrappers/Core.cpp @@ -0,0 +1,55 @@ +#include "Pch.hpp" +#include "Core.hpp" +#include "xrCore/xrCore.h" +#include + +namespace XRay +{ +namespace ManagedApi +{ + +Core::Core() { } + +static void LogCallbackWrapper(const char* msg) +{ + if (!Core::ManagedLogCallback) + return; + String^ tmpMsg = msg ? gcnew String(msg) : nullptr; + Core::ManagedLogCallback(tmpMsg); +} + +void Core::Initialize(String^ appName, LogCallback^ logCallback, bool initFs, String^ fsFileName) +{ + ManagedLogCallback = logCallback; + std::string appNameC = msclr::interop::marshal_as(appName); + if (fsFileName) + { + std::string fsFileNameC = msclr::interop::marshal_as(fsFileName); + ::Core._initialize(appNameC.c_str(), LogCallbackWrapper, initFs, fsFileNameC.c_str()); + } + else + ::Core._initialize(appNameC.c_str(), LogCallbackWrapper, initFs, nullptr); +} + +void Core::Initialize(String^ appName, LogCallback^ logCallback, bool initFs) +{ + Core::Initialize(appName, logCallback, initFs, nullptr); +} + +void Core::Initialize(String^ appName, LogCallback^ logCallback) +{ + Core::Initialize(appName, logCallback, false, nullptr); +} + +void Core::Initialize(String^ appName) +{ + Core::Initialize(appName, nullptr, false, nullptr); +} + +void Core::Destroy() +{ + ::Core._destroy(); +} + +} +} diff --git a/src/editors/xrManagedApi/wrappers/Core.hpp b/src/editors/xrManagedApi/wrappers/Core.hpp new file mode 100644 index 00000000000..6cc76a07a03 --- /dev/null +++ b/src/editors/xrManagedApi/wrappers/Core.hpp @@ -0,0 +1,25 @@ +#pragma once + +using namespace System; + +namespace XRay +{ +namespace ManagedApi +{ +public ref class Core +{ +public: + delegate void LogCallback(String^ str); +internal: + static LogCallback^ ManagedLogCallback; +private: + Core(); +public: + static void Initialize(String^ appName, LogCallback^ logCallback, bool initFs, String^ fsFileName); + static void Initialize(String^ appName, LogCallback^ logCallback, bool initFs); + static void Initialize(String^ appName, LogCallback^ logCallback); + static void Initialize(String^ appName); + static void Destroy(); +}; +} +} diff --git a/src/editors/xrManagedApi/xrManagedApi.vcxproj b/src/editors/xrManagedApi/xrManagedApi.vcxproj new file mode 100644 index 00000000000..a4bee8e21ca --- /dev/null +++ b/src/editors/xrManagedApi/xrManagedApi.vcxproj @@ -0,0 +1,105 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5} + v4.0 + ManagedCProj + xrManagedApi + + + + DynamicLibrary + true + v120 + true + Unicode + + + DynamicLibrary + false + v120 + true + Unicode + + + + + + + + + + + + + + + $(xrBinDir) + $(xrIntDir)$(ProjectName)\ + true + + + $(xrBinDir) + $(xrIntDir)$(ProjectName)\ + false + + + + Level3 + Disabled + WIN32;_DEBUG;%(PreprocessorDefinitions) + Use + .;$(SolutionDir) + Pch.hpp + + + true + xrCore.lib + $(xrLibDir) + + + + + Level3 + WIN32;NDEBUG;%(PreprocessorDefinitions) + Use + .;$(SolutionDir) + Pch.hpp + + + true + xrCore.lib + $(xrLibDir) + + + + + + + + + + + + + + + Create + Create + + + + + + + \ No newline at end of file diff --git a/src/editors/xrManagedApi/xrManagedApi.vcxproj.filters b/src/editors/xrManagedApi/xrManagedApi.vcxproj.filters new file mode 100644 index 00000000000..256bdea5de6 --- /dev/null +++ b/src/editors/xrManagedApi/xrManagedApi.vcxproj.filters @@ -0,0 +1,21 @@ + + + + + {5701e3e7-534d-4d78-8018-13a0da121c00} + + + + + wrappers + + + + + + wrappers + + + + + \ No newline at end of file diff --git a/src/engine.sln b/src/engine.sln index 89057f2a4de..5bd53d5116c 100644 --- a/src/engine.sln +++ b/src/engine.sln @@ -133,6 +133,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xrWeatherEditor", "editors\ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xrPostprocessEditor", "editors\xrPostprocessEditor\xrPostprocessEditor.csproj", "{CB449DB5-9C97-447A-AA25-35EA7712F62C}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xrManagedApi", "editors\xrManagedApi\xrManagedApi.vcxproj", "{55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug_Dedicated|Any CPU = Debug_Dedicated|Any CPU @@ -1600,6 +1602,36 @@ Global {CB449DB5-9C97-447A-AA25-35EA7712F62C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {CB449DB5-9C97-447A-AA25-35EA7712F62C}.Release|Mixed Platforms.Build.0 = Release|Any CPU {CB449DB5-9C97-447A-AA25-35EA7712F62C}.Release|Win32.ActiveCfg = Release|Any CPU + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Debug_Dedicated|Any CPU.ActiveCfg = Debug|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Debug_Dedicated|Mixed Platforms.ActiveCfg = Debug|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Debug_Dedicated|Mixed Platforms.Build.0 = Debug|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Debug_Dedicated|Win32.ActiveCfg = Debug|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Debug_Dedicated|Win32.Build.0 = Debug|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Debug|Win32.ActiveCfg = Debug|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Debug|Win32.Build.0 = Debug|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Mixed_Dedicated|Any CPU.ActiveCfg = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Mixed_Dedicated|Mixed Platforms.ActiveCfg = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Mixed_Dedicated|Mixed Platforms.Build.0 = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Mixed_Dedicated|Win32.ActiveCfg = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Mixed_Dedicated|Win32.Build.0 = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Mixed|Any CPU.ActiveCfg = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Mixed|Mixed Platforms.ActiveCfg = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Mixed|Mixed Platforms.Build.0 = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Mixed|Win32.ActiveCfg = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Mixed|Win32.Build.0 = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Release_Dedicated|Any CPU.ActiveCfg = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Release_Dedicated|Mixed Platforms.ActiveCfg = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Release_Dedicated|Mixed Platforms.Build.0 = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Release_Dedicated|Win32.ActiveCfg = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Release_Dedicated|Win32.Build.0 = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Release|Any CPU.ActiveCfg = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Release|Mixed Platforms.Build.0 = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Release|Win32.ActiveCfg = Release|Win32 + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1644,6 +1676,7 @@ Global {E9DC16A3-D0FA-4924-AF6E-F6FDF3EA0661} = {CB0C814D-FB4E-453B-B7A0-716F4A1EACA4} {492D3DFE-9068-4E7E-A008-7C2420A651C0} = {CB0C814D-FB4E-453B-B7A0-716F4A1EACA4} {CB449DB5-9C97-447A-AA25-35EA7712F62C} = {CB0C814D-FB4E-453B-B7A0-716F4A1EACA4} + {55B0E2CA-E27A-47FC-BC92-21ABDC1044F5} = {CB0C814D-FB4E-453B-B7A0-716F4A1EACA4} EndGlobalSection GlobalSection(DPCodeReviewSolutionGUID) = preSolution DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}