diff options
Diffstat (limited to '')
-rw-r--r-- | NW4RTools/ColladaWriter.cs | 46 | ||||
-rw-r--r-- | NW4RTools/NW4RTools.pidb | bin | 524942 -> 525316 bytes | |||
-rwxr-xr-x | NW4RTools/bin/Debug/NW4RTools.dll | bin | 157184 -> 157696 bytes | |||
-rw-r--r-- | NW4RTools/bin/Debug/NW4RTools.dll.mdb | bin | 87288 -> 87412 bytes |
4 files changed, 44 insertions, 2 deletions
diff --git a/NW4RTools/ColladaWriter.cs b/NW4RTools/ColladaWriter.cs index 85b6867..60a3a75 100644 --- a/NW4RTools/ColladaWriter.cs +++ b/NW4RTools/ColladaWriter.cs @@ -18,6 +18,7 @@ namespace NW4RTools { COLLADA Collada; library_geometries LibGeometries; + library_visual_scenes LibVisualScenes; private ColladaWriter(ResFile file) { CurrentFile = file; @@ -39,8 +40,10 @@ namespace NW4RTools { Collada.asset.unit.meter = 1.0; Collada.asset.up_axis = UpAxisType.Y_UP; - Collada.Items = new object[1]; - Collada.Items[0] = LibGeometries = new library_geometries(); + List<object> ColladaItems = new List<object>(); + + LibGeometries = new library_geometries(); + ColladaItems.Add(LibGeometries); LibGeometries.geometry = new geometry[CurrentModel.Shapes.Count]; @@ -208,6 +211,7 @@ namespace NW4RTools { // Ok, we've written all the raw float data, now set up vertices + // TODO: Vertex colours m.vertices = new vertices(); m.vertices.id = String.Format("{0}-lib-Vertex", kv.Key); m.vertices.input = new InputLocal[1]; @@ -337,6 +341,44 @@ namespace NW4RTools { geoIndex += 1; } + + + // SHAPES ARE DONE. + // Next up: Visual Scenes (I will just create one atm) + + LibVisualScenes = new library_visual_scenes(); + ColladaItems.Add(LibVisualScenes); + + LibVisualScenes.visual_scene = new visual_scene[1]; + var mainScene = LibVisualScenes.visual_scene[0] = new visual_scene(); + + // TODO: Change this so it doesn't have the possibility of name collisions with shapes + mainScene.id = "RootNode"; + mainScene.name = "RootNode"; + var mainSceneNodeList = new List<node>(); + + // Right now: just make a node for each shape. + foreach (var kv in CurrentModel.Shapes) { + var thisNode = new node(); + + thisNode.id = kv.Key; + thisNode.name = kv.Key; + thisNode.instance_geometry = new instance_geometry[1]; + thisNode.instance_geometry[0] = new instance_geometry(); + thisNode.instance_geometry[0].url = String.Format("#{0}-lib", kv.Key); + + mainSceneNodeList.Add(thisNode); + } + + mainScene.node = mainSceneNodeList.ToArray(); + + + // Finally, create a scene + Collada.scene = new COLLADAScene(); + Collada.scene.instance_visual_scene = new InstanceWithExtra(); + Collada.scene.instance_visual_scene.url = "#RootNode"; + + Collada.Items = ColladaItems.ToArray(); Collada.Save(outputStream); } } diff --git a/NW4RTools/NW4RTools.pidb b/NW4RTools/NW4RTools.pidb Binary files differindex 2c749c8..d136108 100644 --- a/NW4RTools/NW4RTools.pidb +++ b/NW4RTools/NW4RTools.pidb diff --git a/NW4RTools/bin/Debug/NW4RTools.dll b/NW4RTools/bin/Debug/NW4RTools.dll Binary files differindex 5d89012..85d9abd 100755 --- a/NW4RTools/bin/Debug/NW4RTools.dll +++ b/NW4RTools/bin/Debug/NW4RTools.dll diff --git a/NW4RTools/bin/Debug/NW4RTools.dll.mdb b/NW4RTools/bin/Debug/NW4RTools.dll.mdb Binary files differindex 662ff6c..f87c22c 100644 --- a/NW4RTools/bin/Debug/NW4RTools.dll.mdb +++ b/NW4RTools/bin/Debug/NW4RTools.dll.mdb |