XPlor/definitions/cod/materialpass.xscript
njohnson 0fa26e5256 Expand Call of Duty XScript definitions
Add new asset type definitions:
- GfxWorld and related structures (cells, lights, probes)
- Menu system (menudef, itemdef, windowdef, listboxdef)
- Sound system (soundalias, soundfile, speakermap, sndcurve)
- D3D resources (vertex/index buffers)
- Font glyphs and expression entries

Update existing definitions with improved field annotations
and UI display properties.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 16:36:40 -05:00

39 lines
1.2 KiB
Plaintext

type materialpass [display="Material Pass"]
{
// Pointers first (header)
i32 vertex_decl_ptr [ui, readonly, display="Vertex Decl Ptr"];
i32 vertex_shader_ptr [ui, readonly, display="Vertex Shader Ptr"];
i32 pixel_shader_ptr [ui, readonly, display="Pixel Shader Ptr"];
// Arg counts (COD4 uses u8)
u8 per_prim_arg_count [ui, readonly, display="Per Prim Arg Count"];
u8 per_obj_arg_count [ui, readonly, display="Per Obj Arg Count"];
u8 stable_arg_count [ui, readonly, display="Stable Arg Count"];
u8 custom_sampler_flags [ui, readonly, display="Custom Sampler Flags"];
i32 args_ptr [ui, readonly, display="Args Ptr"];
// Now parse inline data if pointers are -1
if (vertex_decl_ptr == -1) {
vertex_decl = parse_here("materialvertexdeclaration");
}
if (vertex_shader_ptr == -1) {
vertex_shader = parse_here("materialvertexshader");
}
if (pixel_shader_ptr == -1) {
pixel_shader = parse_here("pixelshader");
}
// Parse args if ptr is -1 (inline)
_arg_count = stable_arg_count + per_obj_arg_count + per_prim_arg_count;
if (args_ptr == -1 && _arg_count > 0) {
arguments = 0;
repeat(_arg_count) {
_arg = parse_here("materialshaderargument");
arguments = push("arguments", _arg);
}
}
}