diff --git a/assets/scripts/root.toy b/assets/scripts/root.toy index 8ee348e..00a5f7c 100644 --- a/assets/scripts/root.toy +++ b/assets/scripts/root.toy @@ -1,11 +1,11 @@ +import standard; + //root node can load the whole scene, and essentially act as the scene object fn onInit() { print "root.toy:onInit() called"; } fn onStep() { - import standard; - print "root.toy:onStep() called"; print clock(); } diff --git a/core/engine.c b/core/engine.c index 855507b..24fd6ba 100644 --- a/core/engine.c +++ b/core/engine.c @@ -206,8 +206,8 @@ void execEngine() { } //render the world - SDL_SetRenderDrawColor(engine.renderer, 0, 0, 0, 255); //NOTE: This line can be disabled later - SDL_RenderClear(engine.renderer); //NOTE: This line can be disabled later - SDL_RenderPresent(engine.renderer); + // SDL_SetRenderDrawColor(engine.renderer, 0, 0, 0, 255); //NOTE: This line can be disabled later + // SDL_RenderClear(engine.renderer); //NOTE: This line can be disabled later + // SDL_RenderPresent(engine.renderer); } } diff --git a/core/lib_engine.c b/core/lib_engine.c index 138ad35..62ffbdf 100644 --- a/core/lib_engine.c +++ b/core/lib_engine.c @@ -180,13 +180,16 @@ static int nativeLoadRootNode(Interpreter* interpreter, LiteralArray* arguments) engine.rootNode = ALLOCATE(EngineNode, 1); - //BUGFIX: use an inner-interpreter here, otherwise it'll mess up the original's length value by calling run within a native function - Interpreter inner; - initInterpreter(&inner); - - initEngineNode(engine.rootNode, &inner, tb, size); - - freeInterpreter(&inner); + //BUGFIX + unsigned char* originalTb = engine.interpreter.bytecode; + 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; + engine.interpreter.codeStart = originalCodeStart; //init the new node callEngineNode(engine.rootNode, &engine.interpreter, "onInit");