WIP on Android
This commit is contained in:
@@ -29,65 +29,65 @@ 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: Any?)
|
||||
fun get_asset_manager(viewer: Any?): Any?
|
||||
fun create_render_target(viewer: Any?, texture_id: Int, width: Int, height: Int)
|
||||
fun clear_background_image(viewer: Any?)
|
||||
fun set_background_image(viewer: Any?, path: String, fill_height: Boolean)
|
||||
fun set_background_image_position(viewer: Any?, x: Float, y: Float, clamp: Boolean)
|
||||
fun set_background_color(viewer: Any?, r: Float, g: Float, b: Float, a: Float)
|
||||
fun set_tone_mapping(viewer: Any?, tone_mapping: Int)
|
||||
fun set_bloom(viewer: Any?, strength: Float)
|
||||
fun load_skybox(viewer: Any?, skybox_path: String)
|
||||
fun load_ibl(viewer: Any?, ibl_path: String, intensity: Float)
|
||||
fun remove_skybox(viewer: Any?)
|
||||
fun remove_ibl(viewer: Any?)
|
||||
fun add_light(viewer: Any?, type: Byte, colour: Float, intensity: Float, pos_x: Float, pos_y: Float, pos_z: Float, dir_x: Float, dir_y: Float, dir_z: Float, shadows: Boolean): EntityId
|
||||
fun remove_light(viewer: Any?, entity_id: EntityId)
|
||||
fun clear_lights(viewer: Any?)
|
||||
fun load_glb(asset_manager: Any?, asset_path: String, unlit: Boolean): EntityId
|
||||
fun load_gltf(asset_manager: Any?, asset_path: String, relative_path: String): EntityId
|
||||
fun set_camera(viewer: Any?, asset: EntityId, node_name: String): Boolean
|
||||
fun render(viewer: Any?, frame_time_in_nanos: Long)
|
||||
fun delete_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)
|
||||
fun set_background_image(viewer: Pointer, path: String, fill_height: Boolean)
|
||||
fun set_background_image_position(viewer: Pointer, x: Float, y: Float, clamp: Boolean)
|
||||
fun set_background_color(viewer: Pointer, r: Float, g: Float, b: Float, a: Float)
|
||||
fun set_tone_mapping(viewer: Pointer, tone_mapping: Int)
|
||||
fun set_bloom(viewer: Pointer, strength: Float)
|
||||
fun load_skybox(viewer: Pointer, skybox_path: String)
|
||||
fun load_ibl(viewer: Pointer, ibl_path: String, intensity: Float)
|
||||
fun remove_skybox(viewer: Pointer)
|
||||
fun remove_ibl(viewer: Pointer)
|
||||
fun add_light(viewer: Pointer, type: Byte, colour: Float, intensity: Float, pos_x: Float, pos_y: Float, pos_z: Float, dir_x: Float, dir_y: Float, dir_z: Float, shadows: Boolean): EntityId
|
||||
fun remove_light(viewer: Pointer, entity_id: EntityId)
|
||||
fun clear_lights(viewer: Pointer)
|
||||
fun load_glb(asset_manager: Pointer, asset_path: String, unlit: Boolean): EntityId
|
||||
fun load_gltf(asset_manager: Pointer, asset_path: String, relative_path: String): EntityId
|
||||
fun set_camera(viewer: Pointer, asset: EntityId, node_name: String): Boolean
|
||||
fun render(viewer: Pointer, frame_time_in_nanos: Long)
|
||||
|
||||
fun destroy_swap_chain(viewer: Any?)
|
||||
fun set_frame_interval(viewer: Any?, interval: Float)
|
||||
fun update_viewport_and_camera_projection(viewer: Any?, width: UInt, height: UInt, scale_factor: Float)
|
||||
fun scroll_begin(viewer: Any?)
|
||||
fun scroll_update(viewer: Any?, x: Float, y: Float, z: Float)
|
||||
fun scroll_end(viewer: Any?)
|
||||
fun grab_begin(viewer: Any?, x: Float, y: Float, pan: Boolean)
|
||||
fun grab_update(viewer: Any?, x: Float, y: Float)
|
||||
fun grab_end(viewer: Any?)
|
||||
fun apply_weights(asset_manager: Any?, asset: EntityId, entity_name: String, weights: FloatArray, count: Int)
|
||||
fun set_morph_target_weights(asset_manager: Any?, asset: EntityId, entity_name: String, morph_data: FloatArray, num_weights: Int)
|
||||
fun set_morph_animation(asset_manager: Any?, asset: EntityId, entity_name: String, morph_data: FloatArray, morph_indices: IntArray, num_morph_targets: Int, num_frames: Int, frame_length_in_ms: Int): Boolean
|
||||
fun set_bone_animation(asset_manager: Any?, asset: EntityId, frame_data: FloatArray, num_frames: Int, num_bones: Int, bone_names: Array<String>, mesh_name: Array<String>, num_mesh_targets: Int, frame_length_in_ms: Int)
|
||||
fun play_animation(asset_manager: Any?, asset: EntityId, index: Int, loop: Boolean, reverse: Boolean, replace_active: Boolean, crossfade: Float)
|
||||
fun set_animation_frame(asset_manager: Any?, asset: EntityId, animation_index: Int, animation_frame: Int)
|
||||
fun stop_animation(asset_manager: Any?, asset: EntityId, index: Int)
|
||||
fun get_animation_count(asset_manager: Any?, asset: EntityId): Int
|
||||
fun get_animation_name(asset_manager: Any?, asset: EntityId, out_ptr: String, index: Int)
|
||||
fun get_animation_duration(asset_manager: Any?, asset: EntityId, index: Int): Float
|
||||
fun get_morph_target_name(asset_manager: Any?, asset: EntityId, mesh_name: String, out_ptr: String, index: Int)
|
||||
fun get_morph_target_name_count(asset_manager: Any?, asset: EntityId, mesh_name: String): Int
|
||||
fun remove_asset(viewer: Any?, asset: EntityId)
|
||||
fun clear_assets(viewer: Any?)
|
||||
fun load_texture(asset_manager: Any?, asset: EntityId, asset_path: String, renderable_index: Int)
|
||||
fun set_texture(asset_manager: Any?, asset: EntityId)
|
||||
fun set_material_color(asset_manager: Any?, asset: EntityId, mesh_name: String, material_index: Int, r: Float, g: Float, b: Float, a: Float): Boolean
|
||||
fun transform_to_unit_cube(asset_manager: Any?, asset: EntityId)
|
||||
fun set_position(asset_manager: Any?, asset: EntityId, x: Float, y: Float, z: Float)
|
||||
fun set_rotation(asset_manager: Any?, asset: EntityId, rads: Float, x: Float, y: Float, z: Float)
|
||||
fun set_scale(asset_manager: Any?, asset: EntityId, scale: Float)
|
||||
fun set_camera_exposure(viewer: Any?, aperture: Float, shutter_speed: Float, sensitivity: Float)
|
||||
fun set_camera_position(viewer: Any?, x: Float, y: Float, z: Float)
|
||||
fun set_camera_rotation(viewer: Any?, rads: Float, x: Float, y: Float, z: Float)
|
||||
fun set_camera_model_matrix(viewer: Any?, matrix: FloatArray)
|
||||
fun set_camera_focal_length(viewer: Any?, focal_length: Float)
|
||||
fun set_camera_focus_distance(viewer: Any?, focus_distance: Float)
|
||||
fun hide_mesh(asset_manager: Any?, asset: EntityId, mesh_name: String): Int
|
||||
fun reveal_mesh(asset_manager: Any?, asset: EntityId, mesh_name: String): Int
|
||||
fun destroy_swap_chain(viewer: Pointer)
|
||||
fun set_frame_interval(viewer: Pointer, interval: Float)
|
||||
fun update_viewport_and_camera_projection(viewer: Pointer, width: UInt, height: UInt, scale_factor: Float)
|
||||
fun scroll_begin(viewer: Pointer)
|
||||
fun scroll_update(viewer: Pointer, x: Float, y: Float, z: Float)
|
||||
fun scroll_end(viewer: Pointer)
|
||||
fun grab_begin(viewer: Pointer, x: Float, y: Float, pan: Boolean)
|
||||
fun grab_update(viewer: Pointer, x: Float, y: Float)
|
||||
fun grab_end(viewer: Pointer)
|
||||
fun apply_weights(asset_manager: Pointer, asset: EntityId, entity_name: String, weights: FloatArray, count: Int)
|
||||
fun set_morph_target_weights(asset_manager: Pointer, asset: EntityId, entity_name: String, morph_data: FloatArray, num_weights: Int)
|
||||
fun set_morph_animation(asset_manager: Pointer, asset: EntityId, entity_name: String, morph_data: FloatArray, morph_indices: IntArray, num_morph_targets: Int, num_frames: Int, frame_length_in_ms: Int): Boolean
|
||||
fun set_bone_animation(asset_manager: Pointer, asset: EntityId, frame_data: FloatArray, num_frames: Int, num_bones: Int, bone_names: Array<String>, mesh_name: Array<String>, num_mesh_targets: Int, frame_length_in_ms: Int)
|
||||
fun play_animation(asset_manager: Pointer, asset: EntityId, index: Int, loop: Boolean, reverse: Boolean, replace_active: Boolean, crossfade: Float)
|
||||
fun set_animation_frame(asset_manager: Pointer, asset: EntityId, animation_index: Int, animation_frame: Int)
|
||||
fun stop_animation(asset_manager: Pointer, asset: EntityId, index: Int)
|
||||
fun get_animation_count(asset_manager: Pointer, asset: EntityId): Int
|
||||
fun get_animation_name(asset_manager: Pointer, asset: EntityId, out_ptr: String, index: Int)
|
||||
fun get_animation_duration(asset_manager: Pointer, asset: EntityId, index: Int): Float
|
||||
fun get_morph_target_name(asset_manager: Pointer, asset: EntityId, mesh_name: String, out_ptr: String, index: Int)
|
||||
fun get_morph_target_name_count(asset_manager: Pointer, asset: EntityId, mesh_name: String): Int
|
||||
fun remove_asset(viewer: Pointer, asset: EntityId)
|
||||
fun clear_assets(viewer: Pointer)
|
||||
fun load_texture(asset_manager: Pointer, asset: EntityId, asset_path: String, renderable_index: Int)
|
||||
fun set_texture(asset_manager: Pointer, asset: EntityId)
|
||||
fun set_material_color(asset_manager: Pointer, asset: EntityId, mesh_name: String, material_index: Int, r: Float, g: Float, b: Float, a: Float): Boolean
|
||||
fun transform_to_unit_cube(asset_manager: Pointer, asset: EntityId)
|
||||
fun set_position(asset_manager: Pointer, asset: EntityId, x: Float, y: Float, z: Float)
|
||||
fun set_rotation(asset_manager: Pointer, asset: EntityId, rads: Float, x: Float, y: Float, z: Float)
|
||||
fun set_scale(asset_manager: Pointer, asset: EntityId, scale: Float)
|
||||
fun set_camera_exposure(viewer: Pointer, aperture: Float, shutter_speed: Float, sensitivity: Float)
|
||||
fun set_camera_position(viewer: Pointer, x: Float, y: Float, z: Float)
|
||||
fun set_camera_rotation(viewer: Pointer, rads: Float, x: Float, y: Float, z: Float)
|
||||
fun set_camera_model_matrix(viewer: Pointer, matrix: FloatArray)
|
||||
fun set_camera_focal_length(viewer: Pointer, focal_length: Float)
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ class HotReloadPathHelper {
|
||||
companion object {
|
||||
fun getAssetPath(path: String, packageName: String): String? {
|
||||
val packagePath = "/data/user/0/${packageName}/code_cache/"
|
||||
Log.v("FFI", "Looking for path ${path} under package path ${packagePath}")
|
||||
Log.v("polyvox_filament", "Looking for hot reloaded asset ${path} under package path ${packagePath}")
|
||||
val files = File(packagePath).walkBottomUp().filter {
|
||||
it.path.endsWith(path)
|
||||
}.sortedBy {
|
||||
|
||||
@@ -220,8 +220,8 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
}
|
||||
"destroyViewer" -> {
|
||||
if (_viewer != null) {
|
||||
_lib.destroy_swap_chain(_viewer)
|
||||
_lib.delete_filament_viewer(_viewer)
|
||||
_lib.destroy_swap_chain(_viewer!!)
|
||||
_lib.delete_filament_viewer(_viewer!!)
|
||||
_viewer = null
|
||||
}
|
||||
result.success(true)
|
||||
@@ -233,7 +233,7 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
}
|
||||
val wasRendering = _rendering;
|
||||
_rendering = false
|
||||
_lib.destroy_swap_chain(_viewer)
|
||||
_lib.destroy_swap_chain(_viewer!!)
|
||||
val args = call.arguments as List<Any>
|
||||
val width = 100 // args[0] as Int
|
||||
val height = 100 // args[1] as Int
|
||||
@@ -248,8 +248,8 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
}
|
||||
"createFilamentViewer" -> {
|
||||
if (_viewer != null) {
|
||||
_lib.destroy_swap_chain(_viewer)
|
||||
_lib.delete_filament_viewer(_viewer)
|
||||
_lib.destroy_swap_chain(_viewer!!)
|
||||
_lib.delete_filament_viewer(_viewer!!)
|
||||
_viewer = null
|
||||
}
|
||||
val resourceLoader = _lib.make_resource_loader(this, this, Pointer(0))
|
||||
@@ -260,24 +260,23 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
// _glContext!!.nativeHandle,
|
||||
// resourceLoader)
|
||||
val args = call.arguments as List<Any>
|
||||
var width = 100.0 // args[0] as Double
|
||||
val height = 100.0 // args[1] as Double
|
||||
// if(width < 1 || height < 1) {
|
||||
// result.error("DIMENSION_MISMATCH","Both dimensions must be greater than zero", null);
|
||||
// return;
|
||||
// }
|
||||
var width = args[0] as Double
|
||||
val height = args[1] as Double
|
||||
if(width < 1 || height < 1) {
|
||||
result.error("DIMENSION_MISMATCH","Both dimensions must be greater than zero", null);
|
||||
return;
|
||||
}
|
||||
_lib.create_swap_chain(_viewer!!, nativeWindow, width.toInt(), height.toInt())
|
||||
// _lib.create_swap_chain(_viewer!!, null, width.toInt(), height.toInt())
|
||||
// _lib.create_render_target(_viewer, _glTextureId, width.toInt(),height.toInt());
|
||||
// _lib.create_render_target(_viewer!!, _glTextureId, width.toInt(),height.toInt());
|
||||
result.success(Pointer.nativeValue(_viewer!!))
|
||||
|
||||
}
|
||||
"getAssetManager" -> {
|
||||
val assetManager = _lib.get_asset_manager(_viewer)
|
||||
result.success(assetManager)
|
||||
val assetManager = _lib.get_asset_manager(_viewer!!)
|
||||
result.success(assetManager!!)
|
||||
}
|
||||
"clearBackgroundImage" -> {
|
||||
_lib.clear_background_image(_viewer)
|
||||
_lib.clear_background_image(_viewer!!)
|
||||
result.success(true)
|
||||
}
|
||||
"setBackgroundImage" -> {
|
||||
@@ -285,44 +284,44 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
|
||||
val path = args[0] as String
|
||||
val fillHeight = args[1] as Boolean
|
||||
_lib.set_background_image(_viewer, path, fillHeight)
|
||||
_lib.set_background_image(_viewer!!, path, fillHeight)
|
||||
result.success(true)
|
||||
}
|
||||
"setBackgroundImagePosition" -> {
|
||||
val args = call.arguments as List<*>
|
||||
_lib.set_background_image_position(_viewer, args[0] as Float, args[1] as Float, args[2] as Boolean)
|
||||
_lib.set_background_image_position(_viewer!!, args[0] as Float, args[1] as Float, args[2] as Boolean)
|
||||
result.success(true)
|
||||
}
|
||||
"setBackgroundColor" -> {
|
||||
val args = call.arguments as List<Double>
|
||||
_lib.set_background_color(_viewer, args[0].toFloat(), args[1].toFloat(), args[2].toFloat(), args[3].toFloat())
|
||||
_lib.set_background_color(_viewer!!, args[0].toFloat(), args[1].toFloat(), args[2].toFloat(), args[3].toFloat())
|
||||
result.success(true)
|
||||
}
|
||||
"setToneMapping" -> {
|
||||
val args = call.arguments as Int
|
||||
_lib.set_tone_mapping(_viewer, args);
|
||||
_lib.set_tone_mapping(_viewer!!, args);
|
||||
result.success(true)
|
||||
}
|
||||
"setBloom" -> {
|
||||
val args = call.arguments as Float
|
||||
_lib.set_bloom(_viewer, args as Float);
|
||||
_lib.set_bloom(_viewer!!, args as Float);
|
||||
result.success(true)
|
||||
}
|
||||
"loadSkybox" -> {
|
||||
_lib.load_skybox(_viewer, call.arguments as String)
|
||||
_lib.load_skybox(_viewer!!, call.arguments as String)
|
||||
result.success(true)
|
||||
}
|
||||
"loadIbl" -> {
|
||||
val args = call.arguments as List<*>
|
||||
_lib.load_ibl(_viewer, args[0] as String, args[1] as Float)
|
||||
_lib.load_ibl(_viewer!!, args[0] as String, args[1] as Float)
|
||||
result.success(true)
|
||||
}
|
||||
"removeSkybox" -> {
|
||||
_lib.remove_skybox(_viewer)
|
||||
_lib.remove_skybox(_viewer!!)
|
||||
result.success(true)
|
||||
}
|
||||
"removeIbl" -> {
|
||||
_lib.remove_ibl(_viewer)
|
||||
_lib.remove_ibl(_viewer!!)
|
||||
result.success(true)
|
||||
}
|
||||
"addLight" -> {
|
||||
@@ -339,52 +338,51 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
val dirZ = args[8] as Float
|
||||
val shadows = args[9] as Boolean
|
||||
|
||||
val entityId = _lib.add_light(_viewer, type, colour as Float, intensity as Float,posX as Float, posY as Float, posZ as Float, dirX as Float, dirY as Float, dirZ as Float, shadows)
|
||||
val entityId = _lib.add_light(_viewer!!, type, colour as Float, intensity as Float,posX as Float, posY as Float, posZ as Float, dirX as Float, dirY as Float, dirZ as Float, shadows)
|
||||
result.success(entityId)
|
||||
}
|
||||
}
|
||||
"removeLight" -> {
|
||||
_lib.remove_light(_viewer, call.arguments as Int)
|
||||
_lib.remove_light(_viewer!!, call.arguments as Int)
|
||||
result.success(true)
|
||||
}
|
||||
"clearLights" -> {
|
||||
_lib.clear_lights(_viewer)
|
||||
_lib.clear_lights(_viewer!!)
|
||||
result.success(true)
|
||||
}
|
||||
"loadGlb" -> {
|
||||
val args = call.arguments as List<Any>
|
||||
if (args.size != 3) {
|
||||
result.error("INVALID_ARGUMENTS", "Expected assetManager, assetPath, and unlit for load_glb", null)
|
||||
result.error("INVALID_ARGUMENTS", "Expected assetManager!!, assetPath, and unlit for load_glb", null)
|
||||
return
|
||||
}
|
||||
val assetManager = args[0] as Int
|
||||
val assetManager = Pointer((args[0] as Int).toLong())
|
||||
val assetPath = args[1] as String
|
||||
val unlit = args[2] as Boolean
|
||||
val entityId =_lib.load_glb(assetManager, assetPath, unlit)
|
||||
val entityId =_lib.load_glb(assetManager!!, assetPath, unlit)
|
||||
result.success(entityId)
|
||||
}
|
||||
"loadGltf" -> {
|
||||
val args = call.arguments as List<Any>
|
||||
if (args.size != 3) {
|
||||
result.error("INVALID_ARGUMENTS", "Expected assetManager, assetPath, and relativePath for load_gltf", null)
|
||||
result.error("INVALID_ARGUMENTS", "Expected assetManager!!, assetPath, and relativePath for load_gltf", null)
|
||||
return
|
||||
}
|
||||
val assetManager = args[0] as Int
|
||||
val assetManager = Pointer((args[0] as Int).toLong())
|
||||
val assetPath = args[1] as String
|
||||
val relativePath = args[2] as String
|
||||
val entityId =_lib.load_gltf(assetManager, assetPath, relativePath)
|
||||
val entityId =_lib.load_gltf(assetManager!!, assetPath, relativePath)
|
||||
result.success(entityId)
|
||||
}
|
||||
"transformToUnitCube" -> {
|
||||
val args = call.arguments as List<Any>
|
||||
_lib.transform_to_unit_cube(args[0] as Int, args[1] as EntityId)
|
||||
val assetManager = Pointer((args[0] as Int).toLong())
|
||||
val entityId = args[1] as EntityId
|
||||
_lib.transform_to_unit_cube(assetManager, entityId)
|
||||
result.success(true)
|
||||
}
|
||||
"render" -> {
|
||||
// val canvas = _surface!!.lockHardwareCanvas()
|
||||
// canvas.drawColor(Color.BLUE)
|
||||
// _surface!!.unlockCanvasAndPost(canvas)
|
||||
_lib.render(_viewer, 0)
|
||||
_lib.render(_viewer!!, 0)
|
||||
// _surfaceTexture!!.updateTexImage()
|
||||
result.success(true)
|
||||
}
|
||||
@@ -394,7 +392,7 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
}
|
||||
"setFrameInterval" -> {
|
||||
if (_viewer != null) {
|
||||
_lib.set_frame_interval(_viewer, call.arguments as Float)
|
||||
_lib.set_frame_interval(_viewer!!, call.arguments as Float)
|
||||
}
|
||||
result.success(true)
|
||||
}
|
||||
@@ -403,11 +401,11 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
val width = args[0] as Int
|
||||
val height = args[1] as Int
|
||||
val scaleFactor = args[2] as Double
|
||||
// _lib.update_viewport_and_camera_projection(_viewer, width.toUInt(), height.toUInt(), scaleFactor.toFloat())
|
||||
// _lib.update_viewport_and_camera_projection(_viewer!!, width.toUInt(), height.toUInt(), scaleFactor.toFloat())
|
||||
result.success(true)
|
||||
}
|
||||
"scrollBegin" -> {
|
||||
_lib.scroll_begin(_viewer)
|
||||
_lib.scroll_begin(_viewer!!)
|
||||
result.success(true)
|
||||
}
|
||||
"scrollUpdate" -> {
|
||||
@@ -419,11 +417,11 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
val x = args[0] as Float
|
||||
val y = args[1] as Float
|
||||
val z = args[2] as Float
|
||||
_lib.scroll_update(_viewer, x.toFloat(), y.toFloat(), z.toFloat())
|
||||
_lib.scroll_update(_viewer!!, x.toFloat(), y.toFloat(), z.toFloat())
|
||||
result.success(true)
|
||||
}
|
||||
"scrollEnd" -> {
|
||||
_lib.scroll_end(_viewer)
|
||||
_lib.scroll_end(_viewer!!)
|
||||
result.success(true)
|
||||
}
|
||||
"grabBegin" -> {
|
||||
@@ -435,7 +433,7 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
val x = args[0] as Float
|
||||
val y = args[1] as Float
|
||||
val pan = args[2] as Boolean
|
||||
_lib.grab_begin(_viewer, x.toFloat(), y.toFloat(), pan)
|
||||
_lib.grab_begin(_viewer!!, x.toFloat(), y.toFloat(), pan)
|
||||
result.success(true)
|
||||
}
|
||||
"grabUpdate" -> {
|
||||
@@ -446,11 +444,11 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
}
|
||||
val x = args[0] as Float
|
||||
val y = args[1] as Float
|
||||
_lib.grab_update(_viewer, x.toFloat(), y.toFloat())
|
||||
_lib.grab_update(_viewer!!, x.toFloat(), y.toFloat())
|
||||
result.success(true)
|
||||
}
|
||||
"grabEnd" -> {
|
||||
_lib.grab_end(_viewer)
|
||||
_lib.grab_end(_viewer!!)
|
||||
result.success(true)
|
||||
}
|
||||
"applyWeights" -> {
|
||||
@@ -464,19 +462,19 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
// result.success(FlutterError(code: "INVALID_ARGUMENTS", message: "Expected correct arguments for apply_weights", details: nil))
|
||||
// return
|
||||
// }
|
||||
// _lib.apply_weights(assetManager, asset, entityName, UnsafeMutablePointer(&weights), count)
|
||||
// _lib.apply_weights(assetManager!!, asset, entityName, UnsafeMutablePointer(&weights), count)
|
||||
result.success(true)
|
||||
}
|
||||
"setMorphTargetWeights" -> {
|
||||
val args = call.arguments as List<Any>
|
||||
val assetManager = args[0] as Int
|
||||
val assetManager = Pointer((args[0] as Int).toLong())
|
||||
val asset = args[1] as Int
|
||||
val entityName = args[2] as String
|
||||
val morphData = args[3] as List<Double>
|
||||
val numMorphWeights = args[4] as Int
|
||||
|
||||
_lib.set_morph_target_weights(
|
||||
assetManager,
|
||||
assetManager!!,
|
||||
asset,
|
||||
entityName,
|
||||
morphData.map { it.toFloat() }.toFloatArray(),
|
||||
@@ -487,7 +485,7 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
}
|
||||
"setMorphAnimation" -> {
|
||||
val args = call.arguments as List<Any>
|
||||
val assetManager = args[0] as Int
|
||||
val assetManager = Pointer((args[0] as Int).toLong())
|
||||
val asset = args[1] as Int
|
||||
val entityName = args[2] as String
|
||||
val morphData = args[3] as List<Double>
|
||||
@@ -499,7 +497,7 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
val frameData = morphData.map { it.toFloat() }
|
||||
|
||||
val success =_lib.set_morph_animation(
|
||||
assetManager,
|
||||
assetManager!!,
|
||||
asset,
|
||||
entityName,
|
||||
frameData.toFloatArray(),
|
||||
@@ -516,7 +514,7 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
result.error("INVALID_ARGUMENTS", "Expected correct arguments for set_bone_animation", null)
|
||||
return
|
||||
}
|
||||
val assetManager = args[0] as Int
|
||||
val assetManager = Pointer((args[0] as Int).toLong())
|
||||
val asset = args[1] as Int
|
||||
val frameData = args[2] as FloatArray
|
||||
val numFrames = args[3] as Int
|
||||
@@ -525,7 +523,7 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
val meshNames = args[6] as Array<String>
|
||||
val numMeshTargets = args[7] as Int
|
||||
val frameLengthInMs = args[8] as Int
|
||||
_lib.set_bone_animation(assetManager, asset, frameData, numFrames, numBones, boneNames, meshNames, numMeshTargets, frameLengthInMs)
|
||||
_lib.set_bone_animation(assetManager!!, asset, frameData, numFrames, numBones, boneNames, meshNames, numMeshTargets, frameLengthInMs)
|
||||
result.success(true)
|
||||
}
|
||||
"playAnimation" -> {
|
||||
@@ -534,14 +532,14 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
result.error("INVALID_ARGUMENTS", "Expected correct arguments for play_animation", null)
|
||||
return
|
||||
}
|
||||
val assetManager = args[0] as Int
|
||||
val assetManager = Pointer((args[0] as Int).toLong())
|
||||
val asset = args[1] as Int
|
||||
val index = args[2] as Int
|
||||
val loop = args[3] as Boolean
|
||||
val reverse = args[4] as Boolean
|
||||
val replaceActive = args[5] as Boolean
|
||||
val crossfade = args[6] as Float
|
||||
_lib.play_animation(assetManager, asset, index, loop, reverse, replaceActive, crossfade.toFloat())
|
||||
_lib.play_animation(assetManager!!, asset, index, loop, reverse, replaceActive, crossfade.toFloat())
|
||||
result.success(true)
|
||||
}
|
||||
"getAnimationDuration" -> {
|
||||
@@ -550,11 +548,11 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
result.error("INVALID_ARGUMENTS", "Expected correct arguments for getAnimationDuration", null)
|
||||
return
|
||||
}
|
||||
val assetManager = args[0] as Int
|
||||
val assetManager = Pointer((args[0] as Int).toLong())
|
||||
val asset = args[1] as Int
|
||||
val animationIndex = args[2] as Int
|
||||
|
||||
val dur =_lib.get_animation_duration(assetManager, asset, animationIndex)
|
||||
val dur =_lib.get_animation_duration(assetManager!!, asset, animationIndex)
|
||||
result.success(dur)
|
||||
}
|
||||
"setAnimationFrame" -> {
|
||||
@@ -563,12 +561,12 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
result.error("INVALID_ARGUMENTS", "Expected correct arguments for set_animation_frame", null)
|
||||
return
|
||||
}
|
||||
val assetManager = args[0] as Int
|
||||
val assetManager = Pointer((args[0] as Int).toLong())
|
||||
val asset = args[1] as Int
|
||||
val animationIndex = args[2] as Int
|
||||
val animationFrame = args[3] as Int
|
||||
|
||||
_lib.set_animation_frame(assetManager, asset, animationIndex, animationFrame)
|
||||
_lib.set_animation_frame(assetManager!!, asset, animationIndex, animationFrame)
|
||||
result.success(true)
|
||||
}
|
||||
"stopAnimation" -> {
|
||||
@@ -577,10 +575,10 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
result.error("INVALID_ARGUMENTS", "Expected correct arguments for stop_animation", null)
|
||||
return
|
||||
}
|
||||
val assetManager = args[0] as Int
|
||||
val assetManager = Pointer((args[0] as Int).toLong())
|
||||
val asset = args[1] as Int
|
||||
val index = args[2] as Int
|
||||
_lib.stop_animation(assetManager, asset, index)
|
||||
_lib.stop_animation(assetManager!!, asset, index)
|
||||
result.success(true)
|
||||
}
|
||||
"getAnimationCount" -> {
|
||||
@@ -589,9 +587,9 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
result.error("INVALID_ARGUMENTS", "Expected correct arguments for get_animation_count", null)
|
||||
return
|
||||
}
|
||||
val assetManager = args[0] as Int
|
||||
val assetManager = Pointer((args[0] as Int).toLong())
|
||||
val asset = args[1] as Int
|
||||
val count =_lib.get_animation_count(assetManager, asset)
|
||||
val count =_lib.get_animation_count(assetManager!!, asset)
|
||||
result.success(count)
|
||||
}
|
||||
"getAnimationNames" -> {
|
||||
@@ -600,13 +598,13 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
result.error("INVALID_ARGUMENTS", "Expected correct arguments for get_animation_name", null)
|
||||
return
|
||||
}
|
||||
val assetManager = args[0] as Int
|
||||
val assetManager = Pointer((args[0] as Int).toLong())
|
||||
val asset = args[1] as Int
|
||||
val names = mutableListOf<String>()
|
||||
val count =_lib.get_animation_count(assetManager, asset)
|
||||
val count =_lib.get_animation_count(assetManager!!, asset)
|
||||
val buffer = "" // Assuming max name length of 256 for simplicity
|
||||
for (i in 0 until count) {
|
||||
_lib.get_animation_name(assetManager, asset, buffer, i)
|
||||
_lib.get_animation_name(assetManager!!, asset, buffer, i)
|
||||
names.add(buffer)
|
||||
}
|
||||
result.success(names)
|
||||
@@ -617,11 +615,11 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
result.error("INVALID_ARGUMENTS", "Expected correct arguments for get_animation_name", null)
|
||||
return
|
||||
}
|
||||
val assetManager = args[0] as Int
|
||||
val assetManager = Pointer((args[0] as Int).toLong())
|
||||
val asset = args[1] as Int
|
||||
val index = args[2] as Int
|
||||
val buffer = "" // Assuming max name length of 256 for simplicity
|
||||
_lib.get_animation_name(assetManager, asset, buffer, index)
|
||||
_lib.get_animation_name(assetManager!!, asset, buffer, index)
|
||||
val name = buffer
|
||||
result.success(name)
|
||||
}
|
||||
@@ -631,13 +629,13 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
result.error("INVALID_ARGUMENTS", "Expected correct arguments for get_morph_target_name", null)
|
||||
return
|
||||
}
|
||||
val assetManager = args[0] as? Long ?: return
|
||||
val assetManager = Pointer((args[0] as Int).toLong())
|
||||
val asset = args[1] as? EntityId ?: return
|
||||
val meshName = args[2] as? String ?: return
|
||||
val index = args[3] as? Int ?: return
|
||||
|
||||
val buffer = "" // Assuming max name length of 256 for simplicity
|
||||
_lib.get_morph_target_name(assetManager, asset, meshName, buffer, index)
|
||||
_lib.get_morph_target_name(assetManager!!, asset, meshName, buffer, index)
|
||||
val targetName = buffer
|
||||
result.success(targetName)
|
||||
}
|
||||
@@ -647,16 +645,17 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
result.error("INVALID_ARGUMENTS", "Expected correct arguments for get_morph_target_names", null)
|
||||
return
|
||||
}
|
||||
val assetManager = args[0] as? Long ?: return
|
||||
val assetManager = Pointer((args[0] as Int).toLong())
|
||||
|
||||
val asset = args[1] as? EntityId ?: return
|
||||
val meshName = args[2] as? String ?: return
|
||||
|
||||
val count =_lib.get_morph_target_name_count(assetManager, asset, meshName)
|
||||
val count =_lib.get_morph_target_name_count(assetManager!!, asset, meshName)
|
||||
val names = ArrayList<String>()
|
||||
if (count > 0) {
|
||||
for (i in 0 until count) {
|
||||
val buffer = "" // Assuming max name length of 256 for simplicity
|
||||
_lib.get_morph_target_name(assetManager, asset, meshName, buffer, i)
|
||||
_lib.get_morph_target_name(assetManager!!, asset, meshName, buffer, i)
|
||||
names.add(buffer)
|
||||
}
|
||||
}
|
||||
@@ -668,18 +667,18 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
result.error("INVALID_ARGUMENTS", "Expected correct arguments for getMorphTargetNameCount", null)
|
||||
return
|
||||
}
|
||||
val assetManager = args[0] as Int
|
||||
val assetManager = Pointer((args[0] as Int).toLong())
|
||||
val asset = args[1] as Int
|
||||
val meshName = args[2] as String
|
||||
val count =_lib.get_morph_target_name_count(assetManager, asset, meshName)
|
||||
val count =_lib.get_morph_target_name_count(assetManager!!, asset, meshName)
|
||||
result.success(count)
|
||||
}
|
||||
"removeAsset" -> {
|
||||
_lib.remove_asset(_viewer, call.arguments as Int)
|
||||
_lib.remove_asset(_viewer!!, call.arguments as Int)
|
||||
result.success(true)
|
||||
}
|
||||
"clearAssets" -> {
|
||||
_lib.clear_assets(_viewer)
|
||||
_lib.clear_assets(_viewer!!)
|
||||
result.success(true)
|
||||
}
|
||||
"setCamera" -> {
|
||||
@@ -690,30 +689,30 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
}
|
||||
val asset = args[0] as Int
|
||||
val nodeName = args[1] as String
|
||||
val success =_lib.set_camera(_viewer, asset, nodeName)
|
||||
val success =_lib.set_camera(_viewer!!, asset, nodeName)
|
||||
result.success(success)
|
||||
}
|
||||
"setCameraPosition" -> {
|
||||
val args = call.arguments as List<*>
|
||||
_lib.set_camera_position(_viewer, (args[0] as Float).toFloat(), (args[1] as Float).toFloat(), (args[2] as Float).toFloat())
|
||||
_lib.set_camera_position(_viewer!!, (args[0] as Float).toFloat(), (args[1] as Float).toFloat(), (args[2] as Float).toFloat())
|
||||
result.success(true)
|
||||
}
|
||||
"setCameraRotation" -> {
|
||||
val args = call.arguments as List<*>
|
||||
_lib.set_camera_rotation(_viewer, args[0] as Float, args[1] as Float, args[2] as Float, args[3] as Float)
|
||||
_lib.set_camera_rotation(_viewer!!, args[0] as Float, args[1] as Float, args[2] as Float, args[3] as Float)
|
||||
result.success(true)
|
||||
}
|
||||
"setCameraModelMatrix" -> {
|
||||
val matrix = call.arguments as List<Float>
|
||||
_lib.set_camera_model_matrix(_viewer, matrix.toFloatArray())
|
||||
_lib.set_camera_model_matrix(_viewer!!, matrix.toFloatArray())
|
||||
result.success(true)
|
||||
}
|
||||
"setCameraFocalLength" -> {
|
||||
_lib.set_camera_focal_length(_viewer, call.arguments as Float)
|
||||
_lib.set_camera_focal_length(_viewer!!, call.arguments as Float)
|
||||
result.success(true)
|
||||
}
|
||||
"setCameraFocusDistance" -> {
|
||||
_lib.set_camera_focus_distance(_viewer, call.arguments as Float)
|
||||
_lib.set_camera_focus_distance(_viewer!!, call.arguments as Float)
|
||||
result.success(true)
|
||||
}
|
||||
"setMaterialColor" -> {
|
||||
@@ -759,7 +758,7 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware, Lo
|
||||
var _ptr:Pointer = Pointer(0)
|
||||
|
||||
override fun loadResourceFromOwner(path: String?, owner: Pointer?): ResourceBuffer {
|
||||
Log.i("Loading resource from path $path")
|
||||
Log.i("polyvox_filament", "Loading resource from path $path")
|
||||
var data:ByteArray? = null
|
||||
if(path!!.startsWith("file://")) {
|
||||
data = File(path!!.substring(6)).readBytes()
|
||||
|
||||
@@ -77,5 +77,5 @@ dependencies {
|
||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2"
|
||||
implementation "androidx.annotation:annotation:1.3.0"
|
||||
implementation "androidx.core:core:1.7.0"
|
||||
compile 'net.java.dev.jna:jna:5.10.0@aar'
|
||||
implementation 'net.java.dev.jna:jna:5.10.0@aar'
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user