Add skipping of unused nodes.
parent
350f2ea1d3
commit
3a32612b71
|
@ -124,6 +124,103 @@ struct WordIterator {
|
||||||
|
|
||||||
const char *WordIterator::whitespace = ", \t\r\n";
|
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() :
|
X3DImporter::X3DImporter() :
|
||||||
mNodeElementCur(nullptr),
|
mNodeElementCur(nullptr),
|
||||||
mScene(nullptr) {
|
mScene(nullptr) {
|
||||||
|
|
Loading…
Reference in New Issue