AcTools.Kn5File.Kn5.ExportCollada_NodeSub_Inner C# (CSharp) Method

ExportCollada_NodeSub_Inner() private method

private ExportCollada_NodeSub_Inner ( XmlWriter xml, IReadOnlyList boneNames, Kn5Node node ) : void
xml XmlWriter
boneNames IReadOnlyList
node Kn5Node
return void
        private void ExportCollada_NodeSub_Inner(XmlWriter xml, IReadOnlyList<string> boneNames, Kn5Node node) {
            switch (node.NodeClass) {
                case Kn5NodeClass.Base:
                    if (node.Children.Count == 1 && node.Children[0].NodeClass != Kn5NodeClass.Base) {
                        ExportCollada_NodeSub_Inner(xml, boneNames, node.Children[0]);
                    } else {
                        foreach (var t in node.Children) {
                            ExportCollada_NodeSub(xml, boneNames, t);
                        }
                    }
                    break;

                case Kn5NodeClass.Mesh:
                    xml.WriteStartElement("instance_geometry");
                    xml.WriteAttributeStringSafe("url", $"#{node.Name}-mesh");
                    ExportCollada_NodeSub_BindMaterial(xml, node.MaterialId);
                    xml.WriteEndElement();
                    break;

                case Kn5NodeClass.SkinnedMesh:
                    xml.WriteStartElement("instance_controller");
                    xml.WriteAttributeStringSafe("url", $"#{node.Name}Controller");
                    ExportCollada_NodeSub_BindMaterial(xml, node.MaterialId);

                    foreach (var bone in node.Bones) {
                        xml.WriteElementString("skeleton", $"#{bone.Name}");
                    }

                    xml.WriteEndElement(); // instance_controller
                    break;
            }
        }