diff --git a/android/src/main/kotlin/app/polyvox/filament/FilamentInterop.kt b/android/src/main/kotlin/app/polyvox/filament/FilamentInterop.kt index 468a5ad6..9dda5f84 100644 --- a/android/src/main/kotlin/app/polyvox/filament/FilamentInterop.kt +++ b/android/src/main/kotlin/app/polyvox/filament/FilamentInterop.kt @@ -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); } diff --git a/android/src/main/kotlin/app/polyvox/filament/PolyvoxFilamentPlugin.kt b/android/src/main/kotlin/app/polyvox/filament/PolyvoxFilamentPlugin.kt index 3b8033a8..903a9b2c 100644 --- a/android/src/main/kotlin/app/polyvox/filament/PolyvoxFilamentPlugin.kt +++ b/android/src/main/kotlin/app/polyvox/filament/PolyvoxFilamentPlugin.kt @@ -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 - _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 - _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 - _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 - _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 - _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 - _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"); } }