add camera utils to API

This commit is contained in:
Nick Fisher
2022-08-26 00:25:45 +10:00
parent d78f70ac50
commit d3faaac6c0
7 changed files with 84 additions and 11 deletions

View File

@@ -85,5 +85,10 @@ interface FilamentInterop : Library {
fun set_position(asset:Pointer, x:Float, y:Float, z:Float);
fun set_rotation(asset:Pointer, rads:Float, x:Float, y:Float, z:Float);
fun set_camera_position(asset:Pointer, x:Float, y:Float, z:Float);
fun set_camera_rotation(asset:Pointer, rads:Float, x:Float, y:Float, z:Float);
fun set_camera_focal_length(asset:Pointer, focalLength:Float);
fun set_camera_focus_distance(asset:Pointer, focusDistance:Float);
}

View File

@@ -212,9 +212,9 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
val args = call.arguments as ArrayList<Int>
val width = args[0]
val height = args[1]
val scale = if(args.size > 2) (args[2] as Double).toFloat() else 1.0f
surfaceTexture!!.setDefaultBufferSize(width, height)
_lib.update_viewport_and_camera_projection(_viewer!!, width, height, 1.0f);
_lib.update_viewport_and_camera_projection(_viewer!!, width, height, scale);
result.success(null)
}
}
@@ -291,6 +291,32 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
result.success("OK");
}
}
"setCameraPosition" -> {
executor.execute {
val args = call.arguments as ArrayList<*>
_lib.set_camera_position(_viewer!!, (args[0] as Double).toFloat(), (args[1] as Double).toFloat(), (args[2] as Double).toFloat())
result.success("OK");
}
}
"setCameraRotation" -> {
executor.execute {
val args = call.arguments as ArrayList<*>
_lib.set_camera_rotation(_viewer!!, (args[0] as Double).toFloat(), (args[1] as Double).toFloat(), (args[2] as Double).toFloat(), (args[3] as Double).toFloat())
result.success("OK");
}
}
"setCameraFocalLength" -> {
executor.execute {
_lib.set_camera_focal_length(_viewer!!, (call.arguments as Double).toFloat())
result.success("OK");
}
}
"setCameraFocusDistance" -> {
executor.execute {
_lib.set_camera_focus_distance(_viewer!!, (call.arguments as Double).toFloat())
result.success("OK");
}
}
"setTexture" -> {
executor.execute {
val args = call.arguments as ArrayList<*>
@@ -460,14 +486,13 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) {
channel.setMethodCallHandler(null)
//_lib.destroy_swap_chain(_viewer!!)
_lib.destroy_swap_chain(_viewer!!)
}
override fun onReattachedToActivityForConfigChanges(binding: ActivityPluginBinding) {
onAttachedToActivity(binding)
//_lib.create_swap_chain(_viewer!!, surface, JNIEnv.CURRENT)
_lib.create_swap_chain(_viewer!!, surface, JNIEnv.CURRENT)
}
override fun onDetachedFromActivityForConfigChanges() {