#ifndef ENGINE_H #define ENGINE_H #include #include #include #define ENGINE_CONTEXT_LEVEL_MAIN 0 #define ENGINE_CONTEXT_LEVEL_SUB 1 #define ENGINE_CONTEXT_INVALID 0 #define ENGINE_CONTEXT_MAIN 1 #define ENGINE_CONTEXT_FRAME 2 #define ENGINE_CONTEXT_WORLD 3 #define ENGINE_CONTEXT_ATTRIBUTE 4 #define ENGINE_CONTEXT_TRANSFORM 5 #define ENGINE_CONTEXT_SOLID 6 #define ENGINE_CONTEXT_OBJECT 7 #define ENGINE_CONTEXT_MOTION 8 extern ri_var_t* V_P; extern ri_var_t* V_PZ; extern ri_var_t* V_PW; extern ri_var_t* V_N; extern ri_var_t* V_NP; extern ri_var_t* V_CS; extern ri_var_t* V_OS; extern ri_var_t* V_S; extern ri_var_t* V_T; extern ri_var_t* V_ST; extern ri_var_t* V_WIDTH; extern ri_var_t* V_CONSTANTWIDTH; typedef uint32_t context_t; typedef struct _sengine_t { FILE *pFile; RtToken name; context_t *pContext; stack_t *pContext_stack; var_list_t varList; scene_t geometry; scene_t lights; graph_state_t gs; void *pErrorHandler; } engine_t; // JayMan functions void Engine_init(engine_t *pObj, RtToken name); void Engine_free(engine_t *pObj); void Engine_context_set(engine_t *pObj, uint32_t context, uint32_t level); uint32_t Engine_context_get(engine_t *pObj, uint32_t level); void Engine_context_push(engine_t *pObj); void Engine_context_pop(engine_t *pObj); void Engine_Render(engine_t *pObj); void Engine_DeleteScene(engine_t *pObj); void Engine_SceneInfo(engine_t *pObj); void* jmalloc(uint32_t size); void jfree(void *pMem); void jstats(void); void Tic(double *tic_start); double Toc(double *tic_start); #endif // ENGINE_H