Esempio n. 1
0
        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();
        }
Esempio n. 2
0
            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));
            }