mirror of https://github.com/AxioDL/metaforce.git
UWP support
This commit is contained in:
parent
1dd26f6241
commit
559096feeb
|
@ -1,3 +1,4 @@
|
|||
if(NOT WINDOWS_STORE)
|
||||
add_executable(hecl main.cpp
|
||||
ToolBase.hpp
|
||||
ToolPackage.hpp
|
||||
|
@ -27,3 +28,4 @@ target_link_libraries(hecl
|
|||
hecl-common hecl-blender-addon athena-core nod
|
||||
logvisor athena-libyaml ${PNG_LIB} squish xxhash zeus boo
|
||||
${ZLIB_LIBRARIES} ${LZO_LIB} ${PLAT_LIBS} ${BOO_SYS_LIBS})
|
||||
endif()
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit cf3baad9050e63e6bb8432305faf76fbb2cf9de9
|
||||
Subproject commit da9699a7e29d2f7627e450f3d182e63a5140151d
|
|
@ -1 +1 @@
|
|||
Subproject commit 598bce028b6caa8547c8380d45d7a7b71ae9facc
|
||||
Subproject commit f228f236613792a7f7471610bf9e102d885dbae6
|
|
@ -164,11 +164,15 @@ int RecursiveMakeDir(const SystemChar* dir);
|
|||
|
||||
static inline const SystemChar* GetEnv(const SystemChar* name)
|
||||
{
|
||||
#if WINDOWS_STORE
|
||||
return nullptr;
|
||||
#else
|
||||
#if HECL_UCS2
|
||||
return _wgetenv(name);
|
||||
#else
|
||||
return getenv(name);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline SystemChar* Getcwd(SystemChar* buf, int maxlen)
|
||||
|
@ -230,7 +234,9 @@ static inline bool IsAbsolute(SystemStringView path)
|
|||
|
||||
const SystemChar* GetTmpDir();
|
||||
|
||||
#if !WINDOWS_STORE
|
||||
int RunProcess(const SystemChar* path, const SystemChar* const args[]);
|
||||
#endif
|
||||
|
||||
enum class FileLockType
|
||||
{
|
||||
|
@ -441,7 +447,7 @@ static inline bool PathRelative(const SystemChar* path)
|
|||
{
|
||||
if (!path || !path[0])
|
||||
return false;
|
||||
#if _WIN32
|
||||
#if _WIN32 && !WINDOWS_STORE
|
||||
return PathIsRelative(path);
|
||||
#else
|
||||
return path[0] != '/';
|
||||
|
@ -452,9 +458,11 @@ static inline int ConsoleWidth()
|
|||
{
|
||||
int retval = 80;
|
||||
#if _WIN32
|
||||
#if !WINDOWS_STORE
|
||||
CONSOLE_SCREEN_BUFFER_INFO info;
|
||||
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &info);
|
||||
retval = info.dwSize.X;
|
||||
#endif
|
||||
#else
|
||||
struct winsize w;
|
||||
if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &w) != -1)
|
||||
|
|
|
@ -4,11 +4,13 @@ endif()
|
|||
if(APPLE)
|
||||
set(PLAT_SRCS Metal.cpp)
|
||||
endif()
|
||||
if(NOT WINDOWS_STORE)
|
||||
list(APPEND PLAT_SRCS GLSL.cpp)
|
||||
endif()
|
||||
|
||||
set(BACKEND_SOURCES
|
||||
GX.cpp
|
||||
ProgrammableCommon.cpp
|
||||
GLSL.cpp
|
||||
${PLAT_SRCS})
|
||||
|
||||
hecl_add_list(Backend BACKEND_SOURCES)
|
||||
|
|
|
@ -245,6 +245,7 @@ static bool RegFileExists(const hecl::SystemChar* path)
|
|||
|
||||
BlenderConnection::BlenderConnection(int verbosityLevel)
|
||||
{
|
||||
#if !WINDOWS_STORE
|
||||
BlenderLog.report(logvisor::Info, "Establishing BlenderConnection...");
|
||||
|
||||
/* Put hecl_blendershell.py in temp dir */
|
||||
|
@ -552,6 +553,9 @@ BlenderConnection::BlenderConnection(int verbosityLevel)
|
|||
|
||||
break;
|
||||
}
|
||||
#else
|
||||
BlenderLog.report(logvisor::Fatal, "BlenderConnection not available on UWP");
|
||||
#endif
|
||||
}
|
||||
|
||||
BlenderConnection::~BlenderConnection()
|
||||
|
|
|
@ -4,6 +4,10 @@
|
|||
#include <ShlObj.h>
|
||||
#endif
|
||||
|
||||
#if WINDOWS_STORE
|
||||
using namespace Windows::Storage;
|
||||
#endif
|
||||
|
||||
namespace hecl
|
||||
{
|
||||
namespace Runtime
|
||||
|
@ -14,12 +18,16 @@ FileStoreManager::FileStoreManager(SystemStringView domain)
|
|||
: m_domain(domain)
|
||||
{
|
||||
#if _WIN32
|
||||
#if !WINDOWS_STORE
|
||||
WCHAR home[MAX_PATH];
|
||||
if (!SUCCEEDED(SHGetFolderPathW(NULL, CSIDL_PROFILE, NULL, 0, home)))
|
||||
Log.report(logvisor::Fatal, _S("unable to locate profile for file store"));
|
||||
|
||||
SystemString path(home);
|
||||
|
||||
#else
|
||||
StorageFolder^ cacheFolder = ApplicationData::Current->LocalCacheFolder;
|
||||
SystemString path(cacheFolder->Path->Data());
|
||||
#endif
|
||||
path += _S("/.heclrun");
|
||||
|
||||
hecl::MakeDir(path.c_str());
|
||||
|
|
|
@ -12,7 +12,9 @@ namespace hecl
|
|||
{
|
||||
namespace Runtime
|
||||
{
|
||||
#if BOO_HAS_GL
|
||||
IShaderBackendFactory* _NewGLSLBackendFactory();
|
||||
#endif
|
||||
#if _WIN32
|
||||
IShaderBackendFactory* _NewHLSLBackendFactory();
|
||||
#endif
|
||||
|
@ -129,9 +131,11 @@ ShaderCacheManager::ShaderCacheManager(const FileStoreManager& storeMgr,
|
|||
|
||||
switch (plat)
|
||||
{
|
||||
#if BOO_HAS_GL
|
||||
case boo::IGraphicsDataFactory::Platform::OpenGL:
|
||||
m_factory.reset(_NewGLSLBackendFactory());
|
||||
break;
|
||||
#endif
|
||||
#if _WIN32
|
||||
case boo::IGraphicsDataFactory::Platform::D3D11:
|
||||
case boo::IGraphicsDataFactory::Platform::D3D12:
|
||||
|
|
|
@ -20,6 +20,7 @@ hecl::SystemString FindCommonSteamApp(const hecl::SystemChar* name)
|
|||
hecl::Sstat theStat;
|
||||
|
||||
#ifdef WIN32
|
||||
#if !WINDOWS_STORE
|
||||
HKEY hkey;
|
||||
hecl::SystemChar _steamInstallDir[MAX_PATH] = {0};
|
||||
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _S("Software\\Valve\\Steam"),
|
||||
|
@ -38,6 +39,9 @@ hecl::SystemString FindCommonSteamApp(const hecl::SystemChar* name)
|
|||
|
||||
if (steamInstallDir.empty())
|
||||
return {};
|
||||
#else
|
||||
return {};
|
||||
#endif
|
||||
|
||||
#elif defined(__APPLE__)
|
||||
steamInstallDir = getenv("HOME");
|
||||
|
|
|
@ -511,6 +511,7 @@ std::vector<std::pair<hecl::SystemString, std::string>> GetSystemLocations()
|
|||
{
|
||||
std::vector<std::pair<hecl::SystemString, std::string>> ret;
|
||||
#ifdef WIN32
|
||||
#if !WINDOWS_STORE
|
||||
/* Add the drive names to the listing (as queried by blender) */
|
||||
{
|
||||
wchar_t wline[FILE_MAXDIR];
|
||||
|
@ -561,6 +562,7 @@ std::vector<std::pair<hecl::SystemString, std::string>> GetSystemLocations()
|
|||
SanitizePath(wpath);
|
||||
ret.push_back(NameFromPath(wpath));
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
#ifdef __APPLE__
|
||||
{
|
||||
|
@ -754,9 +756,13 @@ int RecursiveMakeDir(const SystemChar* dir) {
|
|||
const SystemChar* GetTmpDir()
|
||||
{
|
||||
#ifdef _WIN32
|
||||
#if WINDOWS_STORE
|
||||
wchar_t* TMPDIR = nullptr;
|
||||
#else
|
||||
wchar_t* TMPDIR = _wgetenv(L"TEMP");
|
||||
if (!TMPDIR)
|
||||
TMPDIR = (wchar_t*)L"\\Temp";
|
||||
#endif
|
||||
#else
|
||||
char* TMPDIR = getenv("TMPDIR");
|
||||
if (!TMPDIR)
|
||||
|
@ -765,6 +771,7 @@ const SystemChar* GetTmpDir()
|
|||
return TMPDIR;
|
||||
}
|
||||
|
||||
#if !WINDOWS_STORE
|
||||
int RunProcess(const SystemChar* path, const SystemChar* const args[])
|
||||
{
|
||||
#ifdef _WIN32
|
||||
|
@ -894,5 +901,6 @@ int RunProcess(const SystemChar* path, const SystemChar* const args[])
|
|||
return -1;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
|
|
@ -244,6 +244,7 @@ void AthenaExcHandler(athena::error::Level level,
|
|||
va_end(ap);
|
||||
}
|
||||
|
||||
#if !WINDOWS_STORE
|
||||
#if _WIN32
|
||||
int wmain(int argc, const boo::SystemChar** argv)
|
||||
#else
|
||||
|
@ -259,8 +260,23 @@ int main(int argc, const boo::SystemChar** argv)
|
|||
printf("IM DYING!!\n");
|
||||
return ret;
|
||||
}
|
||||
#else
|
||||
using namespace Windows::ApplicationModel::Core;
|
||||
|
||||
#if _WIN32
|
||||
[Platform::MTAThread]
|
||||
int WINAPIV main(Platform::Array<Platform::String^>^ params)
|
||||
{
|
||||
logvisor::RegisterStandardExceptions();
|
||||
logvisor::RegisterConsoleLogger();
|
||||
HECLApplicationCallback appCb;
|
||||
boo::ViewProvider^ viewProvider =
|
||||
ref new boo::ViewProvider(appCb, _S("heclTest"), _S("HECL Test"), _S("heclTest"), params, false);
|
||||
CoreApplication::Run(viewProvider);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if _WIN32 && !WINDOWS_STORE
|
||||
int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR lpCmdLine, int)
|
||||
{
|
||||
int argc = 0;
|
||||
|
|
Loading…
Reference in New Issue