Add skipping of unused nodes.
parent
350f2ea1d3
commit
3a32612b71
|
@ -124,6 +124,103 @@ struct WordIterator {
|
|||
|
||||
const char *WordIterator::whitespace = ", \t\r\n";
|
||||
|
||||
void skipUnsupportedNode(const std::string &pParentNodeName, XmlNode &node) {
|
||||
static const size_t Uns_Skip_Len = 192;
|
||||
static const char *Uns_Skip[Uns_Skip_Len] = {
|
||||
// CAD geometry component
|
||||
"CADAssembly", "CADFace", "CADLayer", "CADPart", "IndexedQuadSet", "QuadSet",
|
||||
// Core
|
||||
"ROUTE", "ExternProtoDeclare", "ProtoDeclare", "ProtoInstance", "ProtoInterface", "WorldInfo",
|
||||
// Distributed interactive simulation (DIS) component
|
||||
"DISEntityManager", "DISEntityTypeMapping", "EspduTransform", "ReceiverPdu", "SignalPdu", "TransmitterPdu",
|
||||
// Cube map environmental texturing component
|
||||
"ComposedCubeMapTexture", "GeneratedCubeMapTexture", "ImageCubeMapTexture",
|
||||
// Environmental effects component
|
||||
"Background", "Fog", "FogCoordinate", "LocalFog", "TextureBackground",
|
||||
// Environmental sensor component
|
||||
"ProximitySensor", "TransformSensor", "VisibilitySensor",
|
||||
// Followers component
|
||||
"ColorChaser", "ColorDamper", "CoordinateChaser", "CoordinateDamper", "OrientationChaser", "OrientationDamper", "PositionChaser", "PositionChaser2D",
|
||||
"PositionDamper", "PositionDamper2D", "ScalarChaser", "ScalarDamper", "TexCoordChaser2D", "TexCoordDamper2D",
|
||||
// Geospatial component
|
||||
"GeoCoordinate", "GeoElevationGrid", "GeoLocation", "GeoLOD", "GeoMetadata", "GeoOrigin", "GeoPositionInterpolator", "GeoProximitySensor",
|
||||
"GeoTouchSensor", "GeoTransform", "GeoViewpoint",
|
||||
// Humanoid Animation (H-Anim) component
|
||||
"HAnimDisplacer", "HAnimHumanoid", "HAnimJoint", "HAnimSegment", "HAnimSite",
|
||||
// Interpolation component
|
||||
"ColorInterpolator", "CoordinateInterpolator", "CoordinateInterpolator2D", "EaseInEaseOut", "NormalInterpolator", "OrientationInterpolator",
|
||||
"PositionInterpolator", "PositionInterpolator2D", "ScalarInterpolator", "SplinePositionInterpolator", "SplinePositionInterpolator2D",
|
||||
"SplineScalarInterpolator", "SquadOrientationInterpolator",
|
||||
// Key device sensor component
|
||||
"KeySensor", "StringSensor",
|
||||
// Layering component
|
||||
"Layer", "LayerSet", "Viewport",
|
||||
// Layout component
|
||||
"Layout", "LayoutGroup", "LayoutLayer", "ScreenFontStyle", "ScreenGroup",
|
||||
// Navigation component
|
||||
"Billboard", "Collision", "LOD", "NavigationInfo", "OrthoViewpoint", "Viewpoint", "ViewpointGroup",
|
||||
// Networking component
|
||||
"EXPORT", "IMPORT", "Anchor", "LoadSensor",
|
||||
// NURBS component
|
||||
"Contour2D", "ContourPolyline2D", "CoordinateDouble", "NurbsCurve", "NurbsCurve2D", "NurbsOrientationInterpolator", "NurbsPatchSurface",
|
||||
"NurbsPositionInterpolator", "NurbsSet", "NurbsSurfaceInterpolator", "NurbsSweptSurface", "NurbsSwungSurface", "NurbsTextureCoordinate",
|
||||
"NurbsTrimmedSurface",
|
||||
// Particle systems component
|
||||
"BoundedPhysicsModel", "ConeEmitter", "ExplosionEmitter", "ForcePhysicsModel", "ParticleSystem", "PointEmitter", "PolylineEmitter", "SurfaceEmitter",
|
||||
"VolumeEmitter", "WindPhysicsModel",
|
||||
// Picking component
|
||||
"LinePickSensor", "PickableGroup", "PointPickSensor", "PrimitivePickSensor", "VolumePickSensor",
|
||||
// Pointing device sensor component
|
||||
"CylinderSensor", "PlaneSensor", "SphereSensor", "TouchSensor",
|
||||
// Rendering component
|
||||
"ClipPlane",
|
||||
// Rigid body physics
|
||||
"BallJoint", "CollidableOffset", "CollidableShape", "CollisionCollection", "CollisionSensor", "CollisionSpace", "Contact", "DoubleAxisHingeJoint",
|
||||
"MotorJoint", "RigidBody", "RigidBodyCollection", "SingleAxisHingeJoint", "SliderJoint", "UniversalJoint",
|
||||
// Scripting component
|
||||
"Script",
|
||||
// Programmable shaders component
|
||||
"ComposedShader", "FloatVertexAttribute", "Matrix3VertexAttribute", "Matrix4VertexAttribute", "PackagedShader", "ProgramShader", "ShaderPart",
|
||||
"ShaderProgram",
|
||||
// Shape component
|
||||
"FillProperties", "LineProperties", "TwoSidedMaterial",
|
||||
// Sound component
|
||||
"AudioClip", "Sound",
|
||||
// Text component
|
||||
"FontStyle", "Text",
|
||||
// Texturing3D Component
|
||||
"ComposedTexture3D", "ImageTexture3D", "PixelTexture3D", "TextureCoordinate3D", "TextureCoordinate4D", "TextureTransformMatrix3D", "TextureTransform3D",
|
||||
// Texturing component
|
||||
"MovieTexture", "MultiTexture", "MultiTextureCoordinate", "MultiTextureTransform", "PixelTexture", "TextureCoordinateGenerator", "TextureProperties",
|
||||
// Time component
|
||||
"TimeSensor",
|
||||
// Event Utilities component
|
||||
"BooleanFilter", "BooleanSequencer", "BooleanToggle", "BooleanTrigger", "IntegerSequencer", "IntegerTrigger", "TimeTrigger",
|
||||
// Volume rendering component
|
||||
"BlendedVolumeStyle", "BoundaryEnhancementVolumeStyle", "CartoonVolumeStyle", "ComposedVolumeStyle", "EdgeEnhancementVolumeStyle", "IsoSurfaceVolumeData",
|
||||
"OpacityMapVolumeStyle", "ProjectionVolumeStyle", "SegmentedVolumeData", "ShadedVolumeStyle", "SilhouetteEnhancementVolumeStyle", "ToneMappedVolumeStyle",
|
||||
"VolumeData"
|
||||
};
|
||||
|
||||
const std::string nn = node.name();
|
||||
bool found = false;
|
||||
bool close_found = false;
|
||||
|
||||
for (size_t i = 0; i < Uns_Skip_Len; i++) {
|
||||
if (nn == Uns_Skip[i]) {
|
||||
found = true;
|
||||
if (node.empty()) {
|
||||
close_found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!found) throw DeadlyImportError("Unknown node \"" + nn + "\" in " + pParentNodeName + ".");
|
||||
|
||||
LogInfo("Skipping node \"" + nn + "\" in " + pParentNodeName + ".");
|
||||
}
|
||||
|
||||
X3DImporter::X3DImporter() :
|
||||
mNodeElementCur(nullptr),
|
||||
mScene(nullptr) {
|
||||
|
|
Loading…
Reference in New Issue