iOS fixes

This commit is contained in:
Nick Fisher
2023-04-20 22:15:50 +08:00
parent 9dc30f6eff
commit 80a781a3c4
19 changed files with 154 additions and 138 deletions

View File

@@ -6,7 +6,6 @@
#include <gltfio/FilamentAsset.h>
#include <gltfio/ResourceLoader.h>
#include "ResourceManagement.hpp"
#include "SceneAsset.hpp"
#include "ResourceBuffer.hpp"
@@ -18,8 +17,7 @@ namespace polyvox {
class AssetManager {
public:
AssetManager(LoadResource loadResource,
FreeResource freeResource,
AssetManager(ResourceLoaderWrapper* loader,
NameComponentManager *ncm,
Engine *engine,
Scene *scene);
@@ -64,10 +62,8 @@ namespace polyvox {
void setAnimationFrame(EntityId entity, int animationIndex, int animationFrame);
private:
LoadResource _loadResource;
FreeResource _freeResource;
AssetLoader* _assetLoader = nullptr;
ResourceLoader* _resourceLoader = nullptr;
ResourceLoaderWrapper* _resourceLoaderWrapper;
NameComponentManager* _ncm = nullptr;
Engine* _engine;
Scene* _scene;

View File

@@ -32,7 +32,6 @@
#include <chrono>
#include "AssetManager.hpp"
#include "ResourceManagement.hpp"
using namespace std;
using namespace filament;
@@ -46,7 +45,7 @@ namespace polyvox {
class FilamentViewer {
public:
// FilamentViewer(void* layer, LoadResource loadResource, FreeResource freeResource);
FilamentViewer(void* context, LoadResource loadResource, FreeResource freeResource);
FilamentViewer(void* context, ResourceLoaderWrapper* resourceLoaderWrapper);
~FilamentViewer();
void loadSkybox(const char* const skyboxUri);
@@ -107,8 +106,7 @@ namespace polyvox {
math::mat4f _cameraPosition;
math::mat4f _cameraRotation;
LoadResource _loadResource;
FreeResource _freeResource;
ResourceLoaderWrapper* _resourceLoaderWrapper;
Scene* _scene;
View* _view;

View File

@@ -5,12 +5,10 @@
#include <stddef.h>
typedef struct ResourceBuffer ResourceBuffer;
typedef int32_t EntityId;
intptr_t init_dart_api_dl(void* data);
void* create_filament_viewer(void *context, ResourceBuffer (*loadResource)(const char *), void (*freeResource)(uint32_t));
void* create_filament_viewer(void *context, ResourceLoaderWrapper* loader);
ResourceLoaderWrapper* make_resource_loader(LoadResourceFromOwner loadFn, FreeResourceFromOwner freeFn, void* owner);
void delete_filament_viewer(void *viewer);
void* get_asset_manager(void* viewer);
void create_render_target(void *viewer, uint32_t textureId, uint32_t width, uint32_t height);
@@ -103,5 +101,6 @@ void set_camera_rotation(void *viewer, float rads, float x, float y, float z);
void set_camera_model_matrix(void *viewer, const float *const matrix);
void set_camera_focal_length(void *viewer, float focalLength);
void set_camera_focus_distance(void *viewer, float focusDistance);
void ios_dummy();
#endif

View File

@@ -1,2 +0,0 @@
void* create_filament_viewer_ios(void* texture, void* loadResource, void* freeResource, void* resources);

View File

@@ -3,6 +3,7 @@
#include <stdint.h>
#if defined(__cplusplus)
#include "Log.hpp"
extern "C" {
#endif
//
@@ -38,6 +39,43 @@ extern "C" {
uint32_t size;
uint32_t id;
};
typedef struct ResourceBuffer ResourceBuffer;
typedef ResourceBuffer (*LoadResource)(const char* uri);
typedef ResourceBuffer (*LoadResourceFromOwner)(const char* const, void* const owner);
typedef void (*FreeResource)(ResourceBuffer);
typedef void (*FreeResourceFromOwner)(ResourceBuffer, void* const owner);
struct ResourceLoaderWrapper {
#if defined(__cplusplus)
ResourceLoaderWrapper(LoadResource loader, FreeResource freeResource) : mLoadResource(loader), mFreeResource(freeResource) {};
ResourceLoaderWrapper(LoadResourceFromOwner loader, FreeResourceFromOwner freeResource, void* const owner) : mLoadResourceFromOwner(loader), mFreeResourceFromOwner(freeResource), mOwner(owner) {};
ResourceBuffer load(const char* uri) {
Log("LOADING %s", uri);
if(mLoadResourceFromOwner) {
return mLoadResourceFromOwner(uri, mOwner);
}
return mLoadResource(uri);
}
void free(ResourceBuffer rb) {
if(mFreeResourceFromOwner) {
mFreeResourceFromOwner(rb, mOwner);
} else {
mFreeResource(rb);
}
}
#endif
void* mOwner;
LoadResource mLoadResource;
FreeResource mFreeResource;
LoadResourceFromOwner mLoadResourceFromOwner;
FreeResourceFromOwner mFreeResourceFromOwner;
};
typedef struct ResourceLoaderWrapper ResourceLoaderWrapper;
#if defined(__cplusplus)
}
#endif

View File

@@ -1,27 +0,0 @@
#pragma once
#include <functional>
#include <memory>
#include <chrono>
#include <iostream>
#include <vector>
#include "ResourceBuffer.hpp"
namespace polyvox {
using namespace std;
//
// Typedef for a function that loads a resource into a ResourceBuffer from an asset URI.
//
using LoadResource = function<ResourceBuffer(const char* uri)>;
//
// Typedef for a function that frees an ID associated with a ResourceBuffer.
//
using FreeResource = function<void (uint32_t)>;
}

View File

@@ -18,8 +18,6 @@
#include <gltfio/ResourceLoader.h>
#include <utils/NameComponentManager.h>
#include "ResourceManagement.hpp"
extern "C" {
#include "PolyvoxFilamentApi.h"
}

View File

@@ -1,7 +1,6 @@
#ifndef SwiftPolyvoxFilamentPlugin_Bridging_Header_h
#define SwiftPolyvoxFilamentPlugin_Bridging_Header_h
#import "PolyvoxFilamentIOSApi.h"
#import "PolyvoxFilamentApi.h"
#endif