"""
constants.py
------------
All module-level constants and default playlist configurations.

Pure Python — no bpy imports — so this module can be imported and
inspected without a running Blender instance.
"""
import math

# ---------------------------------------------------------------------------
# Default playlist
# Each entry is a partial KnotConfig dict; missing keys fall back to the
# defaults defined in KnotItem's PropertyGroup.
# ---------------------------------------------------------------------------
KNOT_CONFIGS = [
    # 1. Standard Trefoil – classic glossy blue
    {"name": "Trefoil Knot", "torus_p": 2, "torus_q": 3, "shader_id": "GLOSS_BLUE"},
    # 2. Cinquefoil – polished gold metal
    {"name": "Cinquefoil", "torus_p": 2, "torus_q": 5, "torus_R": 2.5, "torus_r": 0.5, "shader_id": "METALLIC"},
    # 3. Mobius Strip
    {"name": "Mobius Strip", "shape_type": "MOBIUS", "mobius_twists": 1, "mobius_width": 1.5, "shader_id": "IRIDESCENT"},
    # 4. Lissajous Figure
    {"name": "Lissajous 3D", "shape_type": "LISSAJOUS", "liss_kx": 3, "liss_ky": 2, "liss_kz": 4, "liss_amp": 2.5, "shader_id": "NEON_GLOW"},
    # 5. Spherical Spiral
    {"name": "Spherical Spiral", "shape_type": "SPIRAL", "spiral_turns": 15, "spiral_R": 2.5, "shader_id": "GLASS"},
    # 6. Extruded ribbon – glass
    {"name": "Glass Ribbon", "torus_p": 4, "torus_q": 5, "geo_extrude": 0.1, "geo_offset": 0.05, "geo_bDepth": 0.0, "shader_id": "GLASS"},
    # 7. Exterior/Interior mode – lava
    {"name": "Lava Ring", "torus_p": 2, "torus_q": 7, "mode": "EXT_INT", "torus_eR": 3.0, "torus_iR": 1.0, "shader_id": "LAVA"},
    # 8. Height variation – neon glow
    {"name": "Tall Pulse", "torus_p": 3, "torus_q": 7, "torus_h": 2.0, "shader_id": "NEON_GLOW"},
    # 9. Flipped direction – metallic
    {"name": "Flipped Metallic", "torus_p": 4, "torus_q": 7, "flip_p": True, "flip_q": False, "shader_id": "METALLIC"},
    # 10. Complex multiplier & multiple links – iridescent
    {"name": "Complex Multi-Link", "torus_p": 6, "torus_q": 9, "multiple_links": True, "torus_u": 3, "torus_v": 2, "shader_id": "HOLOGRAM"},
]

# ---------------------------------------------------------------------------
# Scene defaults
# ---------------------------------------------------------------------------
CAMERA_LOCATION = (0.0, -8.0, 3.0)
CAMERA_ROTATION = (math.radians(75), 0.0, 0.0)

LIGHT_LOCATION = (4.0, -4.0, 6.0)
LIGHT_ENERGY = 500.0

# ---------------------------------------------------------------------------
# Well-known object / material name tags
# ---------------------------------------------------------------------------
KNOT_OBJ_NAME = "AnimKnot"
KNOT_MAT_NAME = "KnotMaterial"            # legacy name kept for unregister cleanup
SHADER_BLEND_MAT_NAME = "KnotBlendMaterial"  # cross-shader transition blend material
