sig
  type t
  type mesh_adder = OsgCal.Model.t -> OsgCal.Core_mesh.t -> unit
  external add_mesh : OsgCal.Model.t -> OsgCal.Core_mesh.t -> OsgCal.Mesh.t
    = "model_add_mesh"
  val default_mesh_adder : OsgCal.Model.mesh_adder
  external load' :
    OsgCal.Core_model.t -> OsgCal.Model.mesh_adder -> OsgCal.Model.t
    = "model_load"
  val load :
    ?mesh_adder:OsgCal.Model.mesh_adder ->
    OsgCal.Core_model.t -> OsgCal.Model.t
  external meshes : OsgCal.Model.t -> string -> OsgCal.Mesh.t list
    = "model_meshes"
  external to_node : OsgCal.Model.t -> Osg.Node.t = "model_to_node"
  external core_model : OsgCal.Model.t -> OsgCal.Core_model.t
    = "model_core_model"
  external blend_animation' :
    OsgCal.Model.t ->
    int -> weight:float -> delay:float -> time_factor:float -> unit
    = "model_blend_animation"
  external clear_animation' : OsgCal.Model.t -> int -> delay:float -> unit
    = "model_clear_animation"
  external execute_action' :
    OsgCal.Model.t ->
    int ->
    delay_in:float ->
    delay_out:float ->
    target_weight:float -> auto_lock:bool -> time_factor:float -> unit
    = "model_execute_action_bytecode" "model_execute_action_native"
  val blend_animation :
    OsgCal.Model.t ->
    ?weight:float -> ?delay:float -> ?time_factor:float -> int -> unit
  val clear_animation : OsgCal.Model.t -> ?delay:float -> int -> unit
  val execute_action :
    OsgCal.Model.t ->
    ?delay_in:float ->
    ?delay_out:float ->
    ?target_weight:float ->
    ?auto_lock:bool -> ?time_factor:float -> int -> unit
  external remove_action : OsgCal.Model.t -> int -> unit
    = "model_remove_action"
end