#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
use ai_bindings;
pub use ai_bindings::{
AtNodeEntry,
AtParamEntry,
AtParamIterator,
AtMetaDataIterator,
AtNodeMethods,
AtMetaDataEntry
};
use ai_bindings::AtString;
use std::ffi::{CStr, CString};
use std::str;
pub const AI_NODE_UNDEFINED: u32 = 0;
pub const AI_NODE_OPTIONS: u32 = 1;
pub const AI_NODE_CAMERA: u32 = 2;
pub const AI_NODE_LIGHT: u32 = 4;
pub const AI_NODE_SHAPE: u32 = 8;
pub const AI_NODE_SHADER: u32 = 16;
pub const AI_NODE_OVERRIDE: u32 = 32;
pub const AI_NODE_DRIVER: u32 = 64;
pub const AI_NODE_FILTER: u32 = 128;
pub const AI_NODE_COLOR_MANAGER: u32 = 2048;
pub const AI_NODE_OPERATOR: u32 = 4096;
pub const AI_NODE_ALL: u32 = 65535;
pub const AI_NODE_SHAPE_PROCEDURAL: u32 = 256;
pub const AI_NODE_SHAPE_VOLUME: u32 = 512;
pub const AI_NODE_SHAPE_IMPLICIT: u32 = 1024;
pub fn AiNodeEntryLookUp(name: AtString) -> *const AtNodeEntry{
unsafe { ai_bindings::AiNodeEntryLookUp(name) }
}
pub fn AiNodeEntryGetNameAtString(nentry: *const AtNodeEntry) -> AtString {
unsafe {ai_bindings::AiNodeEntryGetNameAtString(nentry)}
}
pub fn AiNodeEntryGetType(nentry: *const AtNodeEntry) -> i32 {
unsafe {ai_bindings::AiNodeEntryGetType(nentry)}
}
pub fn AiNodeEntryGetTypeName(nentry: *const AtNodeEntry) -> &'static str {
let slice = unsafe {
let data = ai_bindings::AiNodeEntryGetTypeName(nentry);
CStr::from_ptr(data)
};
str::from_utf8(slice.to_bytes()).unwrap()
}
pub fn AiNodeEntryGetDerivedType(nentry: *const AtNodeEntry) -> i32 {
unsafe {ai_bindings::AiNodeEntryGetDerivedType(nentry)}
}
pub fn AiNodeEntryGetDerivedTypeName(nentry: *const AtNodeEntry) -> &'static str {
let slice = unsafe {
let data = ai_bindings::AiNodeEntryGetDerivedTypeName(nentry);
CStr::from_ptr(data)
};
str::from_utf8(slice.to_bytes()).unwrap()
}
pub fn AiNodeEntryGetOutputType(nentry: *const AtNodeEntry) -> i32 {
unsafe {ai_bindings::AiNodeEntryGetOutputType(nentry)}
}
pub fn AiNodeEntryGetFilename(nentry: *const AtNodeEntry) -> &'static str {
let slice = unsafe {
let data = ai_bindings::AiNodeEntryGetFilename(nentry);
CStr::from_ptr(data)
};
str::from_utf8(slice.to_bytes()).unwrap()
}
pub fn AiNodeEntryGetVersion(nentry: *const AtNodeEntry) -> &'static str {
let slice = unsafe {
let data = ai_bindings::AiNodeEntryGetVersion(nentry);
CStr::from_ptr(data)
};
str::from_utf8(slice.to_bytes()).unwrap()
}
pub fn AiNodeEntryGetCount(nentry: *const AtNodeEntry) -> i32 {
unsafe {ai_bindings::AiNodeEntryGetCount(nentry)}
}
pub fn AiNodeEntryGetNumParams(nentry: *const AtNodeEntry) -> i32 {
unsafe {ai_bindings::AiNodeEntryGetNumParams(nentry)}
}
pub fn AiNodeEntryGetParameter(nentry: *const AtNodeEntry, i: i32) -> *const AtParamEntry {
unsafe {ai_bindings::AiNodeEntryGetParameter(nentry, i)}
}
pub fn AiNodeEntryLookUpParameter<T: Into<AtString>>(nentry: *const AtNodeEntry, name: T) -> *const AtParamEntry {
unsafe {ai_bindings::AiNodeEntryLookUpParameter(nentry, name.into())}
}
pub fn AiNodeEntryGetParamIterator(nentry: *const AtNodeEntry) -> *const AtParamIterator {
unsafe {ai_bindings::AiNodeEntryGetParamIterator(nentry)}
}
pub fn AiNodeEntryGetMetaDataIterator(nentry: *const AtNodeEntry, param: &str) -> *const AtMetaDataIterator {
let param = CString::new(param).unwrap();
unsafe {ai_bindings::AiNodeEntryGetMetaDataIterator(nentry, param.as_ptr())}
}
pub fn AiNodeEntryInstall(entry_type: i32, output_type: u8, name: &str, filename: &str, methods: *const AtNodeMethods, version: &str){
let name = CString::new(name).unwrap();
let filename = CString::new(filename).unwrap();
let version = CString::new(version).unwrap();
unsafe {ai_bindings::AiNodeEntryInstall(entry_type, output_type, name.as_ptr(), filename.as_ptr(), methods, version.as_ptr())}
}
pub fn AiNodeEntryUninstall(name: &str){
let name = CString::new(name).unwrap();
unsafe {ai_bindings::AiNodeEntryUninstall(name.as_ptr()) }
}
pub fn AiParamIteratorDestroy(iter: *mut AtParamIterator){
unsafe {ai_bindings::AiParamIteratorDestroy(iter) }
}
pub fn AiParamIteratorGetNext(iter: *mut AtParamIterator) -> *const AtParamEntry {
unsafe {ai_bindings::AiParamIteratorGetNext(iter) }
}
pub fn AiParamIteratorFinished(iter: *const AtParamIterator) -> bool {
unsafe {ai_bindings::AiParamIteratorFinished(iter) }
}
pub fn AiMetaDataIteratorDestroy(iter: *mut AtMetaDataIterator){
unsafe {ai_bindings::AiMetaDataIteratorDestroy(iter) }
}
pub fn AiMetaDataIteratorGetNext(iter: *mut AtMetaDataIterator) -> *const AtMetaDataEntry {
unsafe {ai_bindings::AiMetaDataIteratorGetNext(iter) }
}
pub fn AiMetaDataIteratorFinished(iter: *const AtMetaDataIterator) -> bool {
unsafe {ai_bindings::AiMetaDataIteratorFinished(iter) }
}