Files
cup_edit/android/src/main/kotlin/app/polyvox/filament/FilamentInterop.kt
2023-04-20 11:49:12 +08:00

106 lines
3.5 KiB
Kotlin

package app.polyvox.filament
import com.sun.jna.Library
import com.sun.jna.Native
import com.sun.jna.Pointer
import com.sun.jna.ptr.PointerByReference
import com.sun.jna.ptr.IntByReference
import com.sun.jna.Structure
import com.sun.jna.NativeLibrary
import com.sun.jna.StringArray
import com.sun.jna.JNIEnv
import android.view.Surface
import android.content.res.AssetManager
import java.nio.ByteBuffer
interface FilamentInterop : Library {
fun create_filament_viewer_android(
layer:Object,
env:JNIEnv,
am:AssetManager
) : Pointer;
fun delete_filament_viewer(
viewer:Pointer,
) : Pointer;
fun load_skybox(viewer:Pointer, skyboxPath:String) : Pointer;
fun load_ibl(viewer:Pointer, skyboxPath:String) : Pointer;
fun load_glb(viewer:Pointer, uri:String) : Pointer;
fun load_gltf(viewer:Pointer, uri:String, relativeResourcePath:String) : Pointer;
fun set_camera(viewer:Pointer, asset:Pointer, nodeName:String) : Boolean;
fun render(viewer:Pointer, frameTimeInNanos:Long);
fun set_frame_interval(viewer:Pointer, interval:Float);
fun create_swap_chain(viewer:Pointer, surface:Surface, env:JNIEnv);
fun destroy_swap_chain(viewer:Pointer);
fun update_viewport_and_camera_projection(viewer:Pointer, width:Int, height:Int, scaleFactor:Float);
fun scroll_begin(viewer:Pointer);
fun scroll_update(viewer:Pointer, x:Float, y:Float, delta: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:Pointer, weights:FloatArray, size:Int);
fun set_animation(asset:Pointer, frames:FloatArray, numWeights:Int, numFrames:Int, frameRate:Float);
fun get_morph_target_name_count(asset:Pointer, meshName:String) : Int;
fun get_morph_target_name(asset:Pointer, meshName:String, outPtr:Pointer, index:Int);
fun get_animation_count(asset:Pointer) : Int;
fun get_animation_name(asset:Pointer, outPtr:Pointer, index:Int);
fun play_animation(asset:Pointer, index:Int, loop:Boolean, reverse:Boolean);
fun stop_animation(asset:Pointer, index:Int);
fun free_pointer(ptr:Pointer, size:Int);
fun remove_asset(viewer:Pointer, asset:Pointer);
fun clear_assets(viewer:Pointer);
fun remove_skybox(viewer:Pointer);
fun remove_ibl(viewer:Pointer);
fun add_light(viewer:Pointer, type:Int, colour:Float, intensity:Float, posX:Float, posY:Float, posZ:Float, dirX:Float, dirY:Float, dirZ:Float, shadows:Boolean) : Int;
fun remove_light(viewer:Pointer, entityId:Int);
fun clear_lights(viewer:Pointer);
fun set_background_image(viewer:Pointer, path:String);
fun set_background_image_position(viewer:Pointer, x:Float, y:Float, clamp:Boolean);
fun load_texture(asset:Pointer, path:String, renderableIndex:Int);
fun set_texture(asset:Pointer);
fun transform_to_unit_cube(asset:Pointer);
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);
fun set_scale(asset:Pointer, scale:Float);
}