separate IBL from skybox and add setBackgroundImage method

This commit is contained in:
Nick Fisher
2022-08-09 09:52:07 +08:00
parent 12edd1f0b2
commit 2cb0d57eed
16 changed files with 1066 additions and 85 deletions

View File

@@ -47,14 +47,27 @@ static void freeResource(ResourceBuffer rb) {
extern "C" {
void load_skybox(void* viewer, const char* skyboxPath, const char* iblPath) {
((FilamentViewer*)viewer)->loadSkybox(skyboxPath, iblPath);
void set_background_image(void* viewer, const char* path) {
((FilamentViewer*)viewer)->setBackgroundImage(path);
}
void load_skybox(void* viewer, const char* skyboxPath) {
((FilamentViewer*)viewer)->loadSkybox(skyboxPath);
}
void load_ibl(void* viewer, const char* iblPath) {
((FilamentViewer*)viewer)->loadIbl(iblPath);
}
void remove_skybox(void* viewer) {
((FilamentViewer*)viewer)->removeSkybox();
}
void remove_ibl(void* viewer) {
((FilamentViewer*)viewer)->removeIbl();
}
void load_glb(void* viewer, const char* assetPath) {
((FilamentViewer*)viewer)->loadGlb(assetPath);
}

View File

@@ -24,7 +24,9 @@ interface FilamentInterop : Library {
am:AssetManager
) : Pointer;
fun load_skybox(viewer:Pointer, skyboxPath:String, iblPath:String) : Pointer;
fun load_skybox(viewer:Pointer, skyboxPath:String) : Pointer;
fun load_ibl(viewer:Pointer, skyboxPath:String) : Pointer;
fun load_glb(viewer:Pointer, uri:String) : Pointer;
@@ -66,5 +68,7 @@ interface FilamentInterop : Library {
fun remove_skybox(viewer:Pointer);
fun remove_ibl(viewer:Pointer);
fun set_background_image(viewer:Pointer, path:String);
}

View File

@@ -94,6 +94,7 @@ PlatformView {
private lateinit var assetManager : AssetManager
init {
MethodChannel(binaryMessenger, PolyvoxFilamentPlugin.VIEW_TYPE + '_' + viewId).also {
_methodChannel = it
@@ -157,12 +158,29 @@ PlatformView {
// val flutterJNI = FlutterJNI.Factory.provideFlutterJNI()
// flutterJNI.updateJavaAssetManager(assetManager, flutterApplicationInfo.flutterAssetsDir)
}
"loadSkybox" -> {
val args = call.arguments as ArrayList<Any?>
"setBackgroundImage" -> {
val args = call.arguments as String
val loader = FlutterInjector.instance().flutterLoader()
_lib.load_skybox(_viewer!!, loader.getLookupKeyForAsset(args[0] as String), loader.getLookupKeyForAsset(args[1] as String))
_lib.set_background_image(_viewer!!, loader.getLookupKeyForAsset(args))
result.success("OK");
}
"loadSkybox" -> {
val args = call.arguments as String
val loader = FlutterInjector.instance().flutterLoader()
_lib.load_skybox(_viewer!!, loader.getLookupKeyForAsset(args))
result.success("OK");
}
"loadIbl" -> {
val args = call.arguments as String
val loader = FlutterInjector.instance().flutterLoader()
_lib.load_ibl(_viewer!!, loader.getLookupKeyForAsset(args))
result.success("OK");
}
"removeIbl" -> {
_lib.remove_ibl(_viewer!!)
result.success(true);
}
"removeSkybox" -> {
_lib.remove_skybox(_viewer!!)
result.success(true);