-
Stop using AST nodes for storage
- Create separate wrapper types for int, float, bool, vectors, matrices, buffers, textures, lists
- Use glm for vector and matrix internal types
- Modify scope lists to store those wrapper types
- Formalize pass by value vs. pass by reference semantics
- int, float, bool as value, everything else as reference
- copy constructors for reference objects
- Formalize pass by value vs. pass by reference semantics
- Modify eval_* expressions to return just those
- Modify transpiler to use those types (side effect: remove need for resolve_* functions?)
- Create separate wrapper types for int, float, bool, vectors, matrices, buffers, textures, lists
-
Speed up certain parts
- Make inverse, transpose, etc. built-in functions (ie. not in standard library)
- Use glm to handle those
- Make inverse, transpose, etc. built-in functions (ie. not in standard library)
-
Decouple renderer from interpreter
- Create separate GLRenderer class
- Add functions for creating graphics objects, manipulating them, calling functions
- Remove GL* references from AST nodes and transpiler, use GLRenderer
- Create dummy renderer for headless interpreter (pass renderer to interpreter constructor)