I think you make your wrapper in c++.
At time i have work on a wrapper for irrlicht 1.3.1 but i have a problem
with the KeyEvent.

/* ////////////////////////////////////////////////////////////////////////////
INPUT EVENT OPERATIONS
*/
/* ----------------------------------------------------------------------------
determine if a key event is available return true if one is
*/
bool DLL_EXPORT IrrKeyEventAvailable( void )
{
return ( uiReadKeyEvent != uiWriteKeyEvent );
}

/* ----------------------------------------------------------------------------
read the oldest key event in the buffer
*/
ARCHIVED_KEY_EVENT *DLL_EXPORT IrrReadKeyEvent( void )
{
ARCHIVED_KEY_EVENT *report;

// if there are any events evailable
if ( uiReadKeyEvent != uiWriteKeyEvent )
{
// return the oldest event
report = &archivekey[uiReadKeyEvent];

// consume the event and if we exceed the buffer
if ( ++uiReadKeyEvent >= MAX_ARCHIVED_EVENTS )
// roll back to the start
uiReadKeyEvent = 0;
}
else
// there are no events available return a blank object
report = &keyblank;

return report;
}



I have a problem to wrap this 2 functions to delphi.

....
KEY_EVENT = record
key :integer;
direction :integer;
flags :integer;
END;
IRR_KEY_EVENT =^KEY_EVENT;
.....

function IrrKeyEventAvailable():integer; cdecl ;external IRR_DLL;
(This do not work. IrrKeyEventAvailable() always is 0)

function IrrReadKeyEvent():Irr_KEY_EVENT; cdecl ;external IRR_DLL;

Can you help me ?

Ps: I'am not a c++ programer and my english is ops: