android bindings for new camera/manipulator

This commit is contained in:
Nick Fisher
2022-09-01 13:04:25 +10:00
parent c707023349
commit 998da3ea57
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 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)
@@ -90,5 +90,6 @@ interface FilamentInterop : Library {
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);
fun set_scale(asset:Pointer, scale:Float);
}

View File

@@ -283,6 +283,14 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
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" -> {
executor.execute {
val args = call.arguments as ArrayList<*>
@@ -344,7 +352,8 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
}
"zoom" -> {
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");
}
}
@@ -402,14 +411,17 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
"panStart" -> {
executor.execute {
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");
}
}
"panUpdate" -> {
executor.execute {
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");
}
}
@@ -422,14 +434,14 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
"rotateStart" -> {
executor.execute {
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");
}
}
"rotateUpdate" -> {
executor.execute {
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");
}
}
@@ -442,14 +454,14 @@ class PolyvoxFilamentPlugin: FlutterPlugin, MethodCallHandler, ActivityAware {
"grabStart" -> {
executor.execute {
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");
}
}
"grabUpdate" -> {
executor.execute {
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");
}
}