require "java"
require "../../../X3DJSAIL.4.0.full.jar"

ConfigurationProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ConfigurationProperties")
CommentsBlock = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.CommentsBlock")
AcousticProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.AcousticProperties")
Analyser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.Analyser")
Anchor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Networking.Anchor")
Appearance = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.Appearance")
Arc2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Arc2D")
ArcClose2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.ArcClose2D")
AudioClip = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.AudioClip")
AudioDestination = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.AudioDestination")
Background = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalEffects.Background")
BallJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.BallJoint")
Billboard = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.Billboard")
BiquadFilter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.BiquadFilter")
BlendedVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.BlendedVolumeStyle")
BooleanFilter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.BooleanFilter")
BooleanSequencer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.BooleanSequencer")
BooleanToggle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.BooleanToggle")
BooleanTrigger = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.BooleanTrigger")
BoundaryEnhancementVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.BoundaryEnhancementVolumeStyle")
BoundedPhysicsModel = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.BoundedPhysicsModel")
Box = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.Box")
BufferAudioSource = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.BufferAudioSource")
CADAssembly = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.CADAssembly")
CADFace = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.CADFace")
CADLayer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.CADLayer")
CADPart = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.CADPart")
CartoonVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.CartoonVolumeStyle")
ChannelMerger = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.ChannelMerger")
ChannelSelector = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.ChannelSelector")
ChannelSplitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.ChannelSplitter")
Circle2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Circle2D")
ClipPlane = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.ClipPlane")
CollidableOffset = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.CollidableOffset")
CollidableShape = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.CollidableShape")
Collision = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.Collision")
CollisionCollection = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.CollisionCollection")
CollisionSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.CollisionSensor")
CollisionSpace = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.CollisionSpace")
Color = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.Color")
ColorChaser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.ColorChaser")
ColorDamper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.ColorDamper")
ColorInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.ColorInterpolator")
ColorRGBA = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.ColorRGBA")
ComposedCubeMapTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CubeMapTexturing.ComposedCubeMapTexture")
ComposedShader = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.ComposedShader")
ComposedTexture3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.ComposedTexture3D")
ComposedVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.ComposedVolumeStyle")
Cone = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.Cone")
ConeEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.ConeEmitter")
Contact = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.Contact")
Contour2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.Contour2D")
ContourPolyline2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.ContourPolyline2D")
Convolver = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.Convolver")
Coordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.Coordinate")
CoordinateChaser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.CoordinateChaser")
CoordinateDamper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.CoordinateDamper")
CoordinateDouble = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.CoordinateDouble")
CoordinateInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.CoordinateInterpolator")
CoordinateInterpolator2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.CoordinateInterpolator2D")
Cylinder = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.Cylinder")
CylinderSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.PointingDeviceSensor.CylinderSensor")
Delay = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.Delay")
DirectionalLight = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Lighting.DirectionalLight")
DISEntityManager = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.DISEntityManager")
DISEntityTypeMapping = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.DISEntityTypeMapping")
Disk2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Disk2D")
DoubleAxisHingeJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.DoubleAxisHingeJoint")
DynamicsCompressor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.DynamicsCompressor")
EaseInEaseOut = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.EaseInEaseOut")
EdgeEnhancementVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.EdgeEnhancementVolumeStyle")
ElevationGrid = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.ElevationGrid")
EnvironmentLight = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Lighting.EnvironmentLight")
EspduTransform = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.EspduTransform")
ExplosionEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.ExplosionEmitter")
Extrusion = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.Extrusion")
FillProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.FillProperties")
FloatVertexAttribute = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.FloatVertexAttribute")
Fog = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalEffects.Fog")
FogCoordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalEffects.FogCoordinate")
FontLibrary = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Text.FontLibrary")
FontStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Text.FontStyle")
ForcePhysicsModel = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.ForcePhysicsModel")
Gain = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.Gain")
GeneratedCubeMapTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CubeMapTexturing.GeneratedCubeMapTexture")
GeoCoordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoCoordinate")
GeoElevationGrid = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoElevationGrid")
GeoLocation = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoLocation")
GeoLOD = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoLOD")
GeoMetadata = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoMetadata")
GeoOrigin = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoOrigin")
GeoPositionInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoPositionInterpolator")
GeoProximitySensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoProximitySensor")
GeoTouchSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoTouchSensor")
GeoTransform = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoTransform")
GeoViewpoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoViewpoint")
Group = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Grouping.Group")
HAnimDisplacer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimDisplacer")
HAnimHumanoid = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimHumanoid")
HAnimJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimJoint")
HAnimMotion = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimMotion")
HAnimPose = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimPose")
HAnimSegment = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimSegment")
HAnimSite = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimSite")
ImageCubeMapTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CubeMapTexturing.ImageCubeMapTexture")
ImageTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.ImageTexture")
ImageTexture3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.ImageTexture3D")
IndexedFaceSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.IndexedFaceSet")
IndexedLineSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.IndexedLineSet")
IndexedQuadSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.IndexedQuadSet")
IndexedTriangleFanSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.IndexedTriangleFanSet")
IndexedTriangleSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.IndexedTriangleSet")
IndexedTriangleStripSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.IndexedTriangleStripSet")
Inline = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Networking.Inline")
IntegerSequencer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.IntegerSequencer")
IntegerTrigger = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.IntegerTrigger")
IsoSurfaceVolumeData = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.IsoSurfaceVolumeData")
KeySensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.KeyDeviceSensor.KeySensor")
Layer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layering.Layer")
LayerSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layering.LayerSet")
Layout = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layout.Layout")
LayoutGroup = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layout.LayoutGroup")
LayoutLayer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layout.LayoutLayer")
LinePickSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Picking.LinePickSensor")
LineProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.LineProperties")
LineSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.LineSet")
ListenerPointSource = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.ListenerPointSource")
LoadSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Networking.LoadSensor")
LocalFog = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalEffects.LocalFog")
LOD = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.LOD")
Material = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.Material")
Matrix3VertexAttribute = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.Matrix3VertexAttribute")
Matrix4VertexAttribute = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.Matrix4VertexAttribute")
MetadataBoolean = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataBoolean")
MetadataDouble = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataDouble")
MetadataFloat = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataFloat")
MetadataInteger = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataInteger")
MetadataSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataSet")
MetadataString = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataString")
MicrophoneSource = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.MicrophoneSource")
MotorJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.MotorJoint")
MovieTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.MovieTexture")
MultiTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.MultiTexture")
MultiTextureCoordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.MultiTextureCoordinate")
MultiTextureTransform = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.MultiTextureTransform")
NavigationInfo = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.NavigationInfo")
Normal = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.Normal")
NormalInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.NormalInterpolator")
NurbsCurve = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsCurve")
NurbsCurve2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsCurve2D")
NurbsOrientationInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsOrientationInterpolator")
NurbsPatchSurface = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsPatchSurface")
NurbsPositionInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsPositionInterpolator")
NurbsSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsSet")
NurbsSurfaceInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsSurfaceInterpolator")
NurbsSweptSurface = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsSweptSurface")
NurbsSwungSurface = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsSwungSurface")
NurbsTextureCoordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsTextureCoordinate")
NurbsTrimmedSurface = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsTrimmedSurface")
OpacityMapVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.OpacityMapVolumeStyle")
OrientationChaser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.OrientationChaser")
OrientationDamper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.OrientationDamper")
OrientationInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.OrientationInterpolator")
OrthoViewpoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.OrthoViewpoint")
OscillatorSource = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.OscillatorSource")
PackagedShader = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.PackagedShader")
ParticleSystem = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.ParticleSystem")
PeriodicWave = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.PeriodicWave")
PhysicalMaterial = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.PhysicalMaterial")
PickableGroup = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Picking.PickableGroup")
PixelTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.PixelTexture")
PixelTexture3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.PixelTexture3D")
PlaneSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.PointingDeviceSensor.PlaneSensor")
PointEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.PointEmitter")
PointLight = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Lighting.PointLight")
PointPickSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Picking.PointPickSensor")
PointProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.PointProperties")
PointSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.PointSet")
Polyline2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Polyline2D")
PolylineEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.PolylineEmitter")
Polypoint2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Polypoint2D")
PositionChaser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.PositionChaser")
PositionChaser2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.PositionChaser2D")
PositionDamper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.PositionDamper")
PositionDamper2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.PositionDamper2D")
PositionInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.PositionInterpolator")
PositionInterpolator2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.PositionInterpolator2D")
PrimitivePickSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Picking.PrimitivePickSensor")
ProgramShader = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.ProgramShader")
ProjectionVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.ProjectionVolumeStyle")
ProtoInstance = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ProtoInstance")
ProximitySensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalSensor.ProximitySensor")
QuadSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.QuadSet")
ReceiverPdu = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.ReceiverPdu")
Rectangle2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Rectangle2D")
RigidBody = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.RigidBody")
RigidBodyCollection = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.RigidBodyCollection")
ScalarChaser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.ScalarChaser")
ScalarDamper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.ScalarDamper")
ScalarInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.ScalarInterpolator")
ScreenFontStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layout.ScreenFontStyle")
ScreenGroup = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layout.ScreenGroup")
Script = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Scripting.Script")
SegmentedVolumeData = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.SegmentedVolumeData")
ShadedVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.ShadedVolumeStyle")
ShaderPart = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.ShaderPart")
ShaderProgram = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.ShaderProgram")
Shape = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.Shape")
SignalPdu = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.SignalPdu")
SilhouetteEnhancementVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.SilhouetteEnhancementVolumeStyle")
SingleAxisHingeJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.SingleAxisHingeJoint")
SliderJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.SliderJoint")
Sound = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.Sound")
SpatialSound = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.SpatialSound")
Sphere = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.Sphere")
SphereSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.PointingDeviceSensor.SphereSensor")
SplinePositionInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.SplinePositionInterpolator")
SplinePositionInterpolator2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.SplinePositionInterpolator2D")
SplineScalarInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.SplineScalarInterpolator")
SpotLight = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Lighting.SpotLight")
SquadOrientationInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.SquadOrientationInterpolator")
StaticGroup = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Grouping.StaticGroup")
StreamAudioDestination = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.StreamAudioDestination")
StreamAudioSource = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.StreamAudioSource")
StringSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.KeyDeviceSensor.StringSensor")
SurfaceEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.SurfaceEmitter")
Switch = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Grouping.Switch")
Tangent = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.Tangent")
TexCoordChaser2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.TexCoordChaser2D")
TexCoordDamper2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.TexCoordDamper2D")
Text = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Text.Text")
TextureBackground = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalEffects.TextureBackground")
TextureCoordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.TextureCoordinate")
TextureCoordinate3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.TextureCoordinate3D")
TextureCoordinate4D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.TextureCoordinate4D")
TextureCoordinateGenerator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.TextureCoordinateGenerator")
TextureProjector = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.TextureProjection.TextureProjector")
TextureProjectorParallel = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.TextureProjection.TextureProjectorParallel")
TextureProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.TextureProperties")
TextureTransform = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.TextureTransform")
TextureTransform3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.TextureTransform3D")
TextureTransformMatrix3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.TextureTransformMatrix3D")
TimeSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Time.TimeSensor")
TimeTrigger = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.TimeTrigger")
ToneMappedVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.ToneMappedVolumeStyle")
TouchSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.PointingDeviceSensor.TouchSensor")
Transform = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Grouping.Transform")
TransformSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalSensor.TransformSensor")
TransmitterPdu = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.TransmitterPdu")
TriangleFanSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.TriangleFanSet")
TriangleSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.TriangleSet")
TriangleSet2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.TriangleSet2D")
TriangleStripSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.TriangleStripSet")
TwoSidedMaterial = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.TwoSidedMaterial")
UniversalJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.UniversalJoint")
UnlitMaterial = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.UnlitMaterial")
Viewpoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.Viewpoint")
ViewpointGroup = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.ViewpointGroup")
Viewport = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layering.Viewport")
VisibilitySensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalSensor.VisibilitySensor")
VolumeData = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.VolumeData")
VolumeEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.VolumeEmitter")
VolumePickSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Picking.VolumePickSensor")
WaveShaper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.WaveShaper")
WindPhysicsModel = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.WindPhysicsModel")
WorldInfo = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.WorldInfo")
Component = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.component")
Connect = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.connect")
EXPORT = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Networking.EXPORT")
ExternProtoDeclare = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ExternProtoDeclare")
Field = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.field")
FieldValue = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.fieldValue")
Head = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.head")
IMPORT = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Networking.IMPORT")
IS = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.IS")
Meta = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.meta")
ProtoBody = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ProtoBody")
ProtoDeclare = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ProtoDeclare")
ProtoInterface = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ProtoInterface")
ROUTE = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ROUTE")
Scene = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.Scene")
Unit = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.unit")
X3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.X3D")
SFBool = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFBool")
MFBool = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFBool")
SFColor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFColor")
MFColor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFColor")
SFColorRGBA = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFColorRGBA")
MFColorRGBA = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFColorRGBA")
SFDouble = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFDouble")
MFDouble = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFDouble")
SFFloat = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFFloat")
MFFloat = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFFloat")
SFImage = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFImage")
MFImage = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFImage")
SFInt32 = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFInt32")
MFInt32 = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFInt32")
SFMatrix3d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFMatrix3d")
MFMatrix3d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFMatrix3d")
SFMatrix3f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFMatrix3f")
MFMatrix3f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFMatrix3f")
SFMatrix4d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFMatrix4d")
MFMatrix4d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFMatrix4d")
SFMatrix4f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFMatrix4f")
MFMatrix4f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFMatrix4f")
SFString = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFString")
SFNode = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFNode")
MFNode = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFNode")
SFRotation = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFRotation")
MFRotation = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFRotation")
MFString = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFString")
SFTime = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFTime")
MFTime = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFTime")
SFVec2d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec2d")
MFVec2d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec2d")
SFVec2f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec2f")
MFVec2f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec2f")
SFVec3d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec3d")
MFVec3d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec3d")
SFVec3f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec3f")
MFVec3f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec3f")
SFVec4d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec4d")
MFVec4d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec4d")
SFVec4f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec4f")
MFVec4f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec4f")
ConfigurationProperties.setDeleteIntermediateFiles(false);
ConfigurationProperties.setStripTrailingZeroes(true);
ConfigurationProperties.setStripDefaultAttributes(true);
ConfigurationProperties.setXsltEngine(Java::OrgWeb3dX3dJsail::ConfigurationProperties::XSLT_ENGINE_NATIVE_JAVA);
x3D0 = X3D.new
    .setProfile("Full")
    .setVersion("4.0")
    .setHead(Head.new()
        .addMeta(Meta.new()
            .setName("title")
            .setContent("HAnimPosePrototype.x3d")
        )
        .addMeta(Meta.new()
            .setName("description")
            .setContent("Define an experimental new node to simply capture a single pose for an HAnimHumanoid model. Expected usage is to allow HAnimHumanoid to contain multiple Pose nodes which can be activated and composed.")
        )
        .addMeta(Meta.new()
            .setName("info")
            .setContent("This model also takes advantage of Inline/IMPORT capabilities (equivalent to USE node) and thus avoids fully copying a large, complex HAnimHumanoid model. Multiple HAnimHumanoid models have been tested satisfactorily, for HAnim version 1 (X3d 3) AND HAnim version 2 (X3D 4).")
        )
        .addMeta(Meta.new()
            .setName("created")
            .setContent("2 October 2025")
        )
        .addMeta(Meta.new()
            .setName("modified")
            .setContent("14 December 2025")
        )
        .addMeta(Meta.new()
            .setName("creator")
            .setContent("Don Brutzman")
        )
        .addMeta(Meta.new()
            .setName("creator")
            .setContent("Joe Williams")
        )
        .addMeta(Meta.new()
            .setName("contributor")
            .setContent("Holger Seelig for X_ITE, Sunrize on Windows, scripting guidance, and Inline IMPORT functionality as node-reference equivalent to USE")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("HAnimPosePrototype.console.txt")
        )
        .addMeta(Meta.new()
            .setName("MovingImage")
            .setContent("demonstration video https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Poses/HAnimPosePrototypeDemoVideo.mp4")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("HAnimPoseExampleTouchDown.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("HAnimPoseExampleTouchDownFaceLeftAPose.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("images/HAnimPoseExampleBoxMan1.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("images/HAnimPoseExampleBoxMan2.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("images/HAnimPoseExampleJoeKick.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("images/HAnimPoseExampleJoeSkeletonSkinSite.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("images/HAnimPoseExampleKoreanCharacter01Jin.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("images/HAnimPoseExampleKoreanCharacter02Chul.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("images/HAnimPoseExampleKoreanCharacter03Hyun.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("images/HAnimPoseExampleKoreanCharacter04Young.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("images/HAnimPoseExampleKoreanCharacter05Ju.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("images/HAnimPoseExampleKoreanCharacter06Ga.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("images/HAnimPoseExampleKoreanCharacter07No.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("images/HAnimPoseExampleKoreanCharacter08Da.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("images/HAnimPoseExampleKoreanCharacter09Ru.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("images/HAnimPoseExampleKoreanCharacter10Mi.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("images/HAnimPoseExampleKoreanCharacter11Min.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("images/HAnimPoseExampleKoreanCharacter12Sun.png")
        )
        .addMeta(Meta.new()
            .setName("specificationSection")
            .setContent("HAnim Architecture volume 1 version 2.1 draft, clause 6 Object interfaces, section 6.4 Pose")
        )
        .addMeta(Meta.new()
            .setName("specificationUrl")
            .setContent("https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/ObjectInterfaces.html#Pose")
        )
        .addMeta(Meta.new()
            .setName("specificationSection")
            .setContent("HAnim Architecture volume 1 version 2.1 draft, clause 4 Concepts, section 4.8.2 Modelling of human-like HAnim figures")
        )
        .addMeta(Meta.new()
            .setName("specificationUrl")
            .setContent("https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/concepts.html#ModellingHumanLikeHAnimFigures")
        )
        .addMeta(Meta.new()
            .setName("specificationSection")
            .setContent("HAnim Architecture volume 1 version 2.1 draft, clause 4 Concepts, section 4.8.3 Poses")
        )
        .addMeta(Meta.new()
            .setName("specificationUrl")
            .setContent("https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/concepts.html#Poses")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("Direct scene manipulations with Javascript, https://doc.instantreality.org/tutorial/direct-scene-manipulations-with-javascript")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("earlier version of this prototype: originals/HAnimPosePreliminary.x3d")
        )
        .addMeta(Meta.new()
            .setName("generator")
            .setContent("X3D-Edit 4.0, https://www.web3d.org/x3d/tools/X3D-Edit")
        )
        .addMeta(Meta.new()
            .setName("generator")
            .setContent("Sunrize X3D Editor V1.11.1, https://create3000.github.io/sunrize")
        )
        .addMeta(Meta.new()
            .setName("identifier")
            .setContent("https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Poses/HAnimPosePrototype.x3d")
        )
        .addMeta(Meta.new()
            .setName("license")
            .setContent("https://www.web3d.org/x3d/content/examples/license.html")
        )
    )
    .setScene(Scene.new()
        .addChild(WorldInfo.new()
            .setDEF("ModelInfo")
            .setInfo(["Design to illustrate a potential HAnimPose node"].to_java Java::java.lang.String)
            .setTitle("HAnimPosePrototype.x3d")
        )
        .addChild(Background.new()
            .setSkyColor([0.8, 0.8, 1].to_java Java::float)
        )
        .addChild(NavigationInfo.new()
        )
        .addChild(Group.new()
            .setDEF("HandleInlineLoading")
          .addComments(CommentsBlock.new("Multiple HAnimHumanoid Inline/IMPORT models are available to support testing: Characters/ JinLOA1 JinLOA2 JinLOA3 JinLOA4 ../Skin/JoeKick ../Skin/JoeSkeletonSkinSite ../Skin/BoxMan1 ../Skin/BoxMan2"))
          .addComments(CommentsBlock.new("Also tested satisfactorily: KoreanCharacter01Jin KoreanCharacter02Chul KoreanCharacter03Hyun KoreanCharacter04Young KoreanCharacter05Ju KoreanCharacter06Ga KoreanCharacter07No KoreanCharacter08Da KoreanCharacter09Ru KoreanCharacter10Mi KoreanCharacter11Min KoreanCharacter12Sun"))
            .addChild(Inline.new()
                .setDEF("HumanoidInline")
                .setDescription("remote HAnimHumanoid for IMPORT")
                .setUrl(["../Skin/BoxMan2.x3d", "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Skin/BoxMan2.x3d"].to_java Java::java.lang.String)
            )
          .addComments(CommentsBlock.new("Note that the following importedDEF must match the EXPORT name found in remote file"))
            .addChild(IMPORT.new()
                .setAS("HumanoidImported")
                .setImportedDEF("BoxMan2")
                .setInlineDEF("HumanoidInline")
            )
            .addChild(LoadSensor.new()
                .setDEF("HumanoidInlineLoadSensor")
                .setTimeOut(2.0)
                .addChild(Inline.new()
                    .setUSE("HumanoidInline")
                )
            )
        )
        .addChild(ProtoDeclare.new()
            .setName("HAnimPose")
            .setAppinfo("Experimental node to assign joint values to a humanoid and assume a pose. Assumes that baseline HAnimHumanoid configuration must be I pose, which can be achieved by resetting every HAnimJoint to default values.")
            .setProtoInterface(ProtoInterface.new()
                .addField(Field.new()
                    .setName("parentHAnimHumanoid")
                    .setAccessType("inputOutput")
                    .setAppinfo("HAnimHumanoid for this Pose to act upon")
                    .setType("SFNode")
              .addComments(CommentsBlock.new("HAnimHumanoid initialization node goes here, this field is only used in the prototype implementation"))
                )
                .addField(Field.new()
                    .setName("name")
                    .setAccessType("inputOutput")
                    .setAppinfo("name of this pose")
                    .setType("SFString")
                    .setValue("newPoseName")
                )
                .addField(Field.new()
                    .setName("children")
                    .setAccessType("inputOutput")
                    .setAppinfo("joint values to apply to HAnimHumanoid")
                    .setType("MFNode")
              .addComments(CommentsBlock.new("initializating Joint nodes (if any) go here"))
                )
                .addField(Field.new()
                    .setName("description")
                    .setAccessType("inputOutput")
                    .setAppinfo("explanation of purpose")
                    .setType("SFString")
                )
                .addField(Field.new()
                    .setName("enabled")
                    .setAccessType("inputOutput")
                    .setAppinfo("default value true")
                    .setType("SFBool")
                    .setValue("true")
                )
                .addField(Field.new()
                    .setName("loa")
                    .setAccessType("initializeOnly")
                    .setAppinfo("default is no loa")
                    .setType("SFInt32")
                    .setValue("-1")
                )
                .addField(Field.new()
                    .setName("transitionDuration")
                    .setAccessType("inputOutput")
                    .setAppinfo("how many seconds to achieve the pose")
                    .setType("SFTime")
                    .setValue("0")
                )
                .addField(Field.new()
                    .setName("metadata")
                    .setAccessType("inputOutput")
                    .setAppinfo("single Metadata* node")
                    .setType("SFNode")
                )
                .addField(Field.new()
                    .setName("isActive")
                    .setAccessType("outputOnly")
                    .setAppinfo("event indicating when pose transition is active")
                    .setType("SFBool")
                )
                .addField(Field.new()
                    .setName("commencePose")
                    .setAccessType("inputOnly")
                    .setAppinfo("this event tells the HAnimPose node to fully transition, equivalent to set_fraction=1")
                    .setType("SFBool")
                )
                .addField(Field.new()
                    .setName("resetAllJoints")
                    .setAccessType("inputOnly")
                    .setAppinfo("reset the skeleton to I pose with all joints zeroed")
                    .setType("SFBool")
                )
                .addField(Field.new()
                    .setName("set_fraction")
                    .setAccessType("inputOnly")
                    .setAppinfo("allows transition to proceed incrementally from fraction [0..10")
                    .setType("SFFloat")
                )
                .addField(Field.new()
                    .setName("set_startTime")
                    .setAccessType("inputOnly")
                    .setAppinfo("starts the animation clock")
                    .setType("SFTime")
                )
                .addField(Field.new()
                    .setName("isLoaded")
                    .setAccessType("inputOnly")
                    .setAppinfo("possible notification from LoadSensor if using HAnimHumanoid Inline/IMPORT AS/USE")
                    .setType("SFBool")
                )
                .addField(Field.new()
                    .setName("traceEnabled")
                    .setAccessType("inputOutput")
                    .setAppinfo("debug trace to Browser output console this is a local prototype field")
                    .setType("SFBool")
                    .setValue("true")
                )
            )
            .setProtoBody(ProtoBody.new()
                .addChild(TimeSensor.new()
                    .setDEF("ClockTimeSensor")
                    .setDescription("control timing of pose animation when triggered")
                    .setIS(IS.new()
                        .addConnect(Connect.new()
                            .setNodeField("enabled")
                            .setProtoField("enabled")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("cycleInterval")
                            .setProtoField("transitionDuration")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("isActive")
                            .setProtoField("isActive")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("startTime")
                            .setProtoField("set_startTime")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("metadata")
                            .setProtoField("metadata")
                        )
                    )
                )
                .addChild(TimeSensor.new()
                    .setDEF("ResetTimeSensor")
                    .setDescription("control timing of skeleton reset to \"A\" pose when triggered")
                    .setIS(IS.new()
                        .addConnect(Connect.new()
                            .setNodeField("enabled")
                            .setProtoField("enabled")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("cycleInterval")
                            .setProtoField("transitionDuration")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("startTime")
                            .setProtoField("set_startTime")
                        )
                .addComments(CommentsBlock.new("no need to report isActive since that would be duplicative"))
                    )
                )
                .addChild(Group.new()
                    .setDEF("PoseInterpolatorGroup")
              .addComments(CommentsBlock.new("interpolators generated by prototype script appear here at runtime"))
                )
                .addChild(Group.new()
                    .setDEF("ResetInterpolatorGroup")
              .addComments(CommentsBlock.new("interpolators generated by prototype script appear here at runtime"))
                )
                .addChild(Script.new()
                    .setDEF("HAnimPoseScript")
                    .setDirectOutput(true)
                    .setUrl(["HAnimPosePrototypeScript.js", "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Poses/HAnimPosePrototypeScript.js"].to_java Java::java.lang.String)
                    .addField(Field.new()
                        .setName("parentHAnimHumanoid")
                        .setAccessType("inputOutput")
                        .setAppinfo("Humanoid for this Pose to act upon")
                        .setType("SFNode")
                .addComments(CommentsBlock.new("initialization node (if any) goes here"))
                    )
                    .addField(Field.new()
                        .setName("name")
                        .setAccessType("inputOutput")
                        .setAppinfo("name of this pose")
                        .setType("SFString")
                    )
                    .addField(Field.new()
                        .setName("loa")
                        .setAccessType("initializeOnly")
                        .setAppinfo("default is no loa")
                        .setType("SFInt32")
                    )
                    .addField(Field.new()
                        .setName("description")
                        .setAccessType("inputOutput")
                        .setAppinfo("explanation of purpose")
                        .setType("SFString")
                    )
                    .addField(Field.new()
                        .setName("enabled")
                        .setAccessType("inputOutput")
                        .setAppinfo("default value true")
                        .setType("SFBool")
                    )
                    .addField(Field.new()
                        .setName("resetAllJoints")
                        .setAccessType("inputOnly")
                        .setAppinfo("reset the skeleton to I pose with all joints zeroed")
                        .setType("SFBool")
                    )
                    .addField(Field.new()
                        .setName("children")
                        .setAccessType("inputOutput")
                        .setAppinfo("joint values to apply to HAnimHumanoid")
                        .setType("MFNode")
                .addComments(CommentsBlock.new("initializating Joint nodes (if any) go here"))
                    )
                    .addField(Field.new()
                        .setName("transitionDuration")
                        .setAccessType("inputOutput")
                        .setAppinfo("how many seconds to achieve the pose")
                        .setType("SFTime")
                    )
                    .addField(Field.new()
                        .setName("commencePose")
                        .setAccessType("inputOnly")
                        .setAppinfo("this event tells the HAnimPose node to fully transition, equivalent to set_fraction=1")
                        .setType("SFBool")
                    )
                    .addField(Field.new()
                        .setName("set_fraction")
                        .setAccessType("inputOnly")
                        .setAppinfo("allows transition to proceed incrementally from fraction [0..10")
                        .setType("SFFloat")
                    )
                    .addField(Field.new()
                        .setName("set_startTime")
                        .setAccessType("inputOnly")
                        .setAppinfo("starts the animation clock")
                        .setType("SFTime")
                    )
                    .addField(Field.new()
                        .setName("isLoaded")
                        .setAccessType("inputOnly")
                        .setAppinfo("possible notification from LoadSensor if using HAnimHumanoid Inline/IMPORT AS/USE")
                        .setType("SFBool")
                    )
                    .addField(Field.new()
                        .setName("traceEnabled")
                        .setAccessType("inputOutput")
                        .setAppinfo("debug trace to Browser output console")
                        .setType("SFBool")
                    )
                    .addField(Field.new()
                        .setName("numberPoseJoints")
                        .setAccessType("initializeOnly")
                        .setAppinfo("number of joints found in children field")
                        .setType("SFInt32")
                        .setValue("0")
                    )
                    .addField(Field.new()
                        .setName("numberSkeletonJoints")
                        .setAccessType("initializeOnly")
                        .setAppinfo("number of joints found in Humanoid")
                        .setType("SFInt32")
                        .setValue("0")
                    )
                    .addField(Field.new()
                        .setName("jointOrientationInterpolators")
                        .setAccessType("initializeOnly")
                        .setAppinfo("OrientationInterpolator node array matching number of children")
                        .setType("MFNode")
                .addComments(CommentsBlock.new("initializating Joint nodes (if any) go here"))
                    )
                    .setIS(IS.new()
                        .addConnect(Connect.new()
                            .setNodeField("parentHAnimHumanoid")
                            .setProtoField("parentHAnimHumanoid")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("name")
                            .setProtoField("name")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("loa")
                            .setProtoField("loa")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("description")
                            .setProtoField("description")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("enabled")
                            .setProtoField("enabled")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("resetAllJoints")
                            .setProtoField("resetAllJoints")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("children")
                            .setProtoField("children")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("transitionDuration")
                            .setProtoField("transitionDuration")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("commencePose")
                            .setProtoField("commencePose")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("set_fraction")
                            .setProtoField("set_fraction")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("set_startTime")
                            .setProtoField("set_startTime")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("isLoaded")
                            .setProtoField("isLoaded")
                        )
                        .addConnect(Connect.new()
                            .setNodeField("traceEnabled")
                            .setProtoField("traceEnabled")
                        )
                    )
                )
            )
        )
        .addChild(Viewpoint.new()
            .setDescription("HAnimPose for HumanoidInline IMPORT model")
            .setPosition([0, 1, 4].to_java Java::float)
        )
        .addComments(CommentsBlock.new("no longer required: including full model <HAnimHumanoid DEF='hanim_JinLOA1' loa='2' name='JinLOA1' scale='0.0225 0.0225 0.0225'> etc..."))
        .addChild(ProtoInstance.new()
            .setName("HAnimPose")
            .setDEF("T_Pose")
            .addFieldValue(FieldValue.new()
                .setName("name")
                .setValue("T")
            )
            .addFieldValue(FieldValue.new()
                .setName("enabled")
                .setValue("true")
            )
            .addFieldValue(FieldValue.new()
                .setName("parentHAnimHumanoid")
            .addComments(CommentsBlock.new("HumanoidImported for Inline/IMPORT (or else USE='hanim_JinLOA1' if copy of original HAnimHumanoid is embedded in this model)"))
            .addComments(CommentsBlock.new("debug test case for incorrect node type: <HAnimJoint DEF=\"ErrorDiagnosticsTest\" USE='HumanoidImported'/>"))
                .addChild(HAnimHumanoid.new()
                    .setUSE("HumanoidImported")
                )
            )
            .addFieldValue(FieldValue.new()
                .setName("loa")
                .setValue("1")
            )
            .addFieldValue(FieldValue.new()
                .setName("description")
                .setValue("arms stretched outward and level similar to letter T")
            )
            .addFieldValue(FieldValue.new()
                .setName("children")
                .addChild(HAnimJoint.new()
                    .setName("l_shoulder")
                    .setDEF("PoseJoint_l_shoulder_1")
                    .setDescription("left shoulder")
                    .setRotation([0, 0, 1, 1.57].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("r_shoulder")
                    .setDEF("PoseJoint_r_shoulder_1")
                    .setDescription("right shoulder")
                    .setRotation([0, 0, -1, 1.57].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
            .addComments(CommentsBlock.new("test case for illegal child triggers validation reports without problem: HAnimSegment DEF='TestCase' description='confirm type checking' name='specialTestCase'/"))
            )
            .addFieldValue(FieldValue.new()
                .setName("transitionDuration")
                .setValue("1.3")
            )
        )
        .addChild(ProtoInstance.new()
            .setName("HAnimPose")
            .setDEF("A_Pose")
            .addFieldValue(FieldValue.new()
                .setName("name")
                .setValue("A")
            )
            .addFieldValue(FieldValue.new()
                .setName("enabled")
                .setValue("true")
            )
            .addFieldValue(FieldValue.new()
                .setName("parentHAnimHumanoid")
            .addComments(CommentsBlock.new("HumanoidImported for Inline/IMPORT (or else USE='hanim_JinLOA1' if copy of original HAnimHumanoid is embedded in this model)"))
                .addChild(HAnimHumanoid.new()
                    .setUSE("HumanoidImported")
                )
            )
            .addFieldValue(FieldValue.new()
                .setName("loa")
                .setValue("1")
            )
            .addFieldValue(FieldValue.new()
                .setName("description")
                .setValue("arms stretched outward and downward similar to letter A")
            )
            .addFieldValue(FieldValue.new()
                .setName("children")
                .addChild(HAnimJoint.new()
                    .setName("l_shoulder")
                    .setDEF("PoseJoint_l_shoulder")
                    .setDescription("left shoulder")
                    .setRotation([0, 0, 1, 0.5].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("r_shoulder")
                    .setDEF("PoseJoint_r_shoulder")
                    .setDescription("right shoulder")
                    .setRotation([0, 0, -1, 0.5].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
            )
            .addFieldValue(FieldValue.new()
                .setName("transitionDuration")
                .setValue("1.2")
            )
            .addFieldValue(FieldValue.new()
                .setName("traceEnabled")
                .setValue("true")
            )
        )
        .addChild(ProtoInstance.new()
            .setName("HAnimPose")
            .setDEF("TouchDown_Pose")
          .addComments(CommentsBlock.new("thanks Joe"))
            .addFieldValue(FieldValue.new()
                .setName("name")
                .setValue("TouchDown")
            )
            .addFieldValue(FieldValue.new()
                .setName("enabled")
                .setValue("true")
            )
            .addFieldValue(FieldValue.new()
                .setName("parentHAnimHumanoid")
            .addComments(CommentsBlock.new("HumanoidImported for Inline/IMPORT (or else USE='hanim_JinLOA1' if copy of original HAnimHumanoid is embedded in this model)"))
                .addChild(HAnimHumanoid.new()
                    .setUSE("HumanoidImported")
                )
            )
            .addFieldValue(FieldValue.new()
                .setName("loa")
                .setValue("1")
            )
            .addFieldValue(FieldValue.new()
                .setName("description")
                .setValue("arms and legs stretched outward providing a TouchDown gesture")
            )
            .addFieldValue(FieldValue.new()
                .setName("children")
                .addChild(HAnimJoint.new()
                    .setName("humanoid_root")
                    .setRotation([0, 1, 0, -0.698132].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("l_hip")
                    .setRotation([-1, 1, 1, 1].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("l_knee")
                    .setRotation([1, 0, 0, 1].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("l_talocrural")
                    .setRotation([-0.2, 0, 0.1, 0.225].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("r_hip")
                    .setRotation([-1, -1, -1, 1].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("r_knee")
                    .setRotation([1, 0, 0, 1].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("r_talocrural")
                    .setRotation([-0.2, 0, 0.1, 0.25].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("vl5")
                    .setRotation([0, 0, 0.01, 0.2].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("vt10")
                    .setRotation([0, 0, 0.01, 0.1].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("vc4")
                    .setRotation([0, 0, -0.01, 0.15].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("l_shoulder")
                    .setRotation([-1, 0.5, 1, 2].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("l_elbow")
                    .setRotation([-1, 0, 0, 1].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("l_radiocarpal")
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("r_shoulder")
                    .setRotation([-1, -0.5, -1, 2.6].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("r_elbow")
                    .setRotation([-1, 0, 0, 1].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
                .addChild(HAnimJoint.new()
                    .setName("r_radiocarpal")
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
            )
            .addFieldValue(FieldValue.new()
                .setName("transitionDuration")
                .setValue("1.2")
            )
            .addFieldValue(FieldValue.new()
                .setName("traceEnabled")
                .setValue("true")
            )
        )
        .addChild(ProtoInstance.new()
            .setName("HAnimPose")
            .setDEF("I_Pose")
            .addFieldValue(FieldValue.new()
                .setName("name")
                .setValue("I")
            )
            .addFieldValue(FieldValue.new()
                .setName("enabled")
                .setValue("true")
            )
            .addFieldValue(FieldValue.new()
                .setName("parentHAnimHumanoid")
            .addComments(CommentsBlock.new("HumanoidImported for Inline/IMPORT (or else USE='hanim_JinLOA1' if copy of original HAnimHumanoid is embedded in this model)"))
                .addChild(HAnimHumanoid.new()
                    .setUSE("HumanoidImported")
                )
            )
            .addFieldValue(FieldValue.new()
                .setName("loa")
                .setValue("1")
            )
            .addFieldValue(FieldValue.new()
                .setName("description")
                .setValue("arms and legs straight down default binding pose for baseline Humanoid")
            )
            .addFieldValue(FieldValue.new()
                .setName("children")
            .addComments(CommentsBlock.new("not defining any children equals the default \"I\" pose"))
            )
            .addFieldValue(FieldValue.new()
                .setName("transitionDuration")
                .setValue("1.5")
            )
            .addFieldValue(FieldValue.new()
                .setName("traceEnabled")
                .setValue("true")
            )
        )
        .addChild(ProtoInstance.new()
            .setName("HAnimPose")
            .setDEF("H_Pose")
            .addFieldValue(FieldValue.new()
                .setName("name")
                .setValue("H")
            )
            .addFieldValue(FieldValue.new()
                .setName("enabled")
                .setValue("false")
            )
            .addFieldValue(FieldValue.new()
                .setName("description")
                .setValue("TODO experimental pose not yet implemented")
            )
            .addFieldValue(FieldValue.new()
                .setName("transitionDuration")
                .setValue("1.4")
            )
            .addFieldValue(FieldValue.new()
                .setName("traceEnabled")
                .setValue("true")
            )
          .addComments(CommentsBlock.new("<fieldValue name='loa' value='1'/>"))
        )
        .addChild(ProtoInstance.new()
            .setName("HAnimPose")
            .setDEF("FaceLeft_Pose")
            .addFieldValue(FieldValue.new()
                .setName("name")
                .setValue("FaceLeft")
            )
            .addFieldValue(FieldValue.new()
                .setName("enabled")
                .setValue("true")
            )
            .addFieldValue(FieldValue.new()
                .setName("parentHAnimHumanoid")
            .addComments(CommentsBlock.new("HumanoidImported for Inline/IMPORT (or else USE='hanim_JinLOA1' if copy of original HAnimHumanoid is embedded in this model)"))
                .addChild(HAnimHumanoid.new()
                    .setUSE("HumanoidImported")
                )
            )
            .addFieldValue(FieldValue.new()
                .setName("loa")
                .setValue("0")
            )
            .addFieldValue(FieldValue.new()
                .setName("description")
                .setValue("Only modify humanoid_root Joint node to face left")
            )
            .addFieldValue(FieldValue.new()
                .setName("children")
                .addChild(HAnimJoint.new()
                    .setName("humanoid_root")
                    .setDEF("FaceLeft_humanoid_root")
                    .setDescription("Only rotate the model")
                    .setRotation([0, 1, 0, 1.570796].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
            )
            .addFieldValue(FieldValue.new()
                .setName("transitionDuration")
                .setValue("1.1")
            )
            .addFieldValue(FieldValue.new()
                .setName("traceEnabled")
                .setValue("true")
            )
        )
        .addChild(ProtoInstance.new()
            .setName("HAnimPose")
            .setDEF("FaceRight_Pose")
            .addFieldValue(FieldValue.new()
                .setName("name")
                .setValue("FaceRight")
            )
            .addFieldValue(FieldValue.new()
                .setName("enabled")
                .setValue("true")
            )
            .addFieldValue(FieldValue.new()
                .setName("parentHAnimHumanoid")
            .addComments(CommentsBlock.new("HumanoidImported for Inline/IMPORT (or else USE='hanim_JinLOA1' if copy of original HAnimHumanoid is embedded in this model)"))
                .addChild(HAnimHumanoid.new()
                    .setUSE("HumanoidImported")
                )
            )
            .addFieldValue(FieldValue.new()
                .setName("loa")
                .setValue("0")
            )
            .addFieldValue(FieldValue.new()
                .setName("description")
                .setValue("Only modify humanoid_root Joint node to face right")
            )
            .addFieldValue(FieldValue.new()
                .setName("children")
                .addChild(HAnimJoint.new()
                    .setName("humanoid_root")
                    .setDEF("FaceRight_humanoid_root")
                    .setDescription("Only rotate the model")
                    .setRotation([0, 1, 0, -1.570796].to_java Java::float)
                    .setUlimit([0, 0, 0].to_java Java::float)
                    .setLlimit([0, 0, 0].to_java Java::float)
                )
            )
            .addFieldValue(FieldValue.new()
                .setName("transitionDuration")
                .setValue("1.1")
            )
            .addFieldValue(FieldValue.new()
                .setName("traceEnabled")
                .setValue("true")
            )
        )
        .addChild(Group.new()
            .setDEF("InterfaceButtonsGroup")
            .addChild(Transform.new()
                .setDEF("DisplayHeader")
                .setTranslation([0, 2, 0].to_java Java::float)
                .addChild(Shape.new()
                    .setGeometry(Text.new()
                        .setString(["HAnimPosePrototype example implementation"].to_java Java::java.lang.String)
                        .setFontStyle(FontStyle.new()
                            .setDEF("HeaderFont")
                            .setFamily(["SANS"].to_java Java::java.lang.String)
                            .setJustify(["MIDDLE", "MIDDLE"].to_java Java::java.lang.String)
                            .setSize(0.15)
                            .setStyle("BOLD")
                        )
                    )
                    .setAppearance(Appearance.new()
                        .setDEF("PoseTextAppearance")
                        .setMaterial(Material.new()
                            .setDiffuseColor([0.1, 0.5, 0.3].to_java Java::float)
                        )
                    )
                )
            )
            .addChild(Transform.new()
                .setDEF("T_PoseInterface")
                .setTranslation([-1.5, 1.5, 0].to_java Java::float)
                .addChild(Shape.new()
                    .setGeometry(Text.new()
                        .setString(["\"T\" Pose"].to_java Java::java.lang.String)
                        .setFontStyle(FontStyle.new()
                            .setDEF("SharedFont")
                            .setFamily(["SANS"].to_java Java::java.lang.String)
                            .setJustify(["MIDDLE", "MIDDLE"].to_java Java::java.lang.String)
                            .setSize(0.1)
                            .setStyle("BOLD")
                        )
                    )
                    .setAppearance(Appearance.new()
                        .setUSE("PoseTextAppearance")
                    )
                )
                .addChild(Shape.new()
                    .setAppearance(Appearance.new()
                        .setDEF("TransparentAppearance")
                        .setMaterial(Material.new()
                            .setTransparency(0.8)
                        )
                    )
                    .setGeometry(Box.new()
                        .setSize([0.45, 0.2, 0.001].to_java Java::float)
                    )
                )
                .addChild(TouchSensor.new()
                    .setDEF("T_PoseTouchSensor")
                    .setDescription("select to move shoulders to \"T\" pose, leave other joints unchanged")
                )
                .addChild(ROUTE.new()
                    .setFromField("isActive")
                    .setFromNode("T_PoseTouchSensor")
                    .setToField("commencePose")
                    .setToNode("T_Pose")
                )
            )
            .addChild(Transform.new()
                .setDEF("A_PoseInterface")
                .setTranslation([-1.5, 1, 0].to_java Java::float)
                .addChild(Shape.new()
                    .setGeometry(Text.new()
                        .setString(["\"A\" Pose"].to_java Java::java.lang.String)
                        .setFontStyle(FontStyle.new()
                            .setUSE("SharedFont")
                        )
                    )
                    .setAppearance(Appearance.new()
                        .setUSE("PoseTextAppearance")
                    )
                )
                .addChild(Shape.new()
              .addComments(CommentsBlock.new("Selectable Text transparent Box for easy user selection"))
                    .setAppearance(Appearance.new()
                        .setUSE("TransparentAppearance")
                    )
                    .setGeometry(Box.new()
                        .setSize([0.45, 0.2, 0.001].to_java Java::float)
                    )
                )
                .addChild(TouchSensor.new()
                    .setDEF("A_PoseTouchSensor")
                    .setDescription("select to move shoulders to \"A\" pose, leave other joints unchanged")
                )
                .addChild(ROUTE.new()
                    .setFromField("isActive")
                    .setFromNode("A_PoseTouchSensor")
                    .setToField("commencePose")
                    .setToNode("A_Pose")
                )
            )
            .addChild(Transform.new()
                .setDEF("TouchDown_PoseInterface")
                .setTranslation([-1.5, 0.5, 0].to_java Java::float)
                .addChild(Shape.new()
                    .setGeometry(Text.new()
                        .setString(["TouchDown Pose"].to_java Java::java.lang.String)
                        .setFontStyle(FontStyle.new()
                            .setUSE("SharedFont")
                        )
                    )
                    .setAppearance(Appearance.new()
                        .setUSE("PoseTextAppearance")
                    )
                )
                .addChild(Shape.new()
              .addComments(CommentsBlock.new("Selectable Text transparent Box for easy user selection"))
                    .setAppearance(Appearance.new()
                        .setUSE("TransparentAppearance")
                    )
                    .setGeometry(Box.new()
                        .setSize([0.85, 0.2, 0.001].to_java Java::float)
                    )
                )
                .addChild(TouchSensor.new()
                    .setDEF("TouchDown_PoseTouchSensor")
                    .setDescription("select to transition all joints to TouchDown pose")
                )
                .addChild(ROUTE.new()
                    .setFromField("isActive")
                    .setFromNode("TouchDown_PoseTouchSensor")
                    .setToField("commencePose")
                    .setToNode("TouchDown_Pose")
                )
            )
            .addChild(Transform.new()
                .setDEF("I_PoseInterface")
                .setTranslation([-1.5, 0, 0].to_java Java::float)
                .addChild(Shape.new()
                    .setGeometry(Text.new()
                        .setString(["\"I\" Pose"].to_java Java::java.lang.String)
                        .setFontStyle(FontStyle.new()
                            .setUSE("SharedFont")
                        )
                    )
                    .setAppearance(Appearance.new()
                        .setUSE("PoseTextAppearance")
                    )
                )
                .addChild(Shape.new()
              .addComments(CommentsBlock.new("Selectable Text transparent Box for easy user selection"))
                    .setAppearance(Appearance.new()
                        .setUSE("TransparentAppearance")
                    )
                    .setGeometry(Box.new()
                        .setSize([0.45, 0.2, 0.001].to_java Java::float)
                    )
                )
                .addChild(TouchSensor.new()
                    .setDEF("I_PoseTouchSensor")
                    .setDescription("select to transition all joints to \"I\" pose")
                )
                .addChild(ROUTE.new()
                    .setFromField("isActive")
                    .setFromNode("I_PoseTouchSensor")
                    .setToField("commencePose")
                    .setToNode("I_Pose")
                )
            )
            .addChild(Transform.new()
                .setDEF("FaceLeftPoseInterface")
                .setTranslation([1.5, 1.5, 0].to_java Java::float)
                .addChild(Shape.new()
                    .setGeometry(Text.new()
                        .setString(["Face Left Pose"].to_java Java::java.lang.String)
                        .setFontStyle(FontStyle.new()
                            .setUSE("SharedFont")
                        )
                    )
                    .setAppearance(Appearance.new()
                        .setUSE("PoseTextAppearance")
                    )
                )
                .addChild(Shape.new()
                    .setAppearance(Appearance.new()
                        .setUSE("TransparentAppearance")
                    )
                    .setGeometry(Box.new()
                        .setSize([0.9, 0.2, 0.001].to_java Java::float)
                    )
                )
                .addChild(TouchSensor.new()
                    .setDEF("FaceLeftTouchSensor")
                    .setDescription("select to rotate body and Face Left, leave other joints unchanged")
                )
                .addChild(ROUTE.new()
                    .setFromField("isActive")
                    .setFromNode("FaceLeftTouchSensor")
                    .setToField("commencePose")
                    .setToNode("FaceLeft_Pose")
                )
            )
            .addChild(Transform.new()
                .setDEF("FaceRightPoseInterface")
                .setTranslation([1.5, 1, 0].to_java Java::float)
                .addChild(Shape.new()
                    .setGeometry(Text.new()
                        .setString(["Face Right Pose"].to_java Java::java.lang.String)
                        .setFontStyle(FontStyle.new()
                            .setUSE("SharedFont")
                        )
                    )
                    .setAppearance(Appearance.new()
                        .setUSE("PoseTextAppearance")
                    )
                )
                .addChild(Shape.new()
              .addComments(CommentsBlock.new("Selectable Text transparent Box for easy user selection"))
                    .setAppearance(Appearance.new()
                        .setUSE("TransparentAppearance")
                    )
                    .setGeometry(Box.new()
                        .setSize([0.9, 0.2, 0.001].to_java Java::float)
                    )
                )
                .addChild(TouchSensor.new()
                    .setDEF("FaceRightTouchSensor")
                    .setDescription("select to rotate body and Face Right, leave other joints unchanged")
                )
                .addChild(ROUTE.new()
                    .setFromField("isActive")
                    .setFromNode("FaceRightTouchSensor")
                    .setToField("commencePose")
                    .setToNode("FaceRight_Pose")
                )
            )
            .addChild(Transform.new()
                .setDEF("AnimatePosesInterface")
                .setTranslation([1.5, 0.5, 0].to_java Java::float)
                .addChild(Shape.new()
                    .setGeometry(Text.new()
                        .setString(["Direct animation", "to, from \"I\" Pose"].to_java Java::java.lang.String)
                        .setFontStyle(FontStyle.new()
                            .setUSE("SharedFont")
                        )
                    )
                    .setAppearance(Appearance.new()
                        .setDEF("AnimationTextAppearance")
                        .setMaterial(Material.new()
                            .setDiffuseColor([0.1, 0.2, 0.3].to_java Java::float)
                        )
                    )
                )
                .addChild(Shape.new()
              .addComments(CommentsBlock.new("Selectable Text transparent Box for easy user selection"))
                    .setAppearance(Appearance.new()
                        .setUSE("TransparentAppearance")
                    )
                    .setGeometry(Box.new()
                        .setSize([0.9, 0.25, 0.001].to_java Java::float)
                    )
                )
                .addChild(TouchSensor.new()
                    .setDEF("AnimatePosesTouchSensor")
                    .setDescription("select to animate current pose to \"I\" pose, then back to original pose, using TimeSensor events")
                )
            .addComments(CommentsBlock.new("cycleInterval=4 also hard-coded in script execution message"))
                .addChild(TimeSensor.new()
                    .setDEF("AnimatePosesClock")
                    .setCycleInterval(4.0)
                    .setDescription("directly animate several poses")
                )
                .addChild(ScalarInterpolator.new()
                    .setDEF("AnimatePosesLoopInterpolator")
                    .setKey([0, 0.05, 0.45, 0.55, 0.95, 1].to_java Java::float)
                    .setKeyValue([0, 0, 1, 1, 0, 0].to_java Java::float)
                )
                .addChild(ROUTE.new()
                    .setFromField("touchTime")
                    .setFromNode("AnimatePosesTouchSensor")
                    .setToField("startTime")
                    .setToNode("AnimatePosesClock")
                )
                .addChild(ROUTE.new()
                    .setFromField("fraction_changed")
                    .setFromNode("AnimatePosesClock")
                    .setToField("set_fraction")
                    .setToNode("AnimatePosesLoopInterpolator")
                )
                .addChild(ROUTE.new()
                    .setFromField("value_changed")
                    .setFromNode("AnimatePosesLoopInterpolator")
                    .setToField("set_fraction")
                    .setToNode("I_Pose")
                )
            )
            .addChild(Transform.new()
                .setDEF("ResetDefaultPoseInterface")
                .setTranslation([1.5, 0, 0].to_java Java::float)
                .addChild(Shape.new()
                    .setGeometry(Text.new()
                        .setString(["Reset All Joints", "to Default \"I\" Pose"].to_java Java::java.lang.String)
                        .setFontStyle(FontStyle.new()
                            .setUSE("SharedFont")
                        )
                    )
                    .setAppearance(Appearance.new()
                        .setUSE("AnimationTextAppearance")
                    )
                )
                .addChild(Shape.new()
              .addComments(CommentsBlock.new("Selectable Text transparent Box for easy user selection"))
                    .setAppearance(Appearance.new()
                        .setUSE("TransparentAppearance")
                    )
                    .setGeometry(Box.new()
                        .setSize([0.9, 0.25, 0.001].to_java Java::float)
                    )
                )
                .addChild(TouchSensor.new()
                    .setDEF("ResetPoseTouchSensor")
                    .setDescription("select to immediately Rezero All Joints (to default \"I\" Pose) by sending resetAllJoints event")
                )
                .addChild(ROUTE.new()
                    .setFromField("isActive")
                    .setFromNode("ResetPoseTouchSensor")
                    .setToField("resetAllJoints")
                    .setToNode("FaceLeft_Pose")
                )
            )
        )
        .addChild(Group.new()
            .setDEF("HandleInlineLoadsensorRouting")
            .addChild(ROUTE.new()
                .setFromField("isLoaded")
                .setFromNode("HumanoidInlineLoadSensor")
                .setToField("isLoaded")
                .setToNode("A_Pose")
            )
            .addChild(ROUTE.new()
                .setFromField("isLoaded")
                .setFromNode("HumanoidInlineLoadSensor")
                .setToField("isLoaded")
                .setToNode("H_Pose")
            )
            .addChild(ROUTE.new()
                .setFromField("isLoaded")
                .setFromNode("HumanoidInlineLoadSensor")
                .setToField("isLoaded")
                .setToNode("I_Pose")
            )
            .addChild(ROUTE.new()
                .setFromField("isLoaded")
                .setFromNode("HumanoidInlineLoadSensor")
                .setToField("isLoaded")
                .setToNode("T_Pose")
            )
            .addChild(ROUTE.new()
                .setFromField("isLoaded")
                .setFromNode("HumanoidInlineLoadSensor")
                .setToField("isLoaded")
                .setToNode("FaceLeft_Pose")
            )
            .addChild(ROUTE.new()
                .setFromField("isLoaded")
                .setFromNode("HumanoidInlineLoadSensor")
                .setToField("isLoaded")
                .setToNode("FaceRight_Pose")
            )
            .addChild(ROUTE.new()
                .setFromField("isLoaded")
                .setFromNode("HumanoidInlineLoadSensor")
                .setToField("isLoaded")
                .setToNode("TouchDown_Pose")
            )
        )
    )
x3D0.toFileX3D "../data/HAnimPosePrototype.new.jruby.x3d"
x3D0.toFileJSON "../data/HAnimPosePrototype.new.jruby.x3dj"
