diff --git a/assets/scripts/init.toy b/assets/scripts/init.toy index 1696089..d589ddf 100644 --- a/assets/scripts/init.toy +++ b/assets/scripts/init.toy @@ -1,5 +1,6 @@ import engine; +//this function must always be called, or the engine won't run initWindow("Airport Game", 800, 600, false); loadRootNode("assets/scripts/root.toy"); diff --git a/core/engine.c b/core/engine.c index 3f16f22..4b8ff8c 100644 --- a/core/engine.c +++ b/core/engine.c @@ -146,7 +146,9 @@ void freeEngine() { static void execStep() { //call onStep - callEngineNode(engine.rootNode, &engine.interpreter, "onStep"); + if (engine.rootNode != NULL) { + callEngineNode(engine.rootNode, &engine.interpreter, "onStep"); + } //poll events SDL_Event event; diff --git a/core/lib_engine.c b/core/lib_engine.c index 2cad529..44cf912 100644 --- a/core/lib_engine.c +++ b/core/lib_engine.c @@ -191,7 +191,9 @@ static int nativeLoadRootNode(Interpreter* interpreter, LiteralArray* arguments) size_t originalSize = engine.interpreter.length; int originalCount = engine.interpreter.count; int originalCodeStart = engine.interpreter.codeStart; + initEngineNode(engine.rootNode, &engine.interpreter, tb, size); + engine.interpreter.bytecode = originalTb; engine.interpreter.length = originalSize; engine.interpreter.count = originalCount;