internal void appendAnimations(List<AnimationData> list) { foreach (var node in nodes) { if (node.rootNode) node.generateBase(); } string pointer = list[0].pointer; prepareFile(pointer); XmlTextReader reader = new XmlTextReader(pointer); frameCount = 0; while (reader.Read()) { if (reader.Name == "library_animations" && reader.NodeType == XmlNodeType.Element) { ColladaLibraryAnimation aniLib = new ColladaLibraryAnimation(ref reader, collada, this); foreach (var animation in aniLib.animations) { animation.generate(); } if (nodes.Count > 0 && colladaAnimationDataGenerator.boneNames != null) { foreach (var node in nodes) { if (node.rootNode) node.generate(); } AnimationData curAnimationData = new AnimationData(); curAnimationData.Matrices = new Matrix4[frameCount][]; curAnimationData.stepSize = stepSize; curAnimationData.lastFrame = lastFrame; colladaAnimationDataGenerator.generate(nodes, ref curAnimationData); animationData.Add(curAnimationData); } } } reader.Close(); }
private void genericAttributes(ref XmlTextReader reader) { if (reader.Name == "source" && reader.NodeType != XmlNodeType.EndElement) { ColladaObject newObj = new ColladaSource(ref reader, this, scene); } if (reader.Name == "vertices" && reader.NodeType != XmlNodeType.EndElement) { ColladaObject newObj = new ColladaVerts(ref reader, this, scene); } if (reader.Name == "library_animations" && reader.NodeType != XmlNodeType.EndElement) { ColladaObject newObj = new ColladaLibraryAnimation(ref reader, this, scene); } if (reader.Name == "animation" && reader.NodeType != XmlNodeType.EndElement) { ColladaObject newObj = new ColladaAnimation(ref reader, this, scene); } if (reader.Name == "controller" && reader.NodeType != XmlNodeType.EndElement) { ColladaObject newObj = new ColladaControler(ref reader, this, scene); } if (reader.Name == "polylist" && reader.NodeType != XmlNodeType.EndElement) { ColladaObject newObj = new ColladaPolys(ref reader, this, scene); } /* if (reader.Name == "visual_scene") { ColladaObject newObj = new ColladaVScene(ref reader, this, scene); scene.colladaObjects.Add(newObj); } */ if (reader.Name == "vertex_weights" && reader.NodeType != XmlNodeType.EndElement) { ColladaObject newObj = new ColladaVertWeights(ref reader, this, scene); } if (reader.Name == "node" && reader.NodeType != XmlNodeType.EndElement) { ColladaObject newObj = new ColladaNode(ref reader, this, scene); } if (reader.Name == "input") inputs.Add(new ColladaInput(ref reader, this, scene)); }