public COLLADA GetColladaModel(Model model, string modelName) { var animations = _animationsFactory.GetAnimations(model.Parts, modelName); var images = _materialFactory.GetImages(model.Parts, modelName); var materials = _materialFactory.GetMaterials(model.Parts, modelName); var geometries = _geometriesFactory.GetGeometries(model.Parts, modelName); var geometryRootNode = _geometriesFactory.GetGeometryRootNode(geometries.Select(g => g.GeometryNode), model.PartsTree, modelName); var lights = _lightingFactory.GetLights(model); var scenes = GetScenes(geometryRootNode, lights.Select(l => l.LightNode), modelName); var scene = GetScene(scenes); var collada = new COLLADA { Asset = new Asset { Created = DateTime.Now, Up_Axis = UpAxisType.Z_UP } }; var lightsLibrary = new Library_Lights(); lights.Select(l => l.Light).ToList().ForEach(l => lightsLibrary.Light.Add(l)); collada.Library_Lights.Add(lightsLibrary); var geometriesLibrary = new Library_Geometries(); geometries.Select(g => g.Geometry).ToList().ForEach(g => geometriesLibrary.Geometry.Add(g)); var effectsLibrary = new Library_Effects(); var materialsLibrary = new Library_Materials(); materials.ToList().ForEach(m => { effectsLibrary.Effect.Add(m.Effect); materialsLibrary.Material.Add(m.Material); }); var imagesLibrary = new Library_Images(); images.ToList().ForEach(i => imagesLibrary.Image.Add(i)); var animationsLibrary = new Library_Animations(); animations.ToList().ForEach(a => animationsLibrary.Animation.Add(a)); collada.Library_Geometries.Add(geometriesLibrary); collada.Library_Visual_Scenes.Add(scenes); collada.Library_Images.Add(imagesLibrary); collada.Library_Effects.Add(effectsLibrary); collada.Library_Materials.Add(materialsLibrary); collada.Library_Animations.Add(animationsLibrary); collada.Scene = scene; return(collada); }
public XmlColladaSchema(XmlDocument doc) { XPathNavigator navigator = doc.CreateNavigator(); // Move to the first child element of the document. This will be the root element. //navigator.MoveToChild(XPathNodeType.Element); navigator.MoveToFirstChild(); string uri = string.Empty; if (navigator.HasAttributes == true) { uri = navigator.NamespaceURI; } // Handle asset data XPathNodeIterator nodesIterator; nodesIterator = navigator.SelectChildren(XmlCollada.Library_Geometries.root, uri); if (nodesIterator.MoveNext()) { _asset = new XmlCollada.Asset(nodesIterator, uri); } // Handle geometry library data nodesIterator = navigator.SelectChildren(XmlCollada.Library_Geometries.root, uri); if (nodesIterator.MoveNext()) { _geometries = new XmlCollada.Library_Geometries(nodesIterator, uri); } // Handle effects data nodesIterator = navigator.SelectChildren(XmlCollada.Library_Effects.root, uri); if (nodesIterator.MoveNext()) { _effects = new XmlCollada.Library_Effects(nodesIterator, uri); } // Handle material data nodesIterator = navigator.SelectChildren(XmlCollada.Library_Materials.root, uri); if (nodesIterator.MoveNext()) { _materials = new XmlCollada.Library_Materials(nodesIterator, uri); } // Handle visual scene data nodesIterator = navigator.SelectChildren(XmlCollada.Library_Visual_Scenes.root, uri); if (nodesIterator.MoveNext()) { _visualScenes = new XmlCollada.Library_Visual_Scenes(nodesIterator, uri); } // Handle image data nodesIterator = navigator.SelectChildren(XmlCollada.Library_Images.root, uri); if (nodesIterator.MoveNext()) { _images = new XmlCollada.Library_Images(nodesIterator, uri); } // Handle the scene nodesIterator = navigator.SelectChildren(XmlCollada.Scene.root, uri); if (nodesIterator.MoveNext()) { _scene = new XmlCollada.Scene(nodesIterator, uri); } }
public XmlColladaSchema(Asset asset, Library_Geometries geometries, Library_Effects effects, Library_Materials materials, Library_Visual_Scenes visualScenes, Library_Images images, Scene scene) { _asset = asset; _geometries = geometries; _effects = effects; _materials = materials; _visualScenes = visualScenes; _images = images; _scene = scene; }