"""Door robot arm, red look (2026-10-19): apply the look inside a live Blender (the user's open arm file, or the ship with version B installed), through the MCP: exec this file's text. Well under a minute (about a second: the texture bands come from build/surf_ranges.json, the baked maps load lazily). What it changes, and nothing else: * renames M_DoorArm_PaintWhite -> M_DoorArm_PaintRed, M_DoorArm_Orange -> M_DoorArm_Marking and M_DoorArmKit_Orange -> M_DoorArmKit_Marking where only the old name exists (slots follow the datablock); * rebuilds the node trees of the M_DoorArm_* and M_DoorArmKit_* materials that exist, from dra_surf's recipes; * loads textures/T_DoorArm_Masks.png and T_DoorArm_BevelNormal.png (or reloads them if the file has them), by a path relative to the open file (in the ship: //door-robot-arm/textures/...). No slot, mesh, curve, object or other material is touched. The result is the dict `result`. """ import os import sys import importlib _BUILD = r"D:\HADAL - The Descent\models\door-robot-arm\build" try: # run as a file; exec'd from the MCP there is no (or another) __file__ if os.path.basename(__file__) == "dra_live_look.py": _BUILD = os.path.dirname(os.path.abspath(__file__)) except NameError: pass if _BUILD not in sys.path: sys.path.insert(0, _BUILD) import dra_surf # noqa: E402 importlib.reload(dra_surf) # the newest recipes, also in a session that imported it before result = dra_surf.live_look() print("[dra] live look:", result)