[x3d-public] Extensibility > proto extends builtin > how declare/detect type
GPU Group
gpugroup at gmail.com
Sun Nov 9 06:22:25 PST 2025
Builtin - nodes defined in x3d specs
Q. how to declare / detect what builtin node type a ProtoDeclare extends?
Thanks,
-Doug Sanden
Normally if we want to change parameters on a builtin node, we tinker
directly with the builtin node in the scene with routes and scripts.
In theory builtin nodes are extensible -- a ProtoDeclare can wrap a
builtin, IS all the fields, and add some spice with a Script node inside
the proto that updates some fields on each frame. But how is the x3d
browser code supposed to detect what builtin node type is being extended?
For example, Shape.appearance.material can take different types of material
nodes: UnlitMaterial, Material, PhysicalMaterial. In browser application
code there's different handling of each type:
if mat.type == UNLIT then
...
else if mat.type == MATERIAL then
...
else if mat.type == PHYSICAL then
...
endif
But a ProtoInstance has a ProtoDeclare type which doesn't give a hint as to
which builtin type the ProtoDeclare is extending.
Q1. How is the code supposed to detect which builtin type to process?
Q2. If a ProtoDeclare extends a previous ProtoDeclare, which extends a
builtin type, and assuming single-inheritance chain from builtin, how can
browser code detect the original bultin being extnded?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20251109/fa74c655/attachment.html>
More information about the x3d-public
mailing list