Lysa Nodes  0.0
Lysa Nodes — Scene Graph for the Lysa Engine
Lysa Nodes overview

Lysa Nodes is a scene graph system using an OOP node tree for the Lysa Engine.

Overview

Lysa Nodes provides a Godot-inspired node-tree scene graph built on top of the Lysa Engine. It organizes 3D objects, lights, cameras, and physics bodies into a hierarchical tree of typed nodes. Each node can have any number of children, inherits its parent's transform, and participates in the engine's event system for per-frame processing, physics updates, and input handling.

Features

  • Scene Graph: Hierarchical node tree with parent–child transform inheritance.
    • Flexible node management: addChild, removeChild, duplicate, findFirstChild, findAllChildren.
    • Group system: tag nodes and query them by group name.
    • Path addressing: locate any node by name, relative path, or type.
  • Node Types:
    • Node — base 3D node with full transform (position, rotation, scale), process callbacks, and child management.
    • Camera — perspective and orthographic camera with automatic aspect-ratio update on window resize.
    • MeshInstance — renders a Mesh resource with optional per-surface material overrides.
    • AnimationPlayer — plays AnimationLibrary tracks on sibling or child nodes, with forward/backward/seek support.
    • Environment — ambient color and intensity for the scene.
    • Viewport — explicit viewport and scissor rectangle override within a scene.
    • DirectionalLight / OmniLight / SpotLight — light nodes with shadow maps and color/intensity control.
  • Physics Nodes (requires a physics backend):
    • CollisionObject — base for all physics nodes; handles layer filtering, debug rendering, and event routing.
    • CollisionArea — passive sensor that reports contacts without simulating forces.
    • PhysicsBody — base for active rigid bodies.
    • StaticBody — immovable solid body.
    • KinematicBody — velocity-driven body, unaffected by forces.
    • RigidBody — fully simulated body; supports forces, impulses, density, mass, and gravity scaling.
    • Character — specialized virtual character controller with ground detection and slope limits.
    • RayCast — ray query node that reports the first intersected CollisionObject each physics tick.
  • SceneTree: top-level container that owns the root node list, drives all per-frame and physics callbacks, and connects to a RenderingWindow or RenderTarget for output.
  • Asset Loading: load() and loadAsync() helpers instantiate node trees from packed Lysa asset files.
  • Lua Scripting: all node types expose their API to Lua when the engine is compiled with LUA_BINDINGS=ON.

Architecture

Released under the MIT license.