--- lua-tikz3dtools-implementation.lua
--- Entry point: loads and wires the split modules for lua-tikz3dtools v3.0.0.

local Vector   = require("lua-tikz3dtools-vector")
local Matrix   = require("lua-tikz3dtools-matrix")
local Geometry = require("lua-tikz3dtools-geometry")
local Scene    = require("lua-tikz3dtools-scene")

-- Resolve circular dependencies
Vector._set_Matrix(Matrix)
Matrix._set_Vector(Vector)
Geometry._set_classes(Vector, Matrix)
Scene._set_classes(Vector, Matrix, Geometry)

-- Update sandbox environment now that Vector/Matrix are wired
Scene._init_math_env()

-- Install geometry methods on Vector/Matrix
Geometry.install_methods()

-- Register TeX commands
Scene.register_commands()
