ich hab ein kleines Problem mit einer C++ Funktion,die ich aus Lua ausrufe.
Folgendes:
In C++ habe ich eine Timer Klasse..Das ist eine Art Countdown.
Folgende Funktionen gibt es für diese Klasse in Lua:
CreateTimer(float time) - erstellt einen neuen Timer mit Argument 'time' als Laufzeit
StartTimer() - selbsterklärend
StopTimer() - selbsterklärend
IsRunning() - gibt true zurück,wenn der Timer läuft und false wenn nicht. (Hier liegt mein Problem.)
Folgendes Lua Skript habe ich:
Code: Alles auswählen
function Init()
Test_Surface = CreateSurface("Test.png")
Test_Timer = CreateTimer(200)
StartTimer(Test_Timer)
end
function Update()
if IsRunning(StartTimer) == true then
Graphics.RenderSurface(Test_Surface)
end
end
Code: Alles auswählen
int IsRunning(lua_state *state)
{
Timer *test_timer = (Timer*)lua_touserobj(state,1) //Oder so ähnlich,hab die .cpp grad nicht zur Hand
lua_pushboolean(state,test_timer->IsRunning);
return 1;
}
Das Surface wird erstellt,gerendert und der Timer wird geprüft.
Allerdings wird das Surface gerendert,obwohl die Funktion IsRunning false zurückgibt (geprüft mit dem Debugger). Ich kann mir absolut nicht erklären,was da falsch läuft.
Macht für mich den Eindruck, als würde Lua den Rückgabewert der Funktion beim 1. Aufruf speichern und danach immer diesen Wert zurückgeben,wenn die Funktion aufgerufen wird.
Hoffe hier ist jemand,der mir etwas helfen kann.