android bindings for new camera/manipulator

This commit is contained in:
Nick Fisher
2022-09-01 13:04:25 +10:00
parent 822d938653
commit f68fea29d8
2 changed files with 23 additions and 10 deletions

View File

@@ -46,11 +46,11 @@ interface FilamentInterop : Library {
fun update_viewport_and_camera_projection(viewer:Pointer, width:Int, height:Int, scaleFactor:Float); fun update_viewport_and_camera_projection(viewer:Pointer, width:Int, height:Int, scaleFactor:Float);
fun scroll(viewer:Pointer, x:Float, y:Float, z:Float); fun scroll(viewer:Pointer, x:Float, y:Float, delta:Float);
fun grab_begin(viewer:Pointer, x:Int, y:Int, pan:Boolean) fun grab_begin(viewer:Pointer, x:Float, y:Float, pan:Boolean)
fun grab_update(viewer:Pointer, x:Int, y:Int) fun grab_update(viewer:Pointer, x:Float, y:Float)
fun grab_end(viewer:Pointer) fun grab_end(viewer:Pointer)
@@ -90,5 +90,6 @@ interface FilamentInterop : Library {
fun set_camera_rotation(asset:Pointer, rads:Float, 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_focal_length(asset:Pointer, focalLength:Float);
fun set_camera_focus_distance(asset:Pointer, focusDistance:Float); fun set_camera_focus_distance(asset:Pointer, focusDistance:Float);
fun set_scale(asset:Pointer, scale:Float);
} }

View File

@@ -283,6 +283,14 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
result.success("OK"); result.success("OK");
} }
} }
"setScale" -> {
executor.execute {
val args = call.arguments as ArrayList<*>
val assetPtr = Pointer(args[0] as Long)
_lib.set_scale(assetPtr, (args[1] as Double).toFloat())
result.success("OK");
}
}
"setRotation" -> { "setRotation" -> {
executor.execute { executor.execute {
val args = call.arguments as ArrayList<*> val args = call.arguments as ArrayList<*>
@@ -344,7 +352,8 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
} }
"zoom" -> { "zoom" -> {
executor.execute { executor.execute {
_lib.scroll(_viewer!!, 0.0f, 0.0f, (call.arguments as Double).toFloat()) val args = call.arguments as ArrayList<*>
_lib.scroll(_viewer!!, (args[0] as Double).toFloat(), (args[1] as Double).toFloat(), (args[2] as Double).toFloat())
result.success("OK"); result.success("OK");
} }
} }
@@ -402,14 +411,17 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
"panStart" -> { "panStart" -> {
executor.execute { executor.execute {
val args = call.arguments as ArrayList<Any?> val args = call.arguments as ArrayList<Any?>
_lib.grab_begin(_viewer!!, args[0] as Int, args[1] as Int, true) _lib.grab_begin(_viewer!!, (args[0] as Double).toFloat(), (args[1] as Double).toFloat(), true)
result.success("OK"); result.success("OK");
} }
} }
"panUpdate" -> { "panUpdate" -> {
executor.execute { executor.execute {
val args = call.arguments as ArrayList<Any?> val args = call.arguments as ArrayList<Any?>
_lib.grab_update(_viewer!!, args[0] as Int, args[1] as Int) val x = (args[0] as Double).toFloat()
val y = (args[1] as Double).toFloat()
Log.v(TAG, "panUpdate ${x} ${y}")
_lib.grab_update(_viewer!!, x, y)
result.success("OK"); result.success("OK");
} }
} }
@@ -422,14 +434,14 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
"rotateStart" -> { "rotateStart" -> {
executor.execute { executor.execute {
val args = call.arguments as ArrayList<Any?> val args = call.arguments as ArrayList<Any?>
_lib.grab_begin(_viewer!!, args[0] as Int, args[1] as Int, false) _lib.grab_begin(_viewer!!, (args[0] as Double).toFloat(), (args[1] as Double).toFloat(), false)
result.success("OK"); result.success("OK");
} }
} }
"rotateUpdate" -> { "rotateUpdate" -> {
executor.execute { executor.execute {
val args = call.arguments as ArrayList<Any?> val args = call.arguments as ArrayList<Any?>
_lib.grab_update(_viewer!!, args[0] as Int, args[1] as Int) _lib.grab_update(_viewer!!, (args[0] as Double).toFloat(), (args[1] as Double).toFloat())
result.success("OK"); result.success("OK");
} }
} }
@@ -442,14 +454,14 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
"grabStart" -> { "grabStart" -> {
executor.execute { executor.execute {
val args = call.arguments as ArrayList<Any?> val args = call.arguments as ArrayList<Any?>
_lib.grab_begin(_viewer!!, args[0] as Int, args[1] as Int, true) _lib.grab_begin(_viewer!!, (args[0] as Double).toFloat(), (args[1] as Double).toFloat(), true)
result.success("OK"); result.success("OK");
} }
} }
"grabUpdate" -> { "grabUpdate" -> {
executor.execute { executor.execute {
val args = call.arguments as ArrayList<Any?> val args = call.arguments as ArrayList<Any?>
_lib.grab_update(_viewer!!, args[0] as Int, args[1] as Int) _lib.grab_update(_viewer!!, (args[0] as Double).toFloat(), (args[1] as Double).toFloat())
result.success("OK"); result.success("OK");
} }
} }