Update to support special characters in Windows;

This commit is contained in:
bjorn 2017-11-02 19:01:31 -07:00
parent 87ccedb166
commit 1f4404a695
2 changed files with 9 additions and 5 deletions

View File

@ -72,7 +72,7 @@ int lovrFilesystemGetAppdataDirectory(char* dest, unsigned int size) {
#elif _WIN32
PWSTR appData = NULL;
SHGetKnownFolderPath(&FOLDERID_RoamingAppData, 0, NULL, &appData);
wcstombs(dest, appData, size);
PHYSFS_utf8FromUtf16(appData, dest, size);
CoTaskMemFree(appData);
return 0;
#elif EMSCRIPTEN
@ -234,7 +234,11 @@ int lovrFilesystemSetIdentity(const char* identity) {
}
lovrFilesystemGetAppdataDirectory(state.savePathFull, LOVR_PATH_MAX);
PHYSFS_setWriteDir(state.savePathFull);
if (!PHYSFS_setWriteDir(state.savePathFull)) {
const char* error = PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode());
lovrThrow("Could not set write directory: %s (%s)", error, state.savePathFull);
}
snprintf(state.savePathRelative, LOVR_PATH_MAX, "LOVR/%s", identity ? identity : "default");
char fullPathBuffer[LOVR_PATH_MAX];
snprintf(fullPathBuffer, LOVR_PATH_MAX, "%s/%s", state.savePathFull, state.savePathRelative);

View File

@ -150,7 +150,7 @@ static void assimpSumChildren(struct aiNode* assimpNode, int* totalChildren) {
static void assimpNodeTraversal(ModelData* modelData, struct aiNode* assimpNode, int* nodeId) {
int currentIndex = *nodeId;
ModelNode* node = &modelData->nodes[currentIndex];
node->name = strndup(assimpNode->mName.data, assimpNode->mName.length);
node->name = strdup(assimpNode->mName.data);
// Transform
struct aiMatrix4x4 m = assimpNode->mTransformation;
@ -310,7 +310,7 @@ ModelData* lovrModelDataCreate(Blob* blob) {
if (!map_get(&modelData->boneMap, boneName)) {
Bone bone;
bone.name = strndup(boneName, assimpBone->mName.length);
bone.name = strdup(boneName);
aiTransposeMatrix4(&assimpBone->mOffsetMatrix);
mat4_set(bone.offset, (float*) &assimpBone->mOffsetMatrix);
map_set(&modelData->boneMap, bone.name, modelData->bones.length);
@ -396,7 +396,7 @@ ModelData* lovrModelDataCreate(Blob* blob) {
struct aiNodeAnim* assimpChannel = assimpAnimation->mChannels[j];
AnimationChannel channel;
channel.node = strndup(assimpChannel->mNodeName.data, assimpChannel->mNodeName.length);
channel.node = strdup(assimpChannel->mNodeName.data);
vec_init(&channel.positionKeyframes);
vec_init(&channel.rotationKeyframes);
vec_init(&channel.scaleKeyframes);