Xj3D External Interaction Component |
Intro
Applications are able to create instances of browsers and manage the contents
of the browser through the use of specifically designed external APIs. In VRML97
this is the External Authoring Interface, and for X3D, it is a component of the
Scene Authoring Interface. External interactions form a separate code path from
their close relative the scripting interactions. The principle difference is
that an external interaction is not a direct part of the scene graph, where the
scripting is. This component contains all of the implementation work needed to
provide external access to the scene graph.
To provide scripting support, the Browser Core component is utilised. Around this will then be built a common request buffering system. The EAI specification was not very precise about when events that have come from the buffering system are to be integrated into the event cascade processing. X3D is much more precise about this, so where needed, the implementation will follow the X3D requirements and apply those to the VRML97 model.
org.web3d.vrml.scripting.external. Under this package there are
separate packages for the EAI, SAI and the buffering system. Under each of
these there are more sub packages as needed to keep the implementation clean.
Packages for the spec-required APIs are kept as a separate area under the
required packages - vrml.eai and org.web3d.x3d.sai
respectively. These two packages are as-is. The Xj3D codebase makes no
modifications to them at all beyond providing sufficient Javadoc documentation.
As the user code is generating events to send in from the external application, they get placed on a buffer. As the internal event model processing evaluates, it reads events off the buffer. If the user has called beginUpdate(), then there would not be anything to read from that buffer as the begin call acts like a gate - effectively creating a two-stage buffer of events - those buffered at the client end, and those waiting for the next time the event model needs to process them. If the user has not called beginUpdate() then the events ignore the first stage and get placed straight onto the internal queue ready for processing.
|
[
Xj3D Homepage |
Xj3D @ Web3d |
Screenshots |
Dev docs |
Dev Releases |
Contributors |
Getting Started
]
Last updated: $Date: 2004-04-30 04:50:26 $ |