initial work to re-implement FFI with background thread render loop
This commit is contained in:
@@ -17,11 +17,11 @@ open class ResourceBuffer: Structure(), Structure.ByValue {
|
||||
}
|
||||
}
|
||||
|
||||
interface LoadResourceFromOwner : Callback {
|
||||
interface LoadFilamentResourceFromOwner : Callback {
|
||||
fun loadResourceFromOwner(resourceName: String?, owner: Pointer?): ResourceBuffer
|
||||
}
|
||||
|
||||
interface FreeResourceFromOwner : Callback {
|
||||
interface FreeFilamentResourceFromOwner : Callback {
|
||||
fun freeResourceFromOwner(rb: ResourceBuffer, owner: Pointer?)
|
||||
}
|
||||
interface FilamentInterop : Library {
|
||||
@@ -29,7 +29,7 @@ interface FilamentInterop : Library {
|
||||
fun create_filament_viewer(context:Pointer, loader:Pointer) : Pointer;
|
||||
fun create_swap_chain(viewer: Pointer, window:Pointer?, width:Int, height:Int);
|
||||
fun get_native_window_from_surface(surface:Object, env:JNIEnv) : Pointer;
|
||||
fun delete_filament_viewer(viewer: Pointer)
|
||||
fun destroy_filament_viewer(viewer: Pointer)
|
||||
fun get_asset_manager(viewer: Pointer?): Pointer?
|
||||
fun create_render_target(viewer: Pointer, texture_id: Int, width: Int, height: Int)
|
||||
fun clear_background_image(viewer: Pointer)
|
||||
@@ -89,6 +89,6 @@ fun set_camera_focus_distance(viewer: Pointer, focus_distance: Float)
|
||||
fun hide_mesh(asset_manager: Pointer, asset: EntityId, mesh_name: String): Int
|
||||
fun reveal_mesh(asset_manager: Pointer, asset: EntityId, mesh_name: String): Int
|
||||
fun ios_dummy()
|
||||
fun make_resource_loader(loadResourceFromOwner: LoadResourceFromOwner, freeResource: FreeResourceFromOwner, owner:Pointer?) : Pointer;
|
||||
fun make_resource_loader(loadResourceFromOwner: LoadFilamentResourceFromOwner, freeResource: FreeFilamentResourceFromOwner, owner:Pointer?) : Pointer;
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ import java.util.concurrent.Executors
|
||||
typealias EntityId = Int
|
||||
|
||||
/** PolyvoxFilamentPlugin */
|
||||
class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, LoadResourceFromOwner, FreeResourceFromOwner {
|
||||
class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, LoadFilamentResourceFromOwner, FreeFilamentResourceFromOwner {
|
||||
|
||||
private val lock = Object()
|
||||
|
||||
@@ -221,7 +221,7 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
"destroyViewer" -> {
|
||||
if (_viewer != null) {
|
||||
_lib.destroy_swap_chain(_viewer!!)
|
||||
_lib.delete_filament_viewer(_viewer!!)
|
||||
_lib.destroy_filament_viewer(_viewer!!)
|
||||
_viewer = null
|
||||
}
|
||||
result.success(true)
|
||||
@@ -249,7 +249,7 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
"createFilamentViewer" -> {
|
||||
if (_viewer != null) {
|
||||
_lib.destroy_swap_chain(_viewer!!)
|
||||
_lib.delete_filament_viewer(_viewer!!)
|
||||
_lib.destroy_filament_viewer(_viewer!!)
|
||||
_viewer = null
|
||||
}
|
||||
val resourceLoader = _lib.make_resource_loader(this, this, Pointer(0))
|
||||
|
||||
Reference in New Issue
Block a user