add removeSkybox
This commit is contained in:
@@ -9,10 +9,11 @@ using namespace polyvox;
|
||||
using namespace std;
|
||||
|
||||
static AAssetManager* am;
|
||||
|
||||
static vector<AAsset*> _assets;
|
||||
uint64_t id = -1;
|
||||
|
||||
static FilamentViewer* _viewer;
|
||||
|
||||
static polyvox::ResourceBuffer loadResource(const char* name) {
|
||||
|
||||
id++;
|
||||
@@ -50,6 +51,10 @@ extern "C" {
|
||||
((FilamentViewer*)viewer)->loadSkybox(skyboxPath, iblPath);
|
||||
}
|
||||
|
||||
void remove_skybox(void* viewer) {
|
||||
((FilamentViewer*)viewer)->removeSkybox();
|
||||
}
|
||||
|
||||
void load_glb(void* viewer, const char* assetPath) {
|
||||
((FilamentViewer*)viewer)->loadGlb(assetPath);
|
||||
}
|
||||
@@ -67,9 +72,13 @@ extern "C" {
|
||||
JNIEnv* env,
|
||||
jobject assetManager
|
||||
) {
|
||||
if(_viewer) {
|
||||
return _viewer;
|
||||
}
|
||||
ANativeWindow* layer = ANativeWindow_fromSurface(env, surface);
|
||||
am = AAssetManager_fromJava(env, assetManager);
|
||||
return new FilamentViewer((void*)layer, loadResource, freeResource);
|
||||
_viewer = new FilamentViewer((void*)layer, loadResource, freeResource);
|
||||
return _viewer;
|
||||
}
|
||||
|
||||
void render(
|
||||
@@ -166,10 +175,6 @@ extern "C" {
|
||||
free(ptr);
|
||||
}
|
||||
|
||||
void release_source_assets(void* viewer) {
|
||||
((FilamentViewer*)viewer)->releaseSourceAssets();
|
||||
}
|
||||
|
||||
void remove_asset(void* viewer) {
|
||||
((FilamentViewer*)viewer)->removeAsset();
|
||||
}
|
||||
|
||||
@@ -64,5 +64,7 @@ interface FilamentInterop : Library {
|
||||
|
||||
fun remove_asset(viewer:Pointer);
|
||||
|
||||
fun remove_skybox(viewer:Pointer);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -104,9 +104,9 @@ PlatformView {
|
||||
_methodChannel.invokeMethod("ready", null)
|
||||
|
||||
choreographer = Choreographer.getInstance()
|
||||
|
||||
// _view.setAlpha(0)
|
||||
_view.setZOrderOnTop(false)
|
||||
_view.holder.setFormat(PixelFormat.OPAQUE)
|
||||
_view.holder.setFormat(PixelFormat.TRANSPARENT)
|
||||
|
||||
_view.holder.addCallback (object : SurfaceHolder.Callback {
|
||||
override fun surfaceChanged(holder:SurfaceHolder, format:Int, width:Int, height:Int) {
|
||||
@@ -151,19 +151,34 @@ PlatformView {
|
||||
|
||||
override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
|
||||
when (call.method) {
|
||||
"reloadAssets" -> {
|
||||
// context = context.createPackageContext(context.getPackageName(), 0)
|
||||
// val assetManager = context.getAssets()
|
||||
// val flutterJNI = FlutterJNI.Factory.provideFlutterJNI()
|
||||
// flutterJNI.updateJavaAssetManager(assetManager, flutterApplicationInfo.flutterAssetsDir)
|
||||
}
|
||||
"loadSkybox" -> {
|
||||
val args = call.arguments as ArrayList<Any?>
|
||||
val loader = FlutterInjector.instance().flutterLoader()
|
||||
_lib.load_skybox(_viewer!!, loader.getLookupKeyForAsset(args[0] as String), loader.getLookupKeyForAsset(args[1] as String))
|
||||
result.success("OK");
|
||||
}
|
||||
"removeSkybox" -> {
|
||||
_lib.remove_skybox(_viewer!!)
|
||||
result.success(true);
|
||||
}
|
||||
"loadGlb" -> {
|
||||
if (_viewer == null)
|
||||
return;
|
||||
val loader = FlutterInjector.instance().flutterLoader()
|
||||
val key = loader.getLookupKeyForAsset(call.arguments as String)
|
||||
val key2 = loader.getLookupKeyForAsset(call.arguments as String, context.packageName)
|
||||
val path = loader.findAppBundlePath()
|
||||
Log.v(TAG, "key ${key} key2 ${key2} path : ${path}")
|
||||
|
||||
_lib.load_glb(
|
||||
_viewer!!,
|
||||
loader.getLookupKeyForAsset(call.arguments as String)
|
||||
key
|
||||
)
|
||||
result.success("OK");
|
||||
}
|
||||
@@ -297,10 +312,6 @@ PlatformView {
|
||||
_lib.grab_end(_viewer!!)
|
||||
result.success("OK");
|
||||
}
|
||||
"releaseSourceAssets" -> {
|
||||
_lib.release_source_assets(_viewer!!)
|
||||
result.success("OK");
|
||||
}
|
||||
"removeAsset" -> {
|
||||
_lib.remove_asset(_viewer!!)
|
||||
result.success("OK");
|
||||
|
||||
Reference in New Issue
Block a user