Henri Manson and Tom Flynn have been quite busy getting Script node Java
working, so we can expect to see some good progress there in the next
release. It's been a while since I checked much in of significance, so I
thought folks might want to know what's up...
The main things I wanted to accomplish for the next release were to
apply a sane ownership scheme to VrmlNamespaces, and to revamp the
setField/getField stuff to be a bit saner. These are elements that stand
to be substantially impacted by the rearchitecture, so I am pressing
forward with that.
Here is the meat of the new architecture: each node implementation must
support three interfaces: NodeClass, NodeType, and Node.
* There is one NodeClass object per scene per node
implementation. It is a factory for NodeType objects, and it
is a convenient place for scene-specific information that
should be shared by all nodes sharing the same implementation.
(Think of bound node stacks.)
* The NodeType object is a factory for Nodes, and it is
responsible for making available type information for a node:
the node type ID, and what eventIns, eventOuts, fields, and
exposedFields it has. There is one NodeType object per scope
per node type.
* Finally, the Node object corresponds to a node instance.
Most of the initial required work involved in moving the existing node
implementations to this architecture is done at this point. But part of
the fallout from these changes and my changes to VrmlNamespace is that
the implementation of PROTOs needs basically to be redone. I am working
on that now.
When I'm done with all this, the semantic behind getField() will have
changed a little. Right now, getField only works for exposedFields and
eventOuts. The new implementation of getField() will work for
exposedFields and fields. This is consistent with setField().
getEventOut() will provide a general mechanism for getting event values,
whether generated from eventOuts or exposedFields.
Once these changes are in place, fully generic traversals of the scene
graph will be possible.
--
Braden McDaniel e-mail: <br...@en...>
<http://endoframe.com> Jabber: <br...@ja...>
|