diff --git a/External/ColladaSharp/ColladaSharp.cs b/External/ColladaSharp/ColladaSharp.cs
new file mode 100644
index 000000000..270305c9f
--- /dev/null
+++ b/External/ColladaSharp/ColladaSharp.cs
@@ -0,0 +1,9977 @@
+//------------------------------------------------------------------------------
+// Collada auto-generated model object from schema 1.4.1
+// This file was patched manually in order to be able to use it
+// see http://code4k.blogspot.com/2010/08/import-and-export-3d-collada-files-with.html for more information
+// Author: @lx
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.1
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.CodeDom.Compiler;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Diagnostics;
+using System.Globalization;
+using System.IO;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Xml;
+using System.Xml.Serialization;
+
+namespace Collada141
+{
+ //
+ // This source code was auto-generated by xsd, Version=4.0.30319.1.
+ //
+
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ // [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public partial class COLLADA
+ {
+ private asset assetField;
+ private extra[] extraField;
+
+ private object[] itemsField;
+
+ private COLLADAScene sceneField;
+
+ private VersionType versionField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("library_animation_clips", typeof(library_animation_clips))]
+ [XmlElement("library_animations", typeof(library_animations))]
+ [XmlElement("library_cameras", typeof(library_cameras))]
+ [XmlElement("library_controllers", typeof(library_controllers))]
+ [XmlElement("library_effects", typeof(library_effects))]
+ [XmlElement("library_force_fields", typeof(library_force_fields))]
+ [XmlElement("library_geometries", typeof(library_geometries))]
+ [XmlElement("library_images", typeof(library_images))]
+ [XmlElement("library_lights", typeof(library_lights))]
+ [XmlElement("library_materials", typeof(library_materials))]
+ [XmlElement("library_nodes", typeof(library_nodes))]
+ [XmlElement("library_physics_materials", typeof(library_physics_materials))]
+ [XmlElement("library_physics_models", typeof(library_physics_models))]
+ [XmlElement("library_physics_scenes", typeof(library_physics_scenes))]
+ [XmlElement("library_visual_scenes", typeof(library_visual_scenes))]
+ public object[] Items
+ {
+ get { return itemsField; }
+ set { itemsField = value; }
+ }
+
+ ///
+ public COLLADAScene scene
+ {
+ get { return sceneField; }
+ set { sceneField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public VersionType version
+ {
+ get { return versionField; }
+ set { versionField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class asset
+ {
+ private assetContributor[] contributorField;
+
+ private DateTime createdField;
+
+ private string keywordsField;
+
+ private DateTime modifiedField;
+
+ private string revisionField;
+
+ private string subjectField;
+
+ private string titleField;
+
+ private assetUnit unitField;
+
+ private UpAxisType up_axisField;
+
+ public asset()
+ {
+ up_axisField = UpAxisType.Y_UP;
+ }
+
+ ///
+ [XmlElement("contributor")]
+ public assetContributor[] contributor
+ {
+ get { return contributorField; }
+ set { contributorField = value; }
+ }
+
+ ///
+ public DateTime created
+ {
+ get { return createdField; }
+ set { createdField = value; }
+ }
+
+ ///
+ public string keywords
+ {
+ get { return keywordsField; }
+ set { keywordsField = value; }
+ }
+
+ ///
+ public DateTime modified
+ {
+ get { return modifiedField; }
+ set { modifiedField = value; }
+ }
+
+ ///
+ public string revision
+ {
+ get { return revisionField; }
+ set { revisionField = value; }
+ }
+
+ ///
+ public string subject
+ {
+ get { return subjectField; }
+ set { subjectField = value; }
+ }
+
+ ///
+ public string title
+ {
+ get { return titleField; }
+ set { titleField = value; }
+ }
+
+ ///
+ public assetUnit unit
+ {
+ get { return unitField; }
+ set { unitField = value; }
+ }
+
+ ///
+ [DefaultValue(UpAxisType.Y_UP)]
+ public UpAxisType up_axis
+ {
+ get { return up_axisField; }
+ set { up_axisField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class assetContributor
+ {
+ private string authorField;
+
+ private string authoring_toolField;
+
+ private string commentsField;
+
+ private string copyrightField;
+
+ private string source_dataField;
+
+ ///
+ public string author
+ {
+ get { return authorField; }
+ set { authorField = value; }
+ }
+
+ ///
+ public string authoring_tool
+ {
+ get { return authoring_toolField; }
+ set { authoring_toolField = value; }
+ }
+
+ ///
+ public string comments
+ {
+ get { return commentsField; }
+ set { commentsField = value; }
+ }
+
+ ///
+ public string copyright
+ {
+ get { return copyrightField; }
+ set { copyrightField = value; }
+ }
+
+ ///
+ [XmlElement(DataType = "anyURI")]
+ public string source_data
+ {
+ get { return source_dataField; }
+ set { source_dataField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_surface_init_from_common
+ {
+ private fx_surface_face_enum faceField;
+ private uint mipField;
+
+ private uint sliceField;
+
+ private string valueField;
+
+ public fx_surface_init_from_common()
+ {
+ mipField = ((0));
+ sliceField = ((0));
+ faceField = fx_surface_face_enum.POSITIVE_X;
+ }
+
+ ///
+ [XmlAttribute]
+ [DefaultValue(typeof(uint), "0")]
+ public uint mip
+ {
+ get { return mipField; }
+ set { mipField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ [DefaultValue(typeof(uint), "0")]
+ public uint slice
+ {
+ get { return sliceField; }
+ set { sliceField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ [DefaultValue(fx_surface_face_enum.POSITIVE_X)]
+ public fx_surface_face_enum face
+ {
+ get { return faceField; }
+ set { faceField = value; }
+ }
+
+ ///
+ [XmlText(DataType = "IDREF")]
+ public string Value
+ {
+ get { return valueField; }
+ set { valueField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public enum fx_surface_face_enum
+ {
+ ///
+ POSITIVE_X,
+
+ ///
+ NEGATIVE_X,
+
+ ///
+ POSITIVE_Y,
+
+ ///
+ NEGATIVE_Y,
+
+ ///
+ POSITIVE_Z,
+
+ ///
+ NEGATIVE_Z,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class common_newparam_type
+ {
+ private ItemChoiceType itemElementNameField;
+ private object itemField;
+ private string semanticField;
+
+ private string sidField;
+
+ ///
+ [XmlElement(DataType = "NCName")]
+ public string semantic
+ {
+ get { return semanticField; }
+ set { semanticField = value; }
+ }
+
+ ///
+ [XmlElement("float", typeof(double))]
+ [XmlElement("float2", typeof(double))]
+ [XmlElement("float3", typeof(double))]
+ [XmlElement("float4", typeof(double))]
+ [XmlElement("sampler2D", typeof(fx_sampler2D_common))]
+ [XmlElement("surface", typeof(fx_surface_common))]
+ [XmlChoiceIdentifier("ItemElementName")]
+ public object Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+
+ ///
+ [XmlIgnore]
+ public ItemChoiceType ItemElementName
+ {
+ get { return itemElementNameField; }
+ set { itemElementNameField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_sampler2D_common
+ {
+ private string border_colorField;
+ private extra[] extraField;
+ private fx_sampler_filter_common magfilterField;
+ private fx_sampler_filter_common minfilterField;
+
+ private fx_sampler_filter_common mipfilterField;
+
+ private float mipmap_biasField;
+ private byte mipmap_maxlevelField;
+ private string sourceField;
+
+ private fx_sampler_wrap_common wrap_sField;
+
+ private fx_sampler_wrap_common wrap_tField;
+
+ public fx_sampler2D_common()
+ {
+ wrap_sField = fx_sampler_wrap_common.WRAP;
+ wrap_tField = fx_sampler_wrap_common.WRAP;
+ minfilterField = fx_sampler_filter_common.NONE;
+ magfilterField = fx_sampler_filter_common.NONE;
+ mipfilterField = fx_sampler_filter_common.NONE;
+ mipmap_maxlevelField = ((255));
+ mipmap_biasField = ((0F));
+ }
+
+ ///
+ [XmlElement(DataType = "NCName")]
+ public string source
+ {
+ get { return sourceField; }
+ set { sourceField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_wrap_common.WRAP)]
+ public fx_sampler_wrap_common wrap_s
+ {
+ get { return wrap_sField; }
+ set { wrap_sField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_wrap_common.WRAP)]
+ public fx_sampler_wrap_common wrap_t
+ {
+ get { return wrap_tField; }
+ set { wrap_tField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common minfilter
+ {
+ get { return minfilterField; }
+ set { minfilterField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common magfilter
+ {
+ get { return magfilterField; }
+ set { magfilterField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common mipfilter
+ {
+ get { return mipfilterField; }
+ set { mipfilterField = value; }
+ }
+
+ ///
+ public string border_color
+ {
+ get { return border_colorField; }
+ set { border_colorField = value; }
+ }
+
+ ///
+ [DefaultValue(typeof(byte), "255")]
+ public byte mipmap_maxlevel
+ {
+ get { return mipmap_maxlevelField; }
+ set { mipmap_maxlevelField = value; }
+ }
+
+ ///
+ [DefaultValue(typeof(float), "0")]
+ public float mipmap_bias
+ {
+ get { return mipmap_biasField; }
+ set { mipmap_biasField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public enum fx_sampler_wrap_common
+ {
+ ///
+ NONE,
+
+ ///
+ WRAP,
+
+ ///
+ MIRROR,
+
+ ///
+ CLAMP,
+
+ ///
+ BORDER,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public enum fx_sampler_filter_common
+ {
+ ///
+ NONE,
+
+ ///
+ NEAREST,
+
+ ///
+ LINEAR,
+
+ ///
+ NEAREST_MIPMAP_NEAREST,
+
+ ///
+ LINEAR_MIPMAP_NEAREST,
+
+ ///
+ NEAREST_MIPMAP_LINEAR,
+
+ ///
+ LINEAR_MIPMAP_LINEAR,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class extra
+ {
+ private asset assetField;
+
+ private string idField;
+
+ private string nameField;
+ private technique[] techniqueField;
+
+ private string typeField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("technique")]
+ public technique[] technique
+ {
+ get { return techniqueField; }
+ set { techniqueField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NMTOKEN")]
+ public string type
+ {
+ get { return typeField; }
+ set { typeField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class technique
+ {
+ private XmlElement[] anyField;
+
+ private string profileField;
+
+ ///
+ [XmlAnyElement]
+ public XmlElement[] Any
+ {
+ get { return anyField; }
+ set { anyField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NMTOKEN")]
+ public string profile
+ {
+ get { return profileField; }
+ set { profileField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_surface_common
+ {
+ private extra[] extraField;
+ private string formatField;
+
+ private fx_surface_format_hint_common format_hintField;
+ private object init_as_nullField;
+
+ private object init_as_targetField;
+
+ private fx_surface_init_cube_common init_cubeField;
+
+ private fx_surface_init_from_common[] init_fromField;
+ private fx_surface_init_planar_common init_planarField;
+ private fx_surface_init_volume_common init_volumeField;
+
+ private object itemField;
+
+ private uint mip_levelsField;
+
+ private bool mipmap_generateField;
+
+ private bool mipmap_generateFieldSpecified;
+
+ private fx_surface_type_enum typeField;
+
+ public fx_surface_common()
+ {
+ mip_levelsField = ((0));
+ }
+
+ ///
+ public object init_as_null
+ {
+ get { return init_as_nullField; }
+ set { init_as_nullField = value; }
+ }
+
+ ///
+ public object init_as_target
+ {
+ get { return init_as_targetField; }
+ set { init_as_targetField = value; }
+ }
+
+ ///
+ public fx_surface_init_cube_common init_cube
+ {
+ get { return init_cubeField; }
+ set { init_cubeField = value; }
+ }
+
+ ///
+ public fx_surface_init_volume_common init_volume
+ {
+ get { return init_volumeField; }
+ set { init_volumeField = value; }
+ }
+
+ ///
+ public fx_surface_init_planar_common init_planar
+ {
+ get { return init_planarField; }
+ set { init_planarField = value; }
+ }
+
+ ///
+ [XmlElement("init_from")]
+ public fx_surface_init_from_common[] init_from
+ {
+ get { return init_fromField; }
+ set { init_fromField = value; }
+ }
+
+ ///
+ [XmlElement(DataType = "token")]
+ public string format
+ {
+ get { return formatField; }
+ set { formatField = value; }
+ }
+
+ ///
+ public fx_surface_format_hint_common format_hint
+ {
+ get { return format_hintField; }
+ set { format_hintField = value; }
+ }
+
+ ///
+ [XmlElement("size", typeof(long))]
+ [XmlElement("viewport_ratio", typeof(double))]
+ public object Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+
+ ///
+ [DefaultValue(typeof(uint), "0")]
+ public uint mip_levels
+ {
+ get { return mip_levelsField; }
+ set { mip_levelsField = value; }
+ }
+
+ ///
+ public bool mipmap_generate
+ {
+ get { return mipmap_generateField; }
+ set { mipmap_generateField = value; }
+ }
+
+ ///
+ [XmlIgnore]
+ public bool mipmap_generateSpecified
+ {
+ get { return mipmap_generateFieldSpecified; }
+ set { mipmap_generateFieldSpecified = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public fx_surface_type_enum type
+ {
+ get { return typeField; }
+ set { typeField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_surface_init_cube_common
+ {
+ private object[] itemsField;
+
+ ///
+ [XmlElement("all", typeof(fx_surface_init_cube_commonAll))]
+ [XmlElement("face", typeof(fx_surface_init_cube_commonFace))]
+ [XmlElement("primary", typeof(fx_surface_init_cube_commonPrimary))]
+ public object[] Items
+ {
+ get { return itemsField; }
+ set { itemsField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_surface_init_cube_commonAll
+ {
+ private string refField;
+
+ ///
+ [XmlAttribute(DataType = "IDREF")]
+ public string @ref
+ {
+ get { return refField; }
+ set { refField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_surface_init_cube_commonFace
+ {
+ private string refField;
+
+ ///
+ [XmlAttribute(DataType = "IDREF")]
+ public string @ref
+ {
+ get { return refField; }
+ set { refField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_surface_init_cube_commonPrimary
+ {
+ private fx_surface_face_enum[] orderField;
+
+ private string refField;
+
+ ///
+ [XmlElement("order")]
+ public fx_surface_face_enum[] order
+ {
+ get { return orderField; }
+ set { orderField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "IDREF")]
+ public string @ref
+ {
+ get { return refField; }
+ set { refField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_surface_init_volume_common
+ {
+ private object itemField;
+
+ ///
+ [XmlElement("all", typeof(fx_surface_init_volume_commonAll))]
+ [XmlElement("primary", typeof(fx_surface_init_volume_commonPrimary))]
+ public object Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_surface_init_volume_commonAll
+ {
+ private string refField;
+
+ ///
+ [XmlAttribute(DataType = "IDREF")]
+ public string @ref
+ {
+ get { return refField; }
+ set { refField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_surface_init_volume_commonPrimary
+ {
+ private string refField;
+
+ ///
+ [XmlAttribute(DataType = "IDREF")]
+ public string @ref
+ {
+ get { return refField; }
+ set { refField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_surface_init_planar_common
+ {
+ private fx_surface_init_planar_commonAll itemField;
+
+ ///
+ [XmlElement("all")]
+ public fx_surface_init_planar_commonAll Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_surface_init_planar_commonAll
+ {
+ private string refField;
+
+ ///
+ [XmlAttribute(DataType = "IDREF")]
+ public string @ref
+ {
+ get { return refField; }
+ set { refField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_surface_format_hint_common
+ {
+ private fx_surface_format_hint_channels_enum channelsField;
+ private extra[] extraField;
+ private fx_surface_format_hint_option_enum[] optionField;
+
+ private fx_surface_format_hint_precision_enum precisionField;
+
+ private bool precisionFieldSpecified;
+ private fx_surface_format_hint_range_enum rangeField;
+
+ ///
+ public fx_surface_format_hint_channels_enum channels
+ {
+ get { return channelsField; }
+ set { channelsField = value; }
+ }
+
+ ///
+ public fx_surface_format_hint_range_enum range
+ {
+ get { return rangeField; }
+ set { rangeField = value; }
+ }
+
+ ///
+ public fx_surface_format_hint_precision_enum precision
+ {
+ get { return precisionField; }
+ set { precisionField = value; }
+ }
+
+ ///
+ [XmlIgnore]
+ public bool precisionSpecified
+ {
+ get { return precisionFieldSpecified; }
+ set { precisionFieldSpecified = value; }
+ }
+
+ ///
+ [XmlElement("option")]
+ public fx_surface_format_hint_option_enum[] option
+ {
+ get { return optionField; }
+ set { optionField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public enum fx_surface_format_hint_channels_enum
+ {
+ ///
+ RGB,
+
+ ///
+ RGBA,
+
+ ///
+ L,
+
+ ///
+ LA,
+
+ ///
+ D,
+
+ ///
+ XYZ,
+
+ ///
+ XYZW,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public enum fx_surface_format_hint_range_enum
+ {
+ ///
+ SNORM,
+
+ ///
+ UNORM,
+
+ ///
+ SINT,
+
+ ///
+ UINT,
+
+ ///
+ FLOAT,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public enum fx_surface_format_hint_precision_enum
+ {
+ ///
+ LOW,
+
+ ///
+ MID,
+
+ ///
+ HIGH,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public enum fx_surface_format_hint_option_enum
+ {
+ ///
+ SRGB_GAMMA,
+
+ ///
+ NORMALIZED3,
+
+ ///
+ NORMALIZED4,
+
+ ///
+ COMPRESSABLE,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public enum fx_surface_type_enum
+ {
+ ///
+ UNTYPED,
+
+ ///
+ [XmlEnum("1D")] Item1D,
+
+ ///
+ [XmlEnum("2D")] Item2D,
+
+ ///
+ [XmlEnum("3D")] Item3D,
+
+ ///
+ RECT,
+
+ ///
+ CUBE,
+
+ ///
+ DEPTH,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IncludeInSchema = false)]
+ public enum ItemChoiceType
+ {
+ ///
+ @float,
+
+ ///
+ float2,
+
+ ///
+ float3,
+
+ ///
+ float4,
+
+ ///
+ sampler2D,
+
+ ///
+ surface,
+ }
+
+ ///
+ [XmlInclude(typeof(common_transparent_type))]
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class common_color_or_texture_type
+ {
+ private object itemField;
+
+ ///
+ [XmlElement("color", typeof(common_color_or_texture_typeColor))]
+ [XmlElement("param", typeof(common_color_or_texture_typeParam))]
+ [XmlElement("texture", typeof(common_color_or_texture_typeTexture))]
+ public object Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class common_color_or_texture_typeColor
+ {
+ private string sidField;
+
+ private double[] textField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlText]
+ public string _Text_
+ {
+ get { return COLLADA.ConvertFromArray(Values); }
+
+ set { Values = COLLADA.ConvertDoubleArray(value); }
+ }
+
+ ///
+ [XmlIgnore]
+ public double[] Values
+ {
+ get { return textField; }
+ set { textField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class common_color_or_texture_typeParam
+ {
+ private string refField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string @ref
+ {
+ get { return refField; }
+ set { refField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class common_color_or_texture_typeTexture
+ {
+ private extra extraField;
+
+ private string texcoordField;
+ private string textureField;
+
+ ///
+ public extra extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string texture
+ {
+ get { return textureField; }
+ set { textureField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string texcoord
+ {
+ get { return texcoordField; }
+ set { texcoordField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class common_transparent_type : common_color_or_texture_type
+ {
+ private fx_opaque_enum opaqueField;
+
+ public common_transparent_type()
+ {
+ opaqueField = fx_opaque_enum.A_ONE;
+ }
+
+ ///
+ [XmlAttribute]
+ [DefaultValue(fx_opaque_enum.A_ONE)]
+ public fx_opaque_enum opaque
+ {
+ get { return opaqueField; }
+ set { opaqueField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public enum fx_opaque_enum
+ {
+ ///
+ A_ONE,
+
+ ///
+ RGB_ZERO,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class common_float_or_param_type
+ {
+ private object itemField;
+
+ ///
+ [XmlElement("float", typeof(common_float_or_param_typeFloat))]
+ [XmlElement("param", typeof(common_float_or_param_typeParam))]
+ public object Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class common_float_or_param_typeFloat
+ {
+ private string sidField;
+
+ private double valueField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlText]
+ public double Value
+ {
+ get { return valueField; }
+ set { valueField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class common_float_or_param_typeParam
+ {
+ private string refField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string @ref
+ {
+ get { return refField; }
+ set { refField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_include_common
+ {
+ private string sidField;
+
+ private string urlField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "anyURI")]
+ public string url
+ {
+ get { return urlField; }
+ set { urlField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_samplerDEPTH_common
+ {
+ private extra[] extraField;
+ private fx_sampler_filter_common magfilterField;
+ private fx_sampler_filter_common minfilterField;
+ private string sourceField;
+
+ private fx_sampler_wrap_common wrap_sField;
+
+ private fx_sampler_wrap_common wrap_tField;
+
+ public fx_samplerDEPTH_common()
+ {
+ wrap_sField = fx_sampler_wrap_common.WRAP;
+ wrap_tField = fx_sampler_wrap_common.WRAP;
+ minfilterField = fx_sampler_filter_common.NONE;
+ magfilterField = fx_sampler_filter_common.NONE;
+ }
+
+ ///
+ [XmlElement(DataType = "NCName")]
+ public string source
+ {
+ get { return sourceField; }
+ set { sourceField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_wrap_common.WRAP)]
+ public fx_sampler_wrap_common wrap_s
+ {
+ get { return wrap_sField; }
+ set { wrap_sField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_wrap_common.WRAP)]
+ public fx_sampler_wrap_common wrap_t
+ {
+ get { return wrap_tField; }
+ set { wrap_tField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common minfilter
+ {
+ get { return minfilterField; }
+ set { minfilterField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common magfilter
+ {
+ get { return magfilterField; }
+ set { magfilterField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_samplerRECT_common
+ {
+ private string border_colorField;
+ private extra[] extraField;
+ private fx_sampler_filter_common magfilterField;
+ private fx_sampler_filter_common minfilterField;
+
+ private fx_sampler_filter_common mipfilterField;
+
+ private float mipmap_biasField;
+ private byte mipmap_maxlevelField;
+ private string sourceField;
+
+ private fx_sampler_wrap_common wrap_sField;
+
+ private fx_sampler_wrap_common wrap_tField;
+
+ public fx_samplerRECT_common()
+ {
+ wrap_sField = fx_sampler_wrap_common.WRAP;
+ wrap_tField = fx_sampler_wrap_common.WRAP;
+ minfilterField = fx_sampler_filter_common.NONE;
+ magfilterField = fx_sampler_filter_common.NONE;
+ mipfilterField = fx_sampler_filter_common.NONE;
+ mipmap_maxlevelField = ((255));
+ mipmap_biasField = ((0F));
+ }
+
+ ///
+ [XmlElement(DataType = "NCName")]
+ public string source
+ {
+ get { return sourceField; }
+ set { sourceField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_wrap_common.WRAP)]
+ public fx_sampler_wrap_common wrap_s
+ {
+ get { return wrap_sField; }
+ set { wrap_sField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_wrap_common.WRAP)]
+ public fx_sampler_wrap_common wrap_t
+ {
+ get { return wrap_tField; }
+ set { wrap_tField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common minfilter
+ {
+ get { return minfilterField; }
+ set { minfilterField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common magfilter
+ {
+ get { return magfilterField; }
+ set { magfilterField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common mipfilter
+ {
+ get { return mipfilterField; }
+ set { mipfilterField = value; }
+ }
+
+ ///
+ public string border_color
+ {
+ get { return border_colorField; }
+ set { border_colorField = value; }
+ }
+
+ ///
+ [DefaultValue(typeof(byte), "255")]
+ public byte mipmap_maxlevel
+ {
+ get { return mipmap_maxlevelField; }
+ set { mipmap_maxlevelField = value; }
+ }
+
+ ///
+ [DefaultValue(typeof(float), "0")]
+ public float mipmap_bias
+ {
+ get { return mipmap_biasField; }
+ set { mipmap_biasField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_samplerCUBE_common
+ {
+ private string border_colorField;
+ private extra[] extraField;
+ private fx_sampler_filter_common magfilterField;
+ private fx_sampler_filter_common minfilterField;
+
+ private fx_sampler_filter_common mipfilterField;
+
+ private float mipmap_biasField;
+ private byte mipmap_maxlevelField;
+ private string sourceField;
+ private fx_sampler_wrap_common wrap_pField;
+ private fx_sampler_wrap_common wrap_sField;
+
+ private fx_sampler_wrap_common wrap_tField;
+
+ public fx_samplerCUBE_common()
+ {
+ wrap_sField = fx_sampler_wrap_common.WRAP;
+ wrap_tField = fx_sampler_wrap_common.WRAP;
+ wrap_pField = fx_sampler_wrap_common.WRAP;
+ minfilterField = fx_sampler_filter_common.NONE;
+ magfilterField = fx_sampler_filter_common.NONE;
+ mipfilterField = fx_sampler_filter_common.NONE;
+ mipmap_maxlevelField = ((255));
+ mipmap_biasField = ((0F));
+ }
+
+ ///
+ [XmlElement(DataType = "NCName")]
+ public string source
+ {
+ get { return sourceField; }
+ set { sourceField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_wrap_common.WRAP)]
+ public fx_sampler_wrap_common wrap_s
+ {
+ get { return wrap_sField; }
+ set { wrap_sField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_wrap_common.WRAP)]
+ public fx_sampler_wrap_common wrap_t
+ {
+ get { return wrap_tField; }
+ set { wrap_tField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_wrap_common.WRAP)]
+ public fx_sampler_wrap_common wrap_p
+ {
+ get { return wrap_pField; }
+ set { wrap_pField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common minfilter
+ {
+ get { return minfilterField; }
+ set { minfilterField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common magfilter
+ {
+ get { return magfilterField; }
+ set { magfilterField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common mipfilter
+ {
+ get { return mipfilterField; }
+ set { mipfilterField = value; }
+ }
+
+ ///
+ public string border_color
+ {
+ get { return border_colorField; }
+ set { border_colorField = value; }
+ }
+
+ ///
+ [DefaultValue(typeof(byte), "255")]
+ public byte mipmap_maxlevel
+ {
+ get { return mipmap_maxlevelField; }
+ set { mipmap_maxlevelField = value; }
+ }
+
+ ///
+ [DefaultValue(typeof(float), "0")]
+ public float mipmap_bias
+ {
+ get { return mipmap_biasField; }
+ set { mipmap_biasField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_sampler3D_common
+ {
+ private string border_colorField;
+ private extra[] extraField;
+ private fx_sampler_filter_common magfilterField;
+ private fx_sampler_filter_common minfilterField;
+
+ private fx_sampler_filter_common mipfilterField;
+
+ private float mipmap_biasField;
+ private byte mipmap_maxlevelField;
+ private string sourceField;
+ private fx_sampler_wrap_common wrap_pField;
+ private fx_sampler_wrap_common wrap_sField;
+
+ private fx_sampler_wrap_common wrap_tField;
+
+ public fx_sampler3D_common()
+ {
+ wrap_sField = fx_sampler_wrap_common.WRAP;
+ wrap_tField = fx_sampler_wrap_common.WRAP;
+ wrap_pField = fx_sampler_wrap_common.WRAP;
+ minfilterField = fx_sampler_filter_common.NONE;
+ magfilterField = fx_sampler_filter_common.NONE;
+ mipfilterField = fx_sampler_filter_common.NONE;
+ mipmap_maxlevelField = ((255));
+ mipmap_biasField = ((0F));
+ }
+
+ ///
+ [XmlElement(DataType = "NCName")]
+ public string source
+ {
+ get { return sourceField; }
+ set { sourceField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_wrap_common.WRAP)]
+ public fx_sampler_wrap_common wrap_s
+ {
+ get { return wrap_sField; }
+ set { wrap_sField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_wrap_common.WRAP)]
+ public fx_sampler_wrap_common wrap_t
+ {
+ get { return wrap_tField; }
+ set { wrap_tField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_wrap_common.WRAP)]
+ public fx_sampler_wrap_common wrap_p
+ {
+ get { return wrap_pField; }
+ set { wrap_pField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common minfilter
+ {
+ get { return minfilterField; }
+ set { minfilterField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common magfilter
+ {
+ get { return magfilterField; }
+ set { magfilterField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common mipfilter
+ {
+ get { return mipfilterField; }
+ set { mipfilterField = value; }
+ }
+
+ ///
+ public string border_color
+ {
+ get { return border_colorField; }
+ set { border_colorField = value; }
+ }
+
+ ///
+ [DefaultValue(typeof(byte), "255")]
+ public byte mipmap_maxlevel
+ {
+ get { return mipmap_maxlevelField; }
+ set { mipmap_maxlevelField = value; }
+ }
+
+ ///
+ [DefaultValue(typeof(float), "0")]
+ public float mipmap_bias
+ {
+ get { return mipmap_biasField; }
+ set { mipmap_biasField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_sampler1D_common
+ {
+ private string border_colorField;
+ private extra[] extraField;
+ private fx_sampler_filter_common magfilterField;
+ private fx_sampler_filter_common minfilterField;
+
+ private fx_sampler_filter_common mipfilterField;
+
+ private float mipmap_biasField;
+ private byte mipmap_maxlevelField;
+ private string sourceField;
+
+ private fx_sampler_wrap_common wrap_sField;
+
+ public fx_sampler1D_common()
+ {
+ wrap_sField = fx_sampler_wrap_common.WRAP;
+ minfilterField = fx_sampler_filter_common.NONE;
+ magfilterField = fx_sampler_filter_common.NONE;
+ mipfilterField = fx_sampler_filter_common.NONE;
+ mipmap_maxlevelField = ((0));
+ mipmap_biasField = ((0F));
+ }
+
+ ///
+ [XmlElement(DataType = "NCName")]
+ public string source
+ {
+ get { return sourceField; }
+ set { sourceField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_wrap_common.WRAP)]
+ public fx_sampler_wrap_common wrap_s
+ {
+ get { return wrap_sField; }
+ set { wrap_sField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common minfilter
+ {
+ get { return minfilterField; }
+ set { minfilterField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common magfilter
+ {
+ get { return magfilterField; }
+ set { magfilterField = value; }
+ }
+
+ ///
+ [DefaultValue(fx_sampler_filter_common.NONE)]
+ public fx_sampler_filter_common mipfilter
+ {
+ get { return mipfilterField; }
+ set { mipfilterField = value; }
+ }
+
+ ///
+ public string border_color
+ {
+ get { return border_colorField; }
+ set { border_colorField = value; }
+ }
+
+ ///
+ [DefaultValue(typeof(byte), "0")]
+ public byte mipmap_maxlevel
+ {
+ get { return mipmap_maxlevelField; }
+ set { mipmap_maxlevelField = value; }
+ }
+
+ ///
+ [DefaultValue(typeof(float), "0")]
+ public float mipmap_bias
+ {
+ get { return mipmap_biasField; }
+ set { mipmap_biasField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class InputGlobal
+ {
+ private string semanticField;
+
+ private string sourceField;
+
+ ///
+ [XmlAttribute(DataType = "NMTOKEN")]
+ public string semantic
+ {
+ get { return semanticField; }
+ set { semanticField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "anyURI")]
+ public string source
+ {
+ get { return sourceField; }
+ set { sourceField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_newparam_common
+ {
+ private fx_annotate_common[] annotateField;
+
+ private string bool2Field;
+
+ private string bool3Field;
+
+ private string bool4Field;
+ private bool boolField;
+ private string enumField;
+
+ private double float1x1Field;
+
+ private string float1x2Field;
+
+ private string float1x3Field;
+
+ private string float1x4Field;
+ private string float2Field;
+
+ private string float2x1Field;
+
+ private string float2x2Field;
+
+ private string float2x3Field;
+
+ private string float2x4Field;
+ private string float3Field;
+
+ private string float3x1Field;
+
+ private string float3x2Field;
+
+ private string float3x3Field;
+
+ private string float3x4Field;
+ private string float4Field;
+
+ private string float4x1Field;
+
+ private string float4x2Field;
+
+ private string float4x3Field;
+
+ private string float4x4Field;
+ private double floatField;
+ private string int2Field;
+
+ private string int3Field;
+
+ private string int4Field;
+ private long intField;
+ private fx_modifier_enum_common modifierField;
+
+ private bool modifierFieldSpecified;
+
+ private fx_sampler1D_common sampler1DField;
+
+ private fx_sampler2D_common sampler2DField;
+
+ private fx_sampler3D_common sampler3DField;
+
+ private fx_samplerCUBE_common samplerCUBEField;
+
+ private fx_samplerDEPTH_common samplerDEPTHField;
+ private fx_samplerRECT_common samplerRECTField;
+ private string semanticField;
+
+ private string sidField;
+ private fx_surface_common surfaceField;
+
+ ///
+ [XmlElement("annotate")]
+ public fx_annotate_common[] annotate
+ {
+ get { return annotateField; }
+ set { annotateField = value; }
+ }
+
+ ///
+ [XmlElement(DataType = "NCName")]
+ public string semantic
+ {
+ get { return semanticField; }
+ set { semanticField = value; }
+ }
+
+ ///
+ public fx_modifier_enum_common modifier
+ {
+ get { return modifierField; }
+ set { modifierField = value; }
+ }
+
+ ///
+ [XmlIgnore]
+ public bool modifierSpecified
+ {
+ get { return modifierFieldSpecified; }
+ set { modifierFieldSpecified = value; }
+ }
+
+ ///
+ public bool @bool
+ {
+ get { return boolField; }
+ set { boolField = value; }
+ }
+
+ ///
+ public string bool2
+ {
+ get { return bool2Field; }
+ set { bool2Field = value; }
+ }
+
+ ///
+ public string bool3
+ {
+ get { return bool3Field; }
+ set { bool3Field = value; }
+ }
+
+ ///
+ public string bool4
+ {
+ get { return bool4Field; }
+ set { bool4Field = value; }
+ }
+
+ ///
+ public long @int
+ {
+ get { return intField; }
+ set { intField = value; }
+ }
+
+ ///
+ public string int2
+ {
+ get { return int2Field; }
+ set { int2Field = value; }
+ }
+
+ ///
+ public string int3
+ {
+ get { return int3Field; }
+ set { int3Field = value; }
+ }
+
+ ///
+ public string int4
+ {
+ get { return int4Field; }
+ set { int4Field = value; }
+ }
+
+ ///
+ public double @float
+ {
+ get { return floatField; }
+ set { floatField = value; }
+ }
+
+ ///
+ public string float2
+ {
+ get { return float2Field; }
+ set { float2Field = value; }
+ }
+
+ ///
+ public string float3
+ {
+ get { return float3Field; }
+ set { float3Field = value; }
+ }
+
+ ///
+ public string float4
+ {
+ get { return float4Field; }
+ set { float4Field = value; }
+ }
+
+ ///
+ public double float1x1
+ {
+ get { return float1x1Field; }
+ set { float1x1Field = value; }
+ }
+
+ ///
+ public string float1x2
+ {
+ get { return float1x2Field; }
+ set { float1x2Field = value; }
+ }
+
+ ///
+ public string float1x3
+ {
+ get { return float1x3Field; }
+ set { float1x3Field = value; }
+ }
+
+ ///
+ public string float1x4
+ {
+ get { return float1x4Field; }
+ set { float1x4Field = value; }
+ }
+
+ ///
+ public string float2x1
+ {
+ get { return float2x1Field; }
+ set { float2x1Field = value; }
+ }
+
+ ///
+ public string float2x2
+ {
+ get { return float2x2Field; }
+ set { float2x2Field = value; }
+ }
+
+ ///
+ public string float2x3
+ {
+ get { return float2x3Field; }
+ set { float2x3Field = value; }
+ }
+
+ ///
+ public string float2x4
+ {
+ get { return float2x4Field; }
+ set { float2x4Field = value; }
+ }
+
+ ///
+ public string float3x1
+ {
+ get { return float3x1Field; }
+ set { float3x1Field = value; }
+ }
+
+ ///
+ public string float3x2
+ {
+ get { return float3x2Field; }
+ set { float3x2Field = value; }
+ }
+
+ ///
+ public string float3x3
+ {
+ get { return float3x3Field; }
+ set { float3x3Field = value; }
+ }
+
+ ///
+ public string float3x4
+ {
+ get { return float3x4Field; }
+ set { float3x4Field = value; }
+ }
+
+ ///
+ public string float4x1
+ {
+ get { return float4x1Field; }
+ set { float4x1Field = value; }
+ }
+
+ ///
+ public string float4x2
+ {
+ get { return float4x2Field; }
+ set { float4x2Field = value; }
+ }
+
+ ///
+ public string float4x3
+ {
+ get { return float4x3Field; }
+ set { float4x3Field = value; }
+ }
+
+ ///
+ public string float4x4
+ {
+ get { return float4x4Field; }
+ set { float4x4Field = value; }
+ }
+
+ ///
+ public fx_surface_common surface
+ {
+ get { return surfaceField; }
+ set { surfaceField = value; }
+ }
+
+ ///
+ public fx_sampler1D_common sampler1D
+ {
+ get { return sampler1DField; }
+ set { sampler1DField = value; }
+ }
+
+ ///
+ public fx_sampler2D_common sampler2D
+ {
+ get { return sampler2DField; }
+ set { sampler2DField = value; }
+ }
+
+ ///
+ public fx_sampler3D_common sampler3D
+ {
+ get { return sampler3DField; }
+ set { sampler3DField = value; }
+ }
+
+ ///
+ public fx_samplerCUBE_common samplerCUBE
+ {
+ get { return samplerCUBEField; }
+ set { samplerCUBEField = value; }
+ }
+
+ ///
+ public fx_samplerRECT_common samplerRECT
+ {
+ get { return samplerRECTField; }
+ set { samplerRECTField = value; }
+ }
+
+ ///
+ public fx_samplerDEPTH_common samplerDEPTH
+ {
+ get { return samplerDEPTHField; }
+ set { samplerDEPTHField = value; }
+ }
+
+ ///
+ public string @enum
+ {
+ get { return enumField; }
+ set { enumField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class fx_annotate_common
+ {
+ private string bool2Field;
+
+ private string bool3Field;
+
+ private string bool4Field;
+ private bool boolField;
+
+ private string float2Field;
+
+ private string float2x2Field;
+ private string float3Field;
+
+ private string float3x3Field;
+ private string float4Field;
+
+ private string float4x4Field;
+ private double floatField;
+ private string int2Field;
+
+ private string int3Field;
+
+ private string int4Field;
+ private long intField;
+
+ private string nameField;
+ private string stringField;
+
+ ///
+ public bool @bool
+ {
+ get { return boolField; }
+ set { boolField = value; }
+ }
+
+ ///
+ public string bool2
+ {
+ get { return bool2Field; }
+ set { bool2Field = value; }
+ }
+
+ ///
+ public string bool3
+ {
+ get { return bool3Field; }
+ set { bool3Field = value; }
+ }
+
+ ///
+ public string bool4
+ {
+ get { return bool4Field; }
+ set { bool4Field = value; }
+ }
+
+ ///
+ public long @int
+ {
+ get { return intField; }
+ set { intField = value; }
+ }
+
+ ///
+ public string int2
+ {
+ get { return int2Field; }
+ set { int2Field = value; }
+ }
+
+ ///
+ public string int3
+ {
+ get { return int3Field; }
+ set { int3Field = value; }
+ }
+
+ ///
+ public string int4
+ {
+ get { return int4Field; }
+ set { int4Field = value; }
+ }
+
+ ///
+ public double @float
+ {
+ get { return floatField; }
+ set { floatField = value; }
+ }
+
+ ///
+ public string float2
+ {
+ get { return float2Field; }
+ set { float2Field = value; }
+ }
+
+ ///
+ public string float3
+ {
+ get { return float3Field; }
+ set { float3Field = value; }
+ }
+
+ ///
+ public string float4
+ {
+ get { return float4Field; }
+ set { float4Field = value; }
+ }
+
+ ///
+ public string float2x2
+ {
+ get { return float2x2Field; }
+ set { float2x2Field = value; }
+ }
+
+ ///
+ public string float3x3
+ {
+ get { return float3x3Field; }
+ set { float3x3Field = value; }
+ }
+
+ ///
+ public string float4x4
+ {
+ get { return float4x4Field; }
+ set { float4x4Field = value; }
+ }
+
+ ///
+ public string @string
+ {
+ get { return stringField; }
+ set { stringField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public enum fx_modifier_enum_common
+ {
+ ///
+ CONST,
+
+ ///
+ UNIFORM,
+
+ ///
+ VARYING,
+
+ ///
+ STATIC,
+
+ ///
+ VOLATILE,
+
+ ///
+ EXTERN,
+
+ ///
+ SHARED,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class InputLocalOffset
+ {
+ private ulong offsetField;
+
+ private string semanticField;
+
+ private ulong setField;
+
+ private bool setFieldSpecified;
+ private string sourceField;
+
+ ///
+ [XmlAttribute]
+ public ulong offset
+ {
+ get { return offsetField; }
+ set { offsetField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NMTOKEN")]
+ public string semantic
+ {
+ get { return semanticField; }
+ set { semanticField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public string source
+ {
+ get { return sourceField; }
+ set { sourceField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong set
+ {
+ get { return setField; }
+ set { setField = value; }
+ }
+
+ ///
+ [XmlIgnore]
+ public bool setSpecified
+ {
+ get { return setFieldSpecified; }
+ set { setFieldSpecified = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class TargetableFloat
+ {
+ private string sidField;
+
+ private double valueField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlText]
+ public double Value
+ {
+ get { return valueField; }
+ set { valueField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class InputLocal
+ {
+ private string semanticField;
+
+ private string sourceField;
+
+ ///
+ [XmlAttribute(DataType = "NMTOKEN")]
+ public string semantic
+ {
+ get { return semanticField; }
+ set { semanticField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public string source
+ {
+ get { return sourceField; }
+ set { sourceField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class instance_material
+ {
+ private instance_materialBind[] bindField;
+
+ private instance_materialBind_vertex_input[] bind_vertex_inputField;
+
+ private extra[] extraField;
+ private string nameField;
+ private string sidField;
+
+ private string symbolField;
+
+ private string targetField;
+
+ ///
+ [XmlElement("bind")]
+ public instance_materialBind[] bind
+ {
+ get { return bindField; }
+ set { bindField = value; }
+ }
+
+ ///
+ [XmlElement("bind_vertex_input")]
+ public instance_materialBind_vertex_input[] bind_vertex_input
+ {
+ get { return bind_vertex_inputField; }
+ set { bind_vertex_inputField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string symbol
+ {
+ get { return symbolField; }
+ set { symbolField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "anyURI")]
+ public string target
+ {
+ get { return targetField; }
+ set { targetField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class instance_materialBind
+ {
+ private string semanticField;
+
+ private string targetField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string semantic
+ {
+ get { return semanticField; }
+ set { semanticField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "token")]
+ public string target
+ {
+ get { return targetField; }
+ set { targetField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class instance_materialBind_vertex_input
+ {
+ private string input_semanticField;
+
+ private ulong input_setField;
+
+ private bool input_setFieldSpecified;
+ private string semanticField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string semantic
+ {
+ get { return semanticField; }
+ set { semanticField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string input_semantic
+ {
+ get { return input_semanticField; }
+ set { input_semanticField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong input_set
+ {
+ get { return input_setField; }
+ set { input_setField = value; }
+ }
+
+ ///
+ [XmlIgnore]
+ public bool input_setSpecified
+ {
+ get { return input_setFieldSpecified; }
+ set { input_setFieldSpecified = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class assetUnit
+ {
+ private double meterField;
+
+ private string nameField;
+
+ public assetUnit()
+ {
+ meterField = 1D;
+ nameField = "meter";
+ }
+
+ ///
+ [XmlAttribute]
+ [DefaultValue(1D)]
+ public double meter
+ {
+ get { return meterField; }
+ set { meterField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NMTOKEN")]
+ [DefaultValue("meter")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public enum UpAxisType
+ {
+ ///
+ X_UP,
+
+ ///
+ Y_UP,
+
+ ///
+ Z_UP,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class library_animation_clips
+ {
+ private animation_clip[] animation_clipField;
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+
+ private string nameField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("animation_clip")]
+ public animation_clip[] animation_clip
+ {
+ get { return animation_clipField; }
+ set { animation_clipField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class animation_clip
+ {
+ private asset assetField;
+ private double endField;
+
+ private bool endFieldSpecified;
+
+ private extra[] extraField;
+
+ private string idField;
+ private InstanceWithExtra[] instance_animationField;
+
+ private string nameField;
+
+ private double startField;
+
+ public animation_clip()
+ {
+ startField = 0D;
+ }
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("instance_animation")]
+ public InstanceWithExtra[] instance_animation
+ {
+ get { return instance_animationField; }
+ set { instance_animationField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ [DefaultValue(0D)]
+ public double start
+ {
+ get { return startField; }
+ set { startField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public double end
+ {
+ get { return endField; }
+ set { endField = value; }
+ }
+
+ ///
+ [XmlIgnore]
+ public bool endSpecified
+ {
+ get { return endFieldSpecified; }
+ set { endFieldSpecified = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot("instance_camera", Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class InstanceWithExtra
+ {
+ private extra[] extraField;
+
+ private string nameField;
+ private string sidField;
+ private string urlField;
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "anyURI")]
+ public string url
+ {
+ get { return urlField; }
+ set { urlField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class library_animations
+ {
+ private animation[] animationField;
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+
+ private string nameField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("animation")]
+ public animation[] animation
+ {
+ get { return animationField; }
+ set { animationField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class animation
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+ private object[] itemsField;
+
+ private string nameField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("animation", typeof(animation))]
+ [XmlElement("channel", typeof(channel))]
+ [XmlElement("sampler", typeof(sampler))]
+ [XmlElement("source", typeof(source))]
+ public object[] Items
+ {
+ get { return itemsField; }
+ set { itemsField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class channel
+ {
+ private string sourceField;
+
+ private string targetField;
+
+ ///
+ [XmlAttribute]
+ public string source
+ {
+ get { return sourceField; }
+ set { sourceField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "token")]
+ public string target
+ {
+ get { return targetField; }
+ set { targetField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class sampler
+ {
+ private string idField;
+ private InputLocal[] inputField;
+
+ ///
+ [XmlElement("input")]
+ public InputLocal[] input
+ {
+ get { return inputField; }
+ set { inputField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class source
+ {
+ private asset assetField;
+
+ private string idField;
+ private object itemField;
+
+ private string nameField;
+ private technique[] techniqueField;
+ private sourceTechnique_common technique_commonField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("IDREF_array", typeof(IDREF_array))]
+ [XmlElement("Name_array", typeof(Name_array))]
+ [XmlElement("bool_array", typeof(bool_array))]
+ [XmlElement("float_array", typeof(float_array))]
+ [XmlElement("int_array", typeof(int_array))]
+ public object Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+
+ ///
+ public sourceTechnique_common technique_common
+ {
+ get { return technique_commonField; }
+ set { technique_commonField = value; }
+ }
+
+ ///
+ [XmlElement("technique")]
+ public technique[] technique
+ {
+ get { return techniqueField; }
+ set { techniqueField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class IDREF_array
+ {
+ private ulong countField;
+ private string idField;
+
+ private string nameField;
+
+ private string valueField;
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong count
+ {
+ get { return countField; }
+ set { countField = value; }
+ }
+
+ ///
+ [XmlText(DataType = "IDREFS")]
+ public string Value
+ {
+ get { return valueField; }
+ set { valueField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class Name_array
+ {
+ private ulong countField;
+ private string idField;
+
+ private string nameField;
+
+ private string[] textField;
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong count
+ {
+ get { return countField; }
+ set { countField = value; }
+ }
+
+ ///
+ [XmlElement("Name")]
+ public string _Text_
+ {
+ get { return COLLADA.ConvertFromArray(Values); }
+
+ set { Values = COLLADA.ConvertStringArray(value); }
+ }
+
+ [XmlIgnore]
+ public string[] Values
+ {
+ get { return textField; }
+ set { textField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class bool_array
+ {
+ private ulong countField;
+ private string idField;
+
+ private string nameField;
+
+ private bool[] textField;
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong count
+ {
+ get { return countField; }
+ set { countField = value; }
+ }
+
+ ///
+ [XmlText]
+ public string _Text_
+ {
+ get { return COLLADA.ConvertFromArray(Values); }
+
+ set { Values = COLLADA.ConvertBoolArray(value); }
+ }
+
+ [XmlIgnore]
+ public bool[] Values
+ {
+ get { return textField; }
+ set { textField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ //[DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class float_array
+ {
+ private ulong countField;
+
+ private short digitsField;
+ private string idField;
+
+ private short magnitudeField;
+ private string nameField;
+
+ private double[] textField;
+
+ public float_array()
+ {
+ digitsField = ((6));
+ magnitudeField = ((38));
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong count
+ {
+ get { return countField; }
+ set { countField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ [DefaultValue(typeof(short), "6")]
+ public short digits
+ {
+ get { return digitsField; }
+ set { digitsField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ [DefaultValue(typeof(short), "38")]
+ public short magnitude
+ {
+ get { return magnitudeField; }
+ set { magnitudeField = value; }
+ }
+
+ ///
+ [XmlText]
+ public string _Text_
+ {
+ get { return COLLADA.ConvertFromArray(Values); }
+
+ set { Values = COLLADA.ConvertDoubleArray(value); }
+ }
+
+ [XmlIgnore]
+ public double[] Values
+ {
+ get { return textField; }
+ set { textField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class int_array
+ {
+ private ulong countField;
+ private string idField;
+
+ private string maxInclusiveField;
+ private string minInclusiveField;
+ private string nameField;
+
+ private int[] textField;
+
+ public int_array()
+ {
+ minInclusiveField = "-2147483648";
+ maxInclusiveField = "2147483647";
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong count
+ {
+ get { return countField; }
+ set { countField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "integer")]
+ [DefaultValue("-2147483648")]
+ public string minInclusive
+ {
+ get { return minInclusiveField; }
+ set { minInclusiveField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "integer")]
+ [DefaultValue("2147483647")]
+ public string maxInclusive
+ {
+ get { return maxInclusiveField; }
+ set { maxInclusiveField = value; }
+ }
+
+ ///
+ [XmlText]
+ public string _Text_
+ {
+ get { return COLLADA.ConvertFromArray(Values); }
+
+ set { Values = COLLADA.ConvertIntArray(value); }
+ }
+
+ [XmlIgnore]
+ public int[] Values
+ {
+ get { return textField; }
+ set { textField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class sourceTechnique_common
+ {
+ private accessor accessorField;
+
+ ///
+ public accessor accessor
+ {
+ get { return accessorField; }
+ set { accessorField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class accessor
+ {
+ private ulong countField;
+
+ private ulong offsetField;
+ private param[] paramField;
+
+ private string sourceField;
+
+ private ulong strideField;
+
+ public accessor()
+ {
+ offsetField = ((ulong)(0m));
+ strideField = ((ulong)(1m));
+ }
+
+ ///
+ [XmlElement("param")]
+ public param[] param
+ {
+ get { return paramField; }
+ set { paramField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong count
+ {
+ get { return countField; }
+ set { countField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ [DefaultValue(typeof(ulong), "0")]
+ public ulong offset
+ {
+ get { return offsetField; }
+ set { offsetField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "anyURI")]
+ public string source
+ {
+ get { return sourceField; }
+ set { sourceField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ [DefaultValue(typeof(ulong), "1")]
+ public ulong stride
+ {
+ get { return strideField; }
+ set { strideField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class param
+ {
+ private string nameField;
+
+ private string semanticField;
+ private string sidField;
+
+ private string typeField;
+
+ private string valueField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NMTOKEN")]
+ public string semantic
+ {
+ get { return semanticField; }
+ set { semanticField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NMTOKEN")]
+ public string type
+ {
+ get { return typeField; }
+ set { typeField = value; }
+ }
+
+ ///
+ [XmlText]
+ public string Value
+ {
+ get { return valueField; }
+ set { valueField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class library_cameras
+ {
+ private asset assetField;
+
+ private camera[] cameraField;
+
+ private extra[] extraField;
+
+ private string idField;
+
+ private string nameField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("camera")]
+ public camera[] camera
+ {
+ get { return cameraField; }
+ set { cameraField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class camera
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+ private cameraImager imagerField;
+
+ private string nameField;
+ private cameraOptics opticsField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ public cameraOptics optics
+ {
+ get { return opticsField; }
+ set { opticsField = value; }
+ }
+
+ ///
+ public cameraImager imager
+ {
+ get { return imagerField; }
+ set { imagerField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class cameraOptics
+ {
+ private extra[] extraField;
+ private technique[] techniqueField;
+ private cameraOpticsTechnique_common technique_commonField;
+
+ ///
+ public cameraOpticsTechnique_common technique_common
+ {
+ get { return technique_commonField; }
+ set { technique_commonField = value; }
+ }
+
+ ///
+ [XmlElement("technique")]
+ public technique[] technique
+ {
+ get { return techniqueField; }
+ set { techniqueField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class cameraOpticsTechnique_common
+ {
+ private object itemField;
+
+ ///
+ [XmlElement("orthographic", typeof(cameraOpticsTechnique_commonOrthographic))]
+ [XmlElement("perspective", typeof(cameraOpticsTechnique_commonPerspective))]
+ public object Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class cameraOpticsTechnique_commonOrthographic
+ {
+ private ItemsChoiceType[] itemsElementNameField;
+ private TargetableFloat[] itemsField;
+
+ private TargetableFloat zfarField;
+ private TargetableFloat znearField;
+
+ ///
+ [XmlElement("aspect_ratio", typeof(TargetableFloat))]
+ [XmlElement("xmag", typeof(TargetableFloat))]
+ [XmlElement("ymag", typeof(TargetableFloat))]
+ [XmlChoiceIdentifier("ItemsElementName")]
+ public TargetableFloat[] Items
+ {
+ get { return itemsField; }
+ set { itemsField = value; }
+ }
+
+ ///
+ [XmlElement("ItemsElementName")]
+ [XmlIgnore]
+ public ItemsChoiceType[] ItemsElementName
+ {
+ get { return itemsElementNameField; }
+ set { itemsElementNameField = value; }
+ }
+
+ ///
+ public TargetableFloat znear
+ {
+ get { return znearField; }
+ set { znearField = value; }
+ }
+
+ ///
+ public TargetableFloat zfar
+ {
+ get { return zfarField; }
+ set { zfarField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IncludeInSchema = false)]
+ public enum ItemsChoiceType
+ {
+ ///
+ aspect_ratio,
+
+ ///
+ xmag,
+
+ ///
+ ymag,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class cameraOpticsTechnique_commonPerspective
+ {
+ private ItemsChoiceType1[] itemsElementNameField;
+ private TargetableFloat[] itemsField;
+
+ private TargetableFloat zfarField;
+ private TargetableFloat znearField;
+
+ ///
+ [XmlElement("aspect_ratio", typeof(TargetableFloat))]
+ [XmlElement("xfov", typeof(TargetableFloat))]
+ [XmlElement("yfov", typeof(TargetableFloat))]
+ [XmlChoiceIdentifier("ItemsElementName")]
+ public TargetableFloat[] Items
+ {
+ get { return itemsField; }
+ set { itemsField = value; }
+ }
+
+ ///
+ [XmlElement("ItemsElementName")]
+ [XmlIgnore]
+ public ItemsChoiceType1[] ItemsElementName
+ {
+ get { return itemsElementNameField; }
+ set { itemsElementNameField = value; }
+ }
+
+ ///
+ public TargetableFloat znear
+ {
+ get { return znearField; }
+ set { znearField = value; }
+ }
+
+ ///
+ public TargetableFloat zfar
+ {
+ get { return zfarField; }
+ set { zfarField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IncludeInSchema = false)]
+ public enum ItemsChoiceType1
+ {
+ ///
+ aspect_ratio,
+
+ ///
+ xfov,
+
+ ///
+ yfov,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class cameraImager
+ {
+ private extra[] extraField;
+ private technique[] techniqueField;
+
+ ///
+ [XmlElement("technique")]
+ public technique[] technique
+ {
+ get { return techniqueField; }
+ set { techniqueField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class library_controllers
+ {
+ private asset assetField;
+
+ private controller[] controllerField;
+
+ private extra[] extraField;
+
+ private string idField;
+
+ private string nameField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("controller")]
+ public controller[] controller
+ {
+ get { return controllerField; }
+ set { controllerField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class controller
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+ private object itemField;
+
+ private string nameField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("morph", typeof(morph))]
+ [XmlElement("skin", typeof(skin))]
+ public object Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class morph
+ {
+ private extra[] extraField;
+
+ private MorphMethodType methodField;
+
+ private string source1Field;
+ private source[] sourceField;
+
+ private morphTargets targetsField;
+
+ public morph()
+ {
+ methodField = MorphMethodType.NORMALIZED;
+ }
+
+ ///
+ [XmlElement("source")]
+ public source[] source
+ {
+ get { return sourceField; }
+ set { sourceField = value; }
+ }
+
+ ///
+ public morphTargets targets
+ {
+ get { return targetsField; }
+ set { targetsField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ [DefaultValue(MorphMethodType.NORMALIZED)]
+ public MorphMethodType method
+ {
+ get { return methodField; }
+ set { methodField = value; }
+ }
+
+ ///
+ [XmlAttribute("source", DataType = "anyURI")]
+ public string source1
+ {
+ get { return source1Field; }
+ set { source1Field = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class morphTargets
+ {
+ private extra[] extraField;
+ private InputLocal[] inputField;
+
+ ///
+ [XmlElement("input")]
+ public InputLocal[] input
+ {
+ get { return inputField; }
+ set { inputField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public enum MorphMethodType
+ {
+ ///
+ NORMALIZED,
+
+ ///
+ RELATIVE,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class skin
+ {
+ private string bind_shape_matrixField;
+
+ private extra[] extraField;
+ private skinJoints jointsField;
+
+ private string source1Field;
+ private source[] sourceField;
+ private skinVertex_weights vertex_weightsField;
+
+ ///
+ public string bind_shape_matrix
+ {
+ get { return bind_shape_matrixField; }
+ set { bind_shape_matrixField = value; }
+ }
+
+ ///
+ [XmlElement("source")]
+ public source[] source
+ {
+ get { return sourceField; }
+ set { sourceField = value; }
+ }
+
+ ///
+ public skinJoints joints
+ {
+ get { return jointsField; }
+ set { jointsField = value; }
+ }
+
+ ///
+ public skinVertex_weights vertex_weights
+ {
+ get { return vertex_weightsField; }
+ set { vertex_weightsField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute("source", DataType = "anyURI")]
+ public string source1
+ {
+ get { return source1Field; }
+ set { source1Field = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class skinJoints
+ {
+ private extra[] extraField;
+ private InputLocal[] inputField;
+
+ ///
+ [XmlElement("input")]
+ public InputLocal[] input
+ {
+ get { return inputField; }
+ set { inputField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class skinVertex_weights
+ {
+ private ulong countField;
+ private extra[] extraField;
+ private InputLocalOffset[] inputField;
+
+ private string vField;
+ private string vcountField;
+
+ ///
+ [XmlElement("input")]
+ public InputLocalOffset[] input
+ {
+ get { return inputField; }
+ set { inputField = value; }
+ }
+
+ ///
+ public string vcount
+ {
+ get { return vcountField; }
+ set { vcountField = value; }
+ }
+
+ ///
+ public string v
+ {
+ get { return vField; }
+ set { vField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong count
+ {
+ get { return countField; }
+ set { countField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class library_effects
+ {
+ private asset assetField;
+
+ private effect[] effectField;
+
+ private extra[] extraField;
+
+ private string idField;
+
+ private string nameField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("effect")]
+ public effect[] effect
+ {
+ get { return effectField; }
+ set { effectField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class effect
+ {
+ private fx_annotate_common[] annotateField;
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+ private image[] imageField;
+ private effectFx_profile_abstractProfile_COMMON[] itemsField;
+
+ private string nameField;
+ private fx_newparam_common[] newparamField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("annotate")]
+ public fx_annotate_common[] annotate
+ {
+ get { return annotateField; }
+ set { annotateField = value; }
+ }
+
+ ///
+ [XmlElement("image")]
+ public image[] image
+ {
+ get { return imageField; }
+ set { imageField = value; }
+ }
+
+ ///
+ [XmlElement("newparam")]
+ public fx_newparam_common[] newparam
+ {
+ get { return newparamField; }
+ set { newparamField = value; }
+ }
+
+ ///
+ [XmlElement("profile_COMMON")]
+ public effectFx_profile_abstractProfile_COMMON[] Items
+ {
+ get { return itemsField; }
+ set { itemsField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class image
+ {
+ private asset assetField;
+ private ulong depthField;
+
+ private extra[] extraField;
+
+ private string formatField;
+
+ private ulong heightField;
+
+ private bool heightFieldSpecified;
+ private string idField;
+ private object itemField;
+ private string nameField;
+
+ private ulong widthField;
+
+ private bool widthFieldSpecified;
+
+ public image()
+ {
+ depthField = ((ulong)(1m));
+ }
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("data", typeof(byte[]), DataType = "hexBinary")]
+ [XmlElement("init_from", typeof(string), DataType = "anyURI")]
+ public object Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "token")]
+ public string format
+ {
+ get { return formatField; }
+ set { formatField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong height
+ {
+ get { return heightField; }
+ set { heightField = value; }
+ }
+
+ ///
+ [XmlIgnore]
+ public bool heightSpecified
+ {
+ get { return heightFieldSpecified; }
+ set { heightFieldSpecified = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong width
+ {
+ get { return widthField; }
+ set { widthField = value; }
+ }
+
+ ///
+ [XmlIgnore]
+ public bool widthSpecified
+ {
+ get { return widthFieldSpecified; }
+ set { widthFieldSpecified = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ [DefaultValue(typeof(ulong), "1")]
+ public ulong depth
+ {
+ get { return depthField; }
+ set { depthField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot("profile_COMMON", Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class effectFx_profile_abstractProfile_COMMON
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+ private object[] itemsField;
+
+ private effectFx_profile_abstractProfile_COMMONTechnique techniqueField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("image", typeof(image))]
+ [XmlElement("newparam", typeof(common_newparam_type))]
+ public object[] Items
+ {
+ get { return itemsField; }
+ set { itemsField = value; }
+ }
+
+ ///
+ public effectFx_profile_abstractProfile_COMMONTechnique technique
+ {
+ get { return techniqueField; }
+ set { techniqueField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class effectFx_profile_abstractProfile_COMMONTechnique
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+ private object itemField;
+ private object[] itemsField;
+
+ private string sidField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("image", typeof(image))]
+ [XmlElement("newparam", typeof(common_newparam_type))]
+ public object[] Items
+ {
+ get { return itemsField; }
+ set { itemsField = value; }
+ }
+
+ ///
+ [XmlElement("blinn", typeof(effectFx_profile_abstractProfile_COMMONTechniqueBlinn))]
+ [XmlElement("constant", typeof(effectFx_profile_abstractProfile_COMMONTechniqueConstant))]
+ [XmlElement("lambert", typeof(effectFx_profile_abstractProfile_COMMONTechniqueLambert))]
+ [XmlElement("phong", typeof(effectFx_profile_abstractProfile_COMMONTechniquePhong))]
+ public object Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class effectFx_profile_abstractProfile_COMMONTechniqueBlinn
+ {
+ private common_color_or_texture_type ambientField;
+
+ private common_color_or_texture_type diffuseField;
+ private common_color_or_texture_type emissionField;
+ private common_float_or_param_type index_of_refractionField;
+
+ private common_color_or_texture_type reflectiveField;
+
+ private common_float_or_param_type reflectivityField;
+ private common_float_or_param_type shininessField;
+ private common_color_or_texture_type specularField;
+
+ private common_float_or_param_type transparencyField;
+ private common_transparent_type transparentField;
+
+ ///
+ public common_color_or_texture_type emission
+ {
+ get { return emissionField; }
+ set { emissionField = value; }
+ }
+
+ ///
+ public common_color_or_texture_type ambient
+ {
+ get { return ambientField; }
+ set { ambientField = value; }
+ }
+
+ ///
+ public common_color_or_texture_type diffuse
+ {
+ get { return diffuseField; }
+ set { diffuseField = value; }
+ }
+
+ ///
+ public common_color_or_texture_type specular
+ {
+ get { return specularField; }
+ set { specularField = value; }
+ }
+
+ ///
+ public common_float_or_param_type shininess
+ {
+ get { return shininessField; }
+ set { shininessField = value; }
+ }
+
+ ///
+ public common_color_or_texture_type reflective
+ {
+ get { return reflectiveField; }
+ set { reflectiveField = value; }
+ }
+
+ ///
+ public common_float_or_param_type reflectivity
+ {
+ get { return reflectivityField; }
+ set { reflectivityField = value; }
+ }
+
+ ///
+ public common_transparent_type transparent
+ {
+ get { return transparentField; }
+ set { transparentField = value; }
+ }
+
+ ///
+ public common_float_or_param_type transparency
+ {
+ get { return transparencyField; }
+ set { transparencyField = value; }
+ }
+
+ ///
+ public common_float_or_param_type index_of_refraction
+ {
+ get { return index_of_refractionField; }
+ set { index_of_refractionField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class effectFx_profile_abstractProfile_COMMONTechniqueConstant
+ {
+ private common_color_or_texture_type emissionField;
+ private common_float_or_param_type index_of_refractionField;
+
+ private common_color_or_texture_type reflectiveField;
+
+ private common_float_or_param_type reflectivityField;
+
+ private common_float_or_param_type transparencyField;
+ private common_transparent_type transparentField;
+
+ ///
+ public common_color_or_texture_type emission
+ {
+ get { return emissionField; }
+ set { emissionField = value; }
+ }
+
+ ///
+ public common_color_or_texture_type reflective
+ {
+ get { return reflectiveField; }
+ set { reflectiveField = value; }
+ }
+
+ ///
+ public common_float_or_param_type reflectivity
+ {
+ get { return reflectivityField; }
+ set { reflectivityField = value; }
+ }
+
+ ///
+ public common_transparent_type transparent
+ {
+ get { return transparentField; }
+ set { transparentField = value; }
+ }
+
+ ///
+ public common_float_or_param_type transparency
+ {
+ get { return transparencyField; }
+ set { transparencyField = value; }
+ }
+
+ ///
+ public common_float_or_param_type index_of_refraction
+ {
+ get { return index_of_refractionField; }
+ set { index_of_refractionField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class effectFx_profile_abstractProfile_COMMONTechniqueLambert
+ {
+ private common_color_or_texture_type ambientField;
+
+ private common_color_or_texture_type diffuseField;
+ private common_color_or_texture_type emissionField;
+ private common_float_or_param_type index_of_refractionField;
+
+ private common_color_or_texture_type reflectiveField;
+
+ private common_float_or_param_type reflectivityField;
+
+ private common_float_or_param_type transparencyField;
+ private common_transparent_type transparentField;
+
+ ///
+ public common_color_or_texture_type emission
+ {
+ get { return emissionField; }
+ set { emissionField = value; }
+ }
+
+ ///
+ public common_color_or_texture_type ambient
+ {
+ get { return ambientField; }
+ set { ambientField = value; }
+ }
+
+ ///
+ public common_color_or_texture_type diffuse
+ {
+ get { return diffuseField; }
+ set { diffuseField = value; }
+ }
+
+ ///
+ public common_color_or_texture_type reflective
+ {
+ get { return reflectiveField; }
+ set { reflectiveField = value; }
+ }
+
+ ///
+ public common_float_or_param_type reflectivity
+ {
+ get { return reflectivityField; }
+ set { reflectivityField = value; }
+ }
+
+ ///
+ public common_transparent_type transparent
+ {
+ get { return transparentField; }
+ set { transparentField = value; }
+ }
+
+ ///
+ public common_float_or_param_type transparency
+ {
+ get { return transparencyField; }
+ set { transparencyField = value; }
+ }
+
+ ///
+ public common_float_or_param_type index_of_refraction
+ {
+ get { return index_of_refractionField; }
+ set { index_of_refractionField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class effectFx_profile_abstractProfile_COMMONTechniquePhong
+ {
+ private common_color_or_texture_type ambientField;
+
+ private common_color_or_texture_type diffuseField;
+ private common_color_or_texture_type emissionField;
+ private common_float_or_param_type index_of_refractionField;
+
+ private common_color_or_texture_type reflectiveField;
+
+ private common_float_or_param_type reflectivityField;
+ private common_float_or_param_type shininessField;
+ private common_color_or_texture_type specularField;
+
+ private common_float_or_param_type transparencyField;
+ private common_transparent_type transparentField;
+
+ ///
+ public common_color_or_texture_type emission
+ {
+ get { return emissionField; }
+ set { emissionField = value; }
+ }
+
+ ///
+ public common_color_or_texture_type ambient
+ {
+ get { return ambientField; }
+ set { ambientField = value; }
+ }
+
+ ///
+ public common_color_or_texture_type diffuse
+ {
+ get { return diffuseField; }
+ set { diffuseField = value; }
+ }
+
+ ///
+ public common_color_or_texture_type specular
+ {
+ get { return specularField; }
+ set { specularField = value; }
+ }
+
+ ///
+ public common_float_or_param_type shininess
+ {
+ get { return shininessField; }
+ set { shininessField = value; }
+ }
+
+ ///
+ public common_color_or_texture_type reflective
+ {
+ get { return reflectiveField; }
+ set { reflectiveField = value; }
+ }
+
+ ///
+ public common_float_or_param_type reflectivity
+ {
+ get { return reflectivityField; }
+ set { reflectivityField = value; }
+ }
+
+ ///
+ public common_transparent_type transparent
+ {
+ get { return transparentField; }
+ set { transparentField = value; }
+ }
+
+ ///
+ public common_float_or_param_type transparency
+ {
+ get { return transparencyField; }
+ set { transparencyField = value; }
+ }
+
+ ///
+ public common_float_or_param_type index_of_refraction
+ {
+ get { return index_of_refractionField; }
+ set { index_of_refractionField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class library_force_fields
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+ private force_field[] force_fieldField;
+
+ private string idField;
+
+ private string nameField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("force_field")]
+ public force_field[] force_field
+ {
+ get { return force_fieldField; }
+ set { force_fieldField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class force_field
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+
+ private string nameField;
+ private technique[] techniqueField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("technique")]
+ public technique[] technique
+ {
+ get { return techniqueField; }
+ set { techniqueField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class library_geometries
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+ private geometry[] geometryField;
+
+ private string idField;
+
+ private string nameField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("geometry")]
+ public geometry[] geometry
+ {
+ get { return geometryField; }
+ set { geometryField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class geometry
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+ private object itemField;
+
+ private string nameField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("convex_mesh", typeof(convex_mesh))]
+ [XmlElement("mesh", typeof(mesh))]
+ [XmlElement("spline", typeof(spline))]
+ public object Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class convex_mesh
+ {
+ private string convex_hull_ofField;
+ private extra[] extraField;
+ private object[] itemsField;
+ private source[] sourceField;
+
+ private vertices verticesField;
+
+ ///
+ [XmlElement("source")]
+ public source[] source
+ {
+ get { return sourceField; }
+ set { sourceField = value; }
+ }
+
+ ///
+ public vertices vertices
+ {
+ get { return verticesField; }
+ set { verticesField = value; }
+ }
+
+ ///
+ [XmlElement("lines", typeof(lines))]
+ [XmlElement("linestrips", typeof(linestrips))]
+ [XmlElement("polygons", typeof(polygons))]
+ [XmlElement("polylist", typeof(polylist))]
+ [XmlElement("triangles", typeof(triangles))]
+ [XmlElement("trifans", typeof(trifans))]
+ [XmlElement("tristrips", typeof(tristrips))]
+ public object[] Items
+ {
+ get { return itemsField; }
+ set { itemsField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "anyURI")]
+ public string convex_hull_of
+ {
+ get { return convex_hull_ofField; }
+ set { convex_hull_ofField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class vertices
+ {
+ private extra[] extraField;
+
+ private string idField;
+ private InputLocal[] inputField;
+
+ private string nameField;
+
+ ///
+ [XmlElement("input")]
+ public InputLocal[] input
+ {
+ get { return inputField; }
+ set { inputField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class lines
+ {
+ private ulong countField;
+ private extra[] extraField;
+ private InputLocalOffset[] inputField;
+
+ private string materialField;
+ private string nameField;
+ private string pField;
+
+ ///
+ [XmlElement("input")]
+ public InputLocalOffset[] input
+ {
+ get { return inputField; }
+ set { inputField = value; }
+ }
+
+ ///
+ public string p
+ {
+ get { return pField; }
+ set { pField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong count
+ {
+ get { return countField; }
+ set { countField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string material
+ {
+ get { return materialField; }
+ set { materialField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class linestrips
+ {
+ private ulong countField;
+ private extra[] extraField;
+ private InputLocalOffset[] inputField;
+
+ private string materialField;
+ private string nameField;
+ private string[] pField;
+
+ ///
+ [XmlElement("input")]
+ public InputLocalOffset[] input
+ {
+ get { return inputField; }
+ set { inputField = value; }
+ }
+
+ ///
+ [XmlElement("p")]
+ public string[] p
+ {
+ get { return pField; }
+ set { pField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong count
+ {
+ get { return countField; }
+ set { countField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string material
+ {
+ get { return materialField; }
+ set { materialField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class polygons
+ {
+ private ulong countField;
+ private extra[] extraField;
+ private InputLocalOffset[] inputField;
+
+ private object[] itemsField;
+
+ private string materialField;
+ private string nameField;
+
+ ///
+ [XmlElement("input")]
+ public InputLocalOffset[] input
+ {
+ get { return inputField; }
+ set { inputField = value; }
+ }
+
+ ///
+ [XmlElement("p", typeof(string))]
+ [XmlElement("ph", typeof(polygonsPH))]
+ public object[] Items
+ {
+ get { return itemsField; }
+ set { itemsField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong count
+ {
+ get { return countField; }
+ set { countField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string material
+ {
+ get { return materialField; }
+ set { materialField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class polygonsPH
+ {
+ private string[] hField;
+ private string pField;
+
+ ///
+ public string p
+ {
+ get { return pField; }
+ set { pField = value; }
+ }
+
+ ///
+ [XmlElement("h")]
+ public string[] h
+ {
+ get { return hField; }
+ set { hField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class polylist
+ {
+ private ulong countField;
+ private extra[] extraField;
+ private InputLocalOffset[] inputField;
+
+ private string materialField;
+ private string nameField;
+ private string pField;
+ private string vcountField;
+
+ ///
+ [XmlElement("input")]
+ public InputLocalOffset[] input
+ {
+ get { return inputField; }
+ set { inputField = value; }
+ }
+
+ ///
+ public string vcount
+ {
+ get { return vcountField; }
+ set { vcountField = value; }
+ }
+
+ ///
+ public string p
+ {
+ get { return pField; }
+ set { pField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong count
+ {
+ get { return countField; }
+ set { countField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string material
+ {
+ get { return materialField; }
+ set { materialField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class triangles
+ {
+ private ulong countField;
+ private extra[] extraField;
+ private InputLocalOffset[] inputField;
+
+ private string materialField;
+ private string nameField;
+ private string pField;
+
+ ///
+ [XmlElement("input")]
+ public InputLocalOffset[] input
+ {
+ get { return inputField; }
+ set { inputField = value; }
+ }
+
+ ///
+ public string p
+ {
+ get { return pField; }
+ set { pField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong count
+ {
+ get { return countField; }
+ set { countField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string material
+ {
+ get { return materialField; }
+ set { materialField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class trifans
+ {
+ private ulong countField;
+ private extra[] extraField;
+ private InputLocalOffset[] inputField;
+
+ private string materialField;
+ private string nameField;
+ private string[] pField;
+
+ ///
+ [XmlElement("input")]
+ public InputLocalOffset[] input
+ {
+ get { return inputField; }
+ set { inputField = value; }
+ }
+
+ ///
+ [XmlElement("p")]
+ public string[] p
+ {
+ get { return pField; }
+ set { pField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong count
+ {
+ get { return countField; }
+ set { countField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string material
+ {
+ get { return materialField; }
+ set { materialField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class tristrips
+ {
+ private ulong countField;
+ private extra[] extraField;
+ private InputLocalOffset[] inputField;
+
+ private string materialField;
+ private string nameField;
+ private string[] pField;
+
+ ///
+ [XmlElement("input")]
+ public InputLocalOffset[] input
+ {
+ get { return inputField; }
+ set { inputField = value; }
+ }
+
+ ///
+ [XmlElement("p")]
+ public string[] p
+ {
+ get { return pField; }
+ set { pField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ public ulong count
+ {
+ get { return countField; }
+ set { countField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string material
+ {
+ get { return materialField; }
+ set { materialField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class mesh
+ {
+ private extra[] extraField;
+ private object[] itemsField;
+ private source[] sourceField;
+
+ private vertices verticesField;
+
+ ///
+ [XmlElement("source")]
+ public source[] source
+ {
+ get { return sourceField; }
+ set { sourceField = value; }
+ }
+
+ ///
+ public vertices vertices
+ {
+ get { return verticesField; }
+ set { verticesField = value; }
+ }
+
+ ///
+ [XmlElement("lines", typeof(lines))]
+ [XmlElement("linestrips", typeof(linestrips))]
+ [XmlElement("polygons", typeof(polygons))]
+ [XmlElement("polylist", typeof(polylist))]
+ [XmlElement("triangles", typeof(triangles))]
+ [XmlElement("trifans", typeof(trifans))]
+ [XmlElement("tristrips", typeof(tristrips))]
+ public object[] Items
+ {
+ get { return itemsField; }
+ set { itemsField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class spline
+ {
+ private bool closedField;
+ private splineControl_vertices control_verticesField;
+
+ private extra[] extraField;
+ private source[] sourceField;
+
+ public spline()
+ {
+ closedField = false;
+ }
+
+ ///
+ [XmlElement("source")]
+ public source[] source
+ {
+ get { return sourceField; }
+ set { sourceField = value; }
+ }
+
+ ///
+ public splineControl_vertices control_vertices
+ {
+ get { return control_verticesField; }
+ set { control_verticesField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ [DefaultValue(false)]
+ public bool closed
+ {
+ get { return closedField; }
+ set { closedField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class splineControl_vertices
+ {
+ private extra[] extraField;
+ private InputLocal[] inputField;
+
+ ///
+ [XmlElement("input")]
+ public InputLocal[] input
+ {
+ get { return inputField; }
+ set { inputField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class library_images
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+ private image[] imageField;
+
+ private string nameField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("image")]
+ public image[] image
+ {
+ get { return imageField; }
+ set { imageField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class library_lights
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+ private light[] lightField;
+
+ private string nameField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("light")]
+ public light[] light
+ {
+ get { return lightField; }
+ set { lightField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class light
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+
+ private string nameField;
+ private technique[] techniqueField;
+ private lightTechnique_common technique_commonField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ public lightTechnique_common technique_common
+ {
+ get { return technique_commonField; }
+ set { technique_commonField = value; }
+ }
+
+ ///
+ [XmlElement("technique")]
+ public technique[] technique
+ {
+ get { return techniqueField; }
+ set { techniqueField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class lightTechnique_common
+ {
+ private object itemField;
+
+ ///
+ [XmlElement("ambient", typeof(lightTechnique_commonAmbient))]
+ [XmlElement("directional", typeof(lightTechnique_commonDirectional))]
+ [XmlElement("point", typeof(lightTechnique_commonPoint))]
+ [XmlElement("spot", typeof(lightTechnique_commonSpot))]
+ public object Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class lightTechnique_commonAmbient
+ {
+ private TargetableFloat3 colorField;
+
+ ///
+ public TargetableFloat3 color
+ {
+ get { return colorField; }
+ set { colorField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot("scale", Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class TargetableFloat3
+ {
+ private string sidField;
+
+ private double[] textField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlText]
+ public string _Text_
+ {
+ get { return COLLADA.ConvertFromArray(Values); }
+
+ set { Values = COLLADA.ConvertDoubleArray(value); }
+ }
+
+ [XmlIgnore]
+ public double[] Values
+ {
+ get { return textField; }
+ set { textField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class lightTechnique_commonDirectional
+ {
+ private TargetableFloat3 colorField;
+
+ ///
+ public TargetableFloat3 color
+ {
+ get { return colorField; }
+ set { colorField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class lightTechnique_commonPoint
+ {
+ private TargetableFloat3 colorField;
+
+ private TargetableFloat constant_attenuationField;
+
+ private TargetableFloat linear_attenuationField;
+
+ private TargetableFloat quadratic_attenuationField;
+
+ ///
+ public TargetableFloat3 color
+ {
+ get { return colorField; }
+ set { colorField = value; }
+ }
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='1.0' attribute.
+ public TargetableFloat constant_attenuation
+ {
+ get { return constant_attenuationField; }
+ set { constant_attenuationField = value; }
+ }
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='0.0' attribute.
+ public TargetableFloat linear_attenuation
+ {
+ get { return linear_attenuationField; }
+ set { linear_attenuationField = value; }
+ }
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='0.0' attribute.
+ public TargetableFloat quadratic_attenuation
+ {
+ get { return quadratic_attenuationField; }
+ set { quadratic_attenuationField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class lightTechnique_commonSpot
+ {
+ private TargetableFloat3 colorField;
+
+ private TargetableFloat constant_attenuationField;
+
+ private TargetableFloat falloff_angleField;
+
+ private TargetableFloat falloff_exponentField;
+ private TargetableFloat linear_attenuationField;
+
+ private TargetableFloat quadratic_attenuationField;
+
+ ///
+ public TargetableFloat3 color
+ {
+ get { return colorField; }
+ set { colorField = value; }
+ }
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='1.0' attribute.
+ public TargetableFloat constant_attenuation
+ {
+ get { return constant_attenuationField; }
+ set { constant_attenuationField = value; }
+ }
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='0.0' attribute.
+ public TargetableFloat linear_attenuation
+ {
+ get { return linear_attenuationField; }
+ set { linear_attenuationField = value; }
+ }
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='0.0' attribute.
+ public TargetableFloat quadratic_attenuation
+ {
+ get { return quadratic_attenuationField; }
+ set { quadratic_attenuationField = value; }
+ }
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='180.0' attribute.
+ public TargetableFloat falloff_angle
+ {
+ get { return falloff_angleField; }
+ set { falloff_angleField = value; }
+ }
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='0.0' attribute.
+ public TargetableFloat falloff_exponent
+ {
+ get { return falloff_exponentField; }
+ set { falloff_exponentField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class library_materials
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+ private material[] materialField;
+
+ private string nameField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("material")]
+ public material[] material
+ {
+ get { return materialField; }
+ set { materialField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class material
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+ private instance_effect instance_effectField;
+
+ private string nameField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ public instance_effect instance_effect
+ {
+ get { return instance_effectField; }
+ set { instance_effectField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class instance_effect
+ {
+ private extra[] extraField;
+
+ private string nameField;
+ private instance_effectSetparam[] setparamField;
+ private string sidField;
+ private instance_effectTechnique_hint[] technique_hintField;
+ private string urlField;
+
+ ///
+ [XmlElement("technique_hint")]
+ public instance_effectTechnique_hint[] technique_hint
+ {
+ get { return technique_hintField; }
+ set { technique_hintField = value; }
+ }
+
+ ///
+ [XmlElement("setparam")]
+ public instance_effectSetparam[] setparam
+ {
+ get { return setparamField; }
+ set { setparamField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "anyURI")]
+ public string url
+ {
+ get { return urlField; }
+ set { urlField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class instance_effectTechnique_hint
+ {
+ private string platformField;
+
+ private string profileField;
+
+ private string refField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string platform
+ {
+ get { return platformField; }
+ set { platformField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string profile
+ {
+ get { return profileField; }
+ set { profileField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string @ref
+ {
+ get { return refField; }
+ set { refField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class instance_effectSetparam
+ {
+ private string bool2Field;
+
+ private string bool3Field;
+
+ private string bool4Field;
+ private bool boolField;
+ private string enumField;
+
+ private double float1x1Field;
+
+ private string float1x2Field;
+
+ private string float1x3Field;
+
+ private string float1x4Field;
+ private string float2Field;
+
+ private string float2x1Field;
+
+ private string float2x2Field;
+
+ private string float2x3Field;
+
+ private string float2x4Field;
+ private string float3Field;
+
+ private string float3x1Field;
+
+ private string float3x2Field;
+
+ private string float3x3Field;
+
+ private string float3x4Field;
+ private string float4Field;
+
+ private string float4x1Field;
+
+ private string float4x2Field;
+
+ private string float4x3Field;
+
+ private string float4x4Field;
+ private double floatField;
+ private string int2Field;
+
+ private string int3Field;
+
+ private string int4Field;
+ private long intField;
+ private string refField;
+
+ private fx_sampler1D_common sampler1DField;
+
+ private fx_sampler2D_common sampler2DField;
+
+ private fx_sampler3D_common sampler3DField;
+
+ private fx_samplerCUBE_common samplerCUBEField;
+
+ private fx_samplerDEPTH_common samplerDEPTHField;
+ private fx_samplerRECT_common samplerRECTField;
+ private fx_surface_common surfaceField;
+
+ ///
+ public bool @bool
+ {
+ get { return boolField; }
+ set { boolField = value; }
+ }
+
+ ///
+ public string bool2
+ {
+ get { return bool2Field; }
+ set { bool2Field = value; }
+ }
+
+ ///
+ public string bool3
+ {
+ get { return bool3Field; }
+ set { bool3Field = value; }
+ }
+
+ ///
+ public string bool4
+ {
+ get { return bool4Field; }
+ set { bool4Field = value; }
+ }
+
+ ///
+ public long @int
+ {
+ get { return intField; }
+ set { intField = value; }
+ }
+
+ ///
+ public string int2
+ {
+ get { return int2Field; }
+ set { int2Field = value; }
+ }
+
+ ///
+ public string int3
+ {
+ get { return int3Field; }
+ set { int3Field = value; }
+ }
+
+ ///
+ public string int4
+ {
+ get { return int4Field; }
+ set { int4Field = value; }
+ }
+
+ ///
+ public double @float
+ {
+ get { return floatField; }
+ set { floatField = value; }
+ }
+
+ ///
+ public string float2
+ {
+ get { return float2Field; }
+ set { float2Field = value; }
+ }
+
+ ///
+ public string float3
+ {
+ get { return float3Field; }
+ set { float3Field = value; }
+ }
+
+ ///
+ public string float4
+ {
+ get { return float4Field; }
+ set { float4Field = value; }
+ }
+
+ ///
+ public double float1x1
+ {
+ get { return float1x1Field; }
+ set { float1x1Field = value; }
+ }
+
+ ///
+ public string float1x2
+ {
+ get { return float1x2Field; }
+ set { float1x2Field = value; }
+ }
+
+ ///
+ public string float1x3
+ {
+ get { return float1x3Field; }
+ set { float1x3Field = value; }
+ }
+
+ ///
+ public string float1x4
+ {
+ get { return float1x4Field; }
+ set { float1x4Field = value; }
+ }
+
+ ///
+ public string float2x1
+ {
+ get { return float2x1Field; }
+ set { float2x1Field = value; }
+ }
+
+ ///
+ public string float2x2
+ {
+ get { return float2x2Field; }
+ set { float2x2Field = value; }
+ }
+
+ ///
+ public string float2x3
+ {
+ get { return float2x3Field; }
+ set { float2x3Field = value; }
+ }
+
+ ///
+ public string float2x4
+ {
+ get { return float2x4Field; }
+ set { float2x4Field = value; }
+ }
+
+ ///
+ public string float3x1
+ {
+ get { return float3x1Field; }
+ set { float3x1Field = value; }
+ }
+
+ ///
+ public string float3x2
+ {
+ get { return float3x2Field; }
+ set { float3x2Field = value; }
+ }
+
+ ///
+ public string float3x3
+ {
+ get { return float3x3Field; }
+ set { float3x3Field = value; }
+ }
+
+ ///
+ public string float3x4
+ {
+ get { return float3x4Field; }
+ set { float3x4Field = value; }
+ }
+
+ ///
+ public string float4x1
+ {
+ get { return float4x1Field; }
+ set { float4x1Field = value; }
+ }
+
+ ///
+ public string float4x2
+ {
+ get { return float4x2Field; }
+ set { float4x2Field = value; }
+ }
+
+ ///
+ public string float4x3
+ {
+ get { return float4x3Field; }
+ set { float4x3Field = value; }
+ }
+
+ ///
+ public string float4x4
+ {
+ get { return float4x4Field; }
+ set { float4x4Field = value; }
+ }
+
+ ///
+ public fx_surface_common surface
+ {
+ get { return surfaceField; }
+ set { surfaceField = value; }
+ }
+
+ ///
+ public fx_sampler1D_common sampler1D
+ {
+ get { return sampler1DField; }
+ set { sampler1DField = value; }
+ }
+
+ ///
+ public fx_sampler2D_common sampler2D
+ {
+ get { return sampler2DField; }
+ set { sampler2DField = value; }
+ }
+
+ ///
+ public fx_sampler3D_common sampler3D
+ {
+ get { return sampler3DField; }
+ set { sampler3DField = value; }
+ }
+
+ ///
+ public fx_samplerCUBE_common samplerCUBE
+ {
+ get { return samplerCUBEField; }
+ set { samplerCUBEField = value; }
+ }
+
+ ///
+ public fx_samplerRECT_common samplerRECT
+ {
+ get { return samplerRECTField; }
+ set { samplerRECTField = value; }
+ }
+
+ ///
+ public fx_samplerDEPTH_common samplerDEPTH
+ {
+ get { return samplerDEPTHField; }
+ set { samplerDEPTHField = value; }
+ }
+
+ ///
+ public string @enum
+ {
+ get { return enumField; }
+ set { enumField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "token")]
+ public string @ref
+ {
+ get { return refField; }
+ set { refField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class library_nodes
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+
+ private string nameField;
+ private node[] nodeField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("node")]
+ public node[] node
+ {
+ get { return nodeField; }
+ set { nodeField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class node
+ {
+ private asset assetField;
+ private extra[] extraField;
+
+ private string idField;
+
+ private InstanceWithExtra[] instance_cameraField;
+
+ private instance_controller[] instance_controllerField;
+
+ private instance_geometry[] instance_geometryField;
+
+ private InstanceWithExtra[] instance_lightField;
+
+ private InstanceWithExtra[] instance_nodeField;
+ private ItemsChoiceType2[] itemsElementNameField;
+ private object[] itemsField;
+ private string[] layerField;
+
+ private string nameField;
+ private node[] node1Field;
+
+ private string sidField;
+
+ private NodeType typeField;
+
+ public node()
+ {
+ typeField = NodeType.NODE;
+ }
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("lookat", typeof(lookat))]
+ [XmlElement("matrix", typeof(matrix))]
+ [XmlElement("rotate", typeof(rotate))]
+ [XmlElement("scale", typeof(TargetableFloat3))]
+ [XmlElement("skew", typeof(skew))]
+ [XmlElement("translate", typeof(TargetableFloat3))]
+ [XmlChoiceIdentifier("ItemsElementName")]
+ public object[] Items
+ {
+ get { return itemsField; }
+ set { itemsField = value; }
+ }
+
+ ///
+ [XmlElement("ItemsElementName")]
+ [XmlIgnore]
+ public ItemsChoiceType2[] ItemsElementName
+ {
+ get { return itemsElementNameField; }
+ set { itemsElementNameField = value; }
+ }
+
+ ///
+ [XmlElement("instance_camera")]
+ public InstanceWithExtra[] instance_camera
+ {
+ get { return instance_cameraField; }
+ set { instance_cameraField = value; }
+ }
+
+ ///
+ [XmlElement("instance_controller")]
+ public instance_controller[] instance_controller
+ {
+ get { return instance_controllerField; }
+ set { instance_controllerField = value; }
+ }
+
+ ///
+ [XmlElement("instance_geometry")]
+ public instance_geometry[] instance_geometry
+ {
+ get { return instance_geometryField; }
+ set { instance_geometryField = value; }
+ }
+
+ ///
+ [XmlElement("instance_light")]
+ public InstanceWithExtra[] instance_light
+ {
+ get { return instance_lightField; }
+ set { instance_lightField = value; }
+ }
+
+ ///
+ [XmlElement("instance_node")]
+ public InstanceWithExtra[] instance_node
+ {
+ get { return instance_nodeField; }
+ set { instance_nodeField = value; }
+ }
+
+ ///
+ [XmlElement("node")]
+ public node[] node1
+ {
+ get { return node1Field; }
+ set { node1Field = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlAttribute]
+ [DefaultValue(NodeType.NODE)]
+ public NodeType type
+ {
+ get { return typeField; }
+ set { typeField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "Name")]
+ public string[] layer
+ {
+ get { return layerField; }
+ set { layerField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class lookat
+ {
+ private string sidField;
+
+ private double[] textField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlText]
+ public string _Text_
+ {
+ get { return COLLADA.ConvertFromArray(Values); }
+
+ set { Values = COLLADA.ConvertDoubleArray(value); }
+ }
+
+ [XmlIgnore]
+ public double[] Values
+ {
+ get { return textField; }
+ set { textField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class matrix
+ {
+ private string sidField;
+
+ private double[] textField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlText]
+ public string _Text_
+ {
+ get { return COLLADA.ConvertFromArray(Values); }
+
+ set { Values = COLLADA.ConvertDoubleArray(value); }
+ }
+
+ [XmlIgnore]
+ public double[] Values
+ {
+ get { return textField; }
+ set { textField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class rotate
+ {
+ private string sidField;
+
+ private double[] textField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlText]
+ public string _Text_
+ {
+ get { return COLLADA.ConvertFromArray(Values); }
+
+ set { Values = COLLADA.ConvertDoubleArray(value); }
+ }
+
+ [XmlIgnore]
+ public double[] Values
+ {
+ get { return textField; }
+ set { textField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class skew
+ {
+ private string sidField;
+
+ private double[] textField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlText]
+ public string _Text_
+ {
+ get { return COLLADA.ConvertFromArray(Values); }
+
+ set { Values = COLLADA.ConvertDoubleArray(value); }
+ }
+
+ [XmlIgnore]
+ public double[] Values
+ {
+ get { return textField; }
+ set { textField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IncludeInSchema = false)]
+ public enum ItemsChoiceType2
+ {
+ ///
+ lookat,
+
+ ///
+ matrix,
+
+ ///
+ rotate,
+
+ ///
+ scale,
+
+ ///
+ skew,
+
+ ///
+ translate,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class instance_controller
+ {
+ private bind_material bind_materialField;
+
+ private extra[] extraField;
+
+ private string nameField;
+ private string sidField;
+ private string[] skeletonField;
+ private string urlField;
+
+ ///
+ [XmlElement("skeleton", DataType = "anyURI")]
+ public string[] skeleton
+ {
+ get { return skeletonField; }
+ set { skeletonField = value; }
+ }
+
+ ///
+ public bind_material bind_material
+ {
+ get { return bind_materialField; }
+ set { bind_materialField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "anyURI")]
+ public string url
+ {
+ get { return urlField; }
+ set { urlField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class bind_material
+ {
+ private extra[] extraField;
+ private param[] paramField;
+
+ private technique[] techniqueField;
+ private instance_material[] technique_commonField;
+
+ ///
+ [XmlElement("param")]
+ public param[] param
+ {
+ get { return paramField; }
+ set { paramField = value; }
+ }
+
+ ///
+ [XmlArrayItem("instance_material", IsNullable = false)]
+ public instance_material[] technique_common
+ {
+ get { return technique_commonField; }
+ set { technique_commonField = value; }
+ }
+
+ ///
+ [XmlElement("technique")]
+ public technique[] technique
+ {
+ get { return techniqueField; }
+ set { techniqueField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class instance_geometry
+ {
+ private bind_material bind_materialField;
+
+ private extra[] extraField;
+
+ private string nameField;
+ private string sidField;
+ private string urlField;
+
+ ///
+ public bind_material bind_material
+ {
+ get { return bind_materialField; }
+ set { bind_materialField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "anyURI")]
+ public string url
+ {
+ get { return urlField; }
+ set { urlField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public enum NodeType
+ {
+ ///
+ JOINT,
+
+ ///
+ NODE,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class library_physics_materials
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+
+ private string nameField;
+ private physics_material[] physics_materialField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("physics_material")]
+ public physics_material[] physics_material
+ {
+ get { return physics_materialField; }
+ set { physics_materialField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class physics_material
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+
+ private string nameField;
+ private technique[] techniqueField;
+ private physics_materialTechnique_common technique_commonField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ public physics_materialTechnique_common technique_common
+ {
+ get { return technique_commonField; }
+ set { technique_commonField = value; }
+ }
+
+ ///
+ [XmlElement("technique")]
+ public technique[] technique
+ {
+ get { return techniqueField; }
+ set { techniqueField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class physics_materialTechnique_common
+ {
+ private TargetableFloat dynamic_frictionField;
+
+ private TargetableFloat restitutionField;
+
+ private TargetableFloat static_frictionField;
+
+ ///
+ public TargetableFloat dynamic_friction
+ {
+ get { return dynamic_frictionField; }
+ set { dynamic_frictionField = value; }
+ }
+
+ ///
+ public TargetableFloat restitution
+ {
+ get { return restitutionField; }
+ set { restitutionField = value; }
+ }
+
+ ///
+ public TargetableFloat static_friction
+ {
+ get { return static_frictionField; }
+ set { static_frictionField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class library_physics_models
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+
+ private string nameField;
+ private physics_model[] physics_modelField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("physics_model")]
+ public physics_model[] physics_model
+ {
+ get { return physics_modelField; }
+ set { physics_modelField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class physics_model
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+ private instance_physics_model[] instance_physics_modelField;
+
+ private string nameField;
+ private rigid_body[] rigid_bodyField;
+
+ private rigid_constraint[] rigid_constraintField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("rigid_body")]
+ public rigid_body[] rigid_body
+ {
+ get { return rigid_bodyField; }
+ set { rigid_bodyField = value; }
+ }
+
+ ///
+ [XmlElement("rigid_constraint")]
+ public rigid_constraint[] rigid_constraint
+ {
+ get { return rigid_constraintField; }
+ set { rigid_constraintField = value; }
+ }
+
+ ///
+ [XmlElement("instance_physics_model")]
+ public instance_physics_model[] instance_physics_model
+ {
+ get { return instance_physics_modelField; }
+ set { instance_physics_modelField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class rigid_body
+ {
+ private extra[] extraField;
+
+ private string nameField;
+ private string sidField;
+ private technique[] techniqueField;
+ private rigid_bodyTechnique_common technique_commonField;
+
+ ///
+ public rigid_bodyTechnique_common technique_common
+ {
+ get { return technique_commonField; }
+ set { technique_commonField = value; }
+ }
+
+ ///
+ [XmlElement("technique")]
+ public technique[] technique
+ {
+ get { return techniqueField; }
+ set { techniqueField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class rigid_bodyTechnique_common
+ {
+ private rigid_bodyTechnique_commonDynamic dynamicField;
+
+ private TargetableFloat3 inertiaField;
+
+ private object itemField;
+ private TargetableFloat massField;
+
+ private object[] mass_frameField;
+
+ private rigid_bodyTechnique_commonShape[] shapeField;
+
+ ///
+ public rigid_bodyTechnique_commonDynamic dynamic
+ {
+ get { return dynamicField; }
+ set { dynamicField = value; }
+ }
+
+ ///
+ public TargetableFloat mass
+ {
+ get { return massField; }
+ set { massField = value; }
+ }
+
+ ///
+ [XmlArrayItem("rotate", typeof(rotate), IsNullable = false)]
+ [XmlArrayItem("translate", typeof(TargetableFloat3), IsNullable = false)]
+ public object[] mass_frame
+ {
+ get { return mass_frameField; }
+ set { mass_frameField = value; }
+ }
+
+ ///
+ public TargetableFloat3 inertia
+ {
+ get { return inertiaField; }
+ set { inertiaField = value; }
+ }
+
+ ///
+ [XmlElement("instance_physics_material", typeof(InstanceWithExtra))]
+ [XmlElement("physics_material", typeof(physics_material))]
+ public object Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+
+ ///
+ [XmlElement("shape")]
+ public rigid_bodyTechnique_commonShape[] shape
+ {
+ get { return shapeField; }
+ set { shapeField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class rigid_bodyTechnique_commonDynamic
+ {
+ private string sidField;
+
+ private bool valueField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlText]
+ public bool Value
+ {
+ get { return valueField; }
+ set { valueField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class rigid_bodyTechnique_commonShape
+ {
+ private TargetableFloat densityField;
+ private extra[] extraField;
+ private rigid_bodyTechnique_commonShapeHollow hollowField;
+
+ private object item1Field;
+ private object itemField;
+
+ private object[] itemsField;
+ private TargetableFloat massField;
+
+ ///
+ public rigid_bodyTechnique_commonShapeHollow hollow
+ {
+ get { return hollowField; }
+ set { hollowField = value; }
+ }
+
+ ///
+ public TargetableFloat mass
+ {
+ get { return massField; }
+ set { massField = value; }
+ }
+
+ ///
+ public TargetableFloat density
+ {
+ get { return densityField; }
+ set { densityField = value; }
+ }
+
+ ///
+ [XmlElement("instance_physics_material", typeof(InstanceWithExtra))]
+ [XmlElement("physics_material", typeof(physics_material))]
+ public object Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+
+ ///
+ [XmlElement("box", typeof(box))]
+ [XmlElement("capsule", typeof(capsule))]
+ [XmlElement("cylinder", typeof(cylinder))]
+ [XmlElement("instance_geometry", typeof(instance_geometry))]
+ [XmlElement("plane", typeof(plane))]
+ [XmlElement("sphere", typeof(sphere))]
+ [XmlElement("tapered_capsule", typeof(tapered_capsule))]
+ [XmlElement("tapered_cylinder", typeof(tapered_cylinder))]
+ public object Item1
+ {
+ get { return item1Field; }
+ set { item1Field = value; }
+ }
+
+ ///
+ [XmlElement("rotate", typeof(rotate))]
+ [XmlElement("translate", typeof(TargetableFloat3))]
+ public object[] Items
+ {
+ get { return itemsField; }
+ set { itemsField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class rigid_bodyTechnique_commonShapeHollow
+ {
+ private string sidField;
+
+ private bool valueField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlText]
+ public bool Value
+ {
+ get { return valueField; }
+ set { valueField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class box
+ {
+ private extra[] extraField;
+ private string half_extentsField;
+
+ ///
+ public string half_extents
+ {
+ get { return half_extentsField; }
+ set { half_extentsField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class capsule
+ {
+ private extra[] extraField;
+ private double heightField;
+
+ private string radiusField;
+
+ ///
+ public double height
+ {
+ get { return heightField; }
+ set { heightField = value; }
+ }
+
+ ///
+ public string radius
+ {
+ get { return radiusField; }
+ set { radiusField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class cylinder
+ {
+ private extra[] extraField;
+ private double heightField;
+
+ private string radiusField;
+
+ ///
+ public double height
+ {
+ get { return heightField; }
+ set { heightField = value; }
+ }
+
+ ///
+ public string radius
+ {
+ get { return radiusField; }
+ set { radiusField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class plane
+ {
+ private string equationField;
+
+ private extra[] extraField;
+
+ ///
+ public string equation
+ {
+ get { return equationField; }
+ set { equationField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class sphere
+ {
+ private extra[] extraField;
+ private double radiusField;
+
+ ///
+ public double radius
+ {
+ get { return radiusField; }
+ set { radiusField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class tapered_capsule
+ {
+ private extra[] extraField;
+ private double heightField;
+
+ private string radius1Field;
+
+ private string radius2Field;
+
+ ///
+ public double height
+ {
+ get { return heightField; }
+ set { heightField = value; }
+ }
+
+ ///
+ public string radius1
+ {
+ get { return radius1Field; }
+ set { radius1Field = value; }
+ }
+
+ ///
+ public string radius2
+ {
+ get { return radius2Field; }
+ set { radius2Field = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class tapered_cylinder
+ {
+ private extra[] extraField;
+ private double heightField;
+
+ private string radius1Field;
+
+ private string radius2Field;
+
+ ///
+ public double height
+ {
+ get { return heightField; }
+ set { heightField = value; }
+ }
+
+ ///
+ public string radius1
+ {
+ get { return radius1Field; }
+ set { radius1Field = value; }
+ }
+
+ ///
+ public string radius2
+ {
+ get { return radius2Field; }
+ set { radius2Field = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class rigid_constraint
+ {
+ private rigid_constraintAttachment attachmentField;
+
+ private extra[] extraField;
+
+ private string nameField;
+ private rigid_constraintRef_attachment ref_attachmentField;
+ private string sidField;
+ private technique[] techniqueField;
+ private rigid_constraintTechnique_common technique_commonField;
+
+ ///
+ public rigid_constraintRef_attachment ref_attachment
+ {
+ get { return ref_attachmentField; }
+ set { ref_attachmentField = value; }
+ }
+
+ ///
+ public rigid_constraintAttachment attachment
+ {
+ get { return attachmentField; }
+ set { attachmentField = value; }
+ }
+
+ ///
+ public rigid_constraintTechnique_common technique_common
+ {
+ get { return technique_commonField; }
+ set { technique_commonField = value; }
+ }
+
+ ///
+ [XmlElement("technique")]
+ public technique[] technique
+ {
+ get { return techniqueField; }
+ set { techniqueField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class rigid_constraintRef_attachment
+ {
+ private object[] itemsField;
+
+ private string rigid_bodyField;
+
+ ///
+ [XmlElement("extra", typeof(extra))]
+ [XmlElement("rotate", typeof(rotate))]
+ [XmlElement("translate", typeof(TargetableFloat3))]
+ public object[] Items
+ {
+ get { return itemsField; }
+ set { itemsField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "anyURI")]
+ public string rigid_body
+ {
+ get { return rigid_bodyField; }
+ set { rigid_bodyField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class rigid_constraintAttachment
+ {
+ private object[] itemsField;
+
+ private string rigid_bodyField;
+
+ ///
+ [XmlElement("extra", typeof(extra))]
+ [XmlElement("rotate", typeof(rotate))]
+ [XmlElement("translate", typeof(TargetableFloat3))]
+ public object[] Items
+ {
+ get { return itemsField; }
+ set { itemsField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "anyURI")]
+ public string rigid_body
+ {
+ get { return rigid_bodyField; }
+ set { rigid_bodyField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class rigid_constraintTechnique_common
+ {
+ private rigid_constraintTechnique_commonEnabled enabledField;
+
+ private rigid_constraintTechnique_commonInterpenetrate interpenetrateField;
+
+ private rigid_constraintTechnique_commonLimits limitsField;
+
+ private rigid_constraintTechnique_commonSpring springField;
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type rigid_constraintTechnique_commonEnabled is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='true' attribute.
+ public rigid_constraintTechnique_commonEnabled enabled
+ {
+ get { return enabledField; }
+ set { enabledField = value; }
+ }
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type rigid_constraintTechnique_commonInterpenetrate is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='false' attribute.
+ public rigid_constraintTechnique_commonInterpenetrate interpenetrate
+ {
+ get { return interpenetrateField; }
+ set { interpenetrateField = value; }
+ }
+
+ ///
+ public rigid_constraintTechnique_commonLimits limits
+ {
+ get { return limitsField; }
+ set { limitsField = value; }
+ }
+
+ ///
+ public rigid_constraintTechnique_commonSpring spring
+ {
+ get { return springField; }
+ set { springField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class rigid_constraintTechnique_commonEnabled
+ {
+ private string sidField;
+
+ private bool valueField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlText]
+ public bool Value
+ {
+ get { return valueField; }
+ set { valueField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class rigid_constraintTechnique_commonInterpenetrate
+ {
+ private string sidField;
+
+ private bool valueField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlText]
+ public bool Value
+ {
+ get { return valueField; }
+ set { valueField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class rigid_constraintTechnique_commonLimits
+ {
+ private rigid_constraintTechnique_commonLimitsLinear linearField;
+ private rigid_constraintTechnique_commonLimitsSwing_cone_and_twist swing_cone_and_twistField;
+
+ ///
+ public rigid_constraintTechnique_commonLimitsSwing_cone_and_twist swing_cone_and_twist
+ {
+ get { return swing_cone_and_twistField; }
+ set { swing_cone_and_twistField = value; }
+ }
+
+ ///
+ public rigid_constraintTechnique_commonLimitsLinear linear
+ {
+ get { return linearField; }
+ set { linearField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class rigid_constraintTechnique_commonLimitsSwing_cone_and_twist
+ {
+ private TargetableFloat3 maxField;
+ private TargetableFloat3 minField;
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat3 is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='0.0 0.0 0.0' attribute.
+ public TargetableFloat3 min
+ {
+ get { return minField; }
+ set { minField = value; }
+ }
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat3 is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='0.0 0.0 0.0' attribute.
+ public TargetableFloat3 max
+ {
+ get { return maxField; }
+ set { maxField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class rigid_constraintTechnique_commonLimitsLinear
+ {
+ private TargetableFloat3 maxField;
+ private TargetableFloat3 minField;
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat3 is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='0.0 0.0 0.0' attribute.
+ public TargetableFloat3 min
+ {
+ get { return minField; }
+ set { minField = value; }
+ }
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat3 is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='0.0 0.0 0.0' attribute.
+ public TargetableFloat3 max
+ {
+ get { return maxField; }
+ set { maxField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class rigid_constraintTechnique_commonSpring
+ {
+ private rigid_constraintTechnique_commonSpringAngular angularField;
+
+ private rigid_constraintTechnique_commonSpringLinear linearField;
+
+ ///
+ public rigid_constraintTechnique_commonSpringAngular angular
+ {
+ get { return angularField; }
+ set { angularField = value; }
+ }
+
+ ///
+ public rigid_constraintTechnique_commonSpringLinear linear
+ {
+ get { return linearField; }
+ set { linearField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class rigid_constraintTechnique_commonSpringAngular
+ {
+ private TargetableFloat dampingField;
+ private TargetableFloat stiffnessField;
+
+ private TargetableFloat target_valueField;
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='1.0' attribute.
+ public TargetableFloat stiffness
+ {
+ get { return stiffnessField; }
+ set { stiffnessField = value; }
+ }
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='0.0' attribute.
+ public TargetableFloat damping
+ {
+ get { return dampingField; }
+ set { dampingField = value; }
+ }
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='0.0' attribute.
+ public TargetableFloat target_value
+ {
+ get { return target_valueField; }
+ set { target_valueField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class rigid_constraintTechnique_commonSpringLinear
+ {
+ private TargetableFloat dampingField;
+ private TargetableFloat stiffnessField;
+
+ private TargetableFloat target_valueField;
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='1.0' attribute.
+ public TargetableFloat stiffness
+ {
+ get { return stiffnessField; }
+ set { stiffnessField = value; }
+ }
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='0.0' attribute.
+ public TargetableFloat damping
+ {
+ get { return dampingField; }
+ set { dampingField = value; }
+ }
+
+ ///
+ // CODEGEN Warning: DefaultValue attribute on members of type TargetableFloat is not supported in this version of the .Net Framework.
+ // CODEGEN Warning: 'default' attribute supported only for primitive types. Ignoring default='0.0' attribute.
+ public TargetableFloat target_value
+ {
+ get { return target_valueField; }
+ set { target_valueField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class instance_physics_model
+ {
+ private extra[] extraField;
+ private InstanceWithExtra[] instance_force_fieldField;
+
+ private instance_rigid_body[] instance_rigid_bodyField;
+
+ private instance_rigid_constraint[] instance_rigid_constraintField;
+
+ private string nameField;
+
+ private string parentField;
+ private string sidField;
+ private string urlField;
+
+ ///
+ [XmlElement("instance_force_field")]
+ public InstanceWithExtra[] instance_force_field
+ {
+ get { return instance_force_fieldField; }
+ set { instance_force_fieldField = value; }
+ }
+
+ ///
+ [XmlElement("instance_rigid_body")]
+ public instance_rigid_body[] instance_rigid_body
+ {
+ get { return instance_rigid_bodyField; }
+ set { instance_rigid_bodyField = value; }
+ }
+
+ ///
+ [XmlElement("instance_rigid_constraint")]
+ public instance_rigid_constraint[] instance_rigid_constraint
+ {
+ get { return instance_rigid_constraintField; }
+ set { instance_rigid_constraintField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "anyURI")]
+ public string url
+ {
+ get { return urlField; }
+ set { urlField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "anyURI")]
+ public string parent
+ {
+ get { return parentField; }
+ set { parentField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class instance_rigid_body
+ {
+ private string bodyField;
+ private extra[] extraField;
+
+ private string nameField;
+ private string sidField;
+
+ private string targetField;
+ private technique[] techniqueField;
+ private instance_rigid_bodyTechnique_common technique_commonField;
+
+ ///
+ public instance_rigid_bodyTechnique_common technique_common
+ {
+ get { return technique_commonField; }
+ set { technique_commonField = value; }
+ }
+
+ ///
+ [XmlElement("technique")]
+ public technique[] technique
+ {
+ get { return techniqueField; }
+ set { techniqueField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string body
+ {
+ get { return bodyField; }
+ set { bodyField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "anyURI")]
+ public string target
+ {
+ get { return targetField; }
+ set { targetField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class instance_rigid_bodyTechnique_common
+ {
+ private string angular_velocityField;
+
+ private instance_rigid_bodyTechnique_commonDynamic dynamicField;
+
+ private TargetableFloat3 inertiaField;
+
+ private object itemField;
+ private TargetableFloat massField;
+
+ private object[] mass_frameField;
+
+ private instance_rigid_bodyTechnique_commonShape[] shapeField;
+ private string velocityField;
+
+ public instance_rigid_bodyTechnique_common()
+ {
+ angular_velocityField = "0.0 0.0 0.0";
+ velocityField = "0.0 0.0 0.0";
+ }
+
+ ///
+ [DefaultValue("0.0 0.0 0.0")]
+ public string angular_velocity
+ {
+ get { return angular_velocityField; }
+ set { angular_velocityField = value; }
+ }
+
+ ///
+ [DefaultValue("0.0 0.0 0.0")]
+ public string velocity
+ {
+ get { return velocityField; }
+ set { velocityField = value; }
+ }
+
+ ///
+ public instance_rigid_bodyTechnique_commonDynamic dynamic
+ {
+ get { return dynamicField; }
+ set { dynamicField = value; }
+ }
+
+ ///
+ public TargetableFloat mass
+ {
+ get { return massField; }
+ set { massField = value; }
+ }
+
+ ///
+ [XmlArrayItem("rotate", typeof(rotate), IsNullable = false)]
+ [XmlArrayItem("translate", typeof(TargetableFloat3), IsNullable = false)]
+ public object[] mass_frame
+ {
+ get { return mass_frameField; }
+ set { mass_frameField = value; }
+ }
+
+ ///
+ public TargetableFloat3 inertia
+ {
+ get { return inertiaField; }
+ set { inertiaField = value; }
+ }
+
+ ///
+ [XmlElement("instance_physics_material", typeof(InstanceWithExtra))]
+ [XmlElement("physics_material", typeof(physics_material))]
+ public object Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+
+ ///
+ [XmlElement("shape")]
+ public instance_rigid_bodyTechnique_commonShape[] shape
+ {
+ get { return shapeField; }
+ set { shapeField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class instance_rigid_bodyTechnique_commonDynamic
+ {
+ private string sidField;
+
+ private bool valueField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlText]
+ public bool Value
+ {
+ get { return valueField; }
+ set { valueField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class instance_rigid_bodyTechnique_commonShape
+ {
+ private TargetableFloat densityField;
+ private extra[] extraField;
+ private instance_rigid_bodyTechnique_commonShapeHollow hollowField;
+
+ private object item1Field;
+ private object itemField;
+
+ private object[] itemsField;
+ private TargetableFloat massField;
+
+ ///
+ public instance_rigid_bodyTechnique_commonShapeHollow hollow
+ {
+ get { return hollowField; }
+ set { hollowField = value; }
+ }
+
+ ///
+ public TargetableFloat mass
+ {
+ get { return massField; }
+ set { massField = value; }
+ }
+
+ ///
+ public TargetableFloat density
+ {
+ get { return densityField; }
+ set { densityField = value; }
+ }
+
+ ///
+ [XmlElement("instance_physics_material", typeof(InstanceWithExtra))]
+ [XmlElement("physics_material", typeof(physics_material))]
+ public object Item
+ {
+ get { return itemField; }
+ set { itemField = value; }
+ }
+
+ ///
+ [XmlElement("box", typeof(box))]
+ [XmlElement("capsule", typeof(capsule))]
+ [XmlElement("cylinder", typeof(cylinder))]
+ [XmlElement("instance_geometry", typeof(instance_geometry))]
+ [XmlElement("plane", typeof(plane))]
+ [XmlElement("sphere", typeof(sphere))]
+ [XmlElement("tapered_capsule", typeof(tapered_capsule))]
+ [XmlElement("tapered_cylinder", typeof(tapered_cylinder))]
+ public object Item1
+ {
+ get { return item1Field; }
+ set { item1Field = value; }
+ }
+
+ ///
+ [XmlElement("rotate", typeof(rotate))]
+ [XmlElement("translate", typeof(TargetableFloat3))]
+ public object[] Items
+ {
+ get { return itemsField; }
+ set { itemsField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class instance_rigid_bodyTechnique_commonShapeHollow
+ {
+ private string sidField;
+
+ private bool valueField;
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlText]
+ public bool Value
+ {
+ get { return valueField; }
+ set { valueField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class instance_rigid_constraint
+ {
+ private string constraintField;
+ private extra[] extraField;
+
+ private string nameField;
+ private string sidField;
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string constraint
+ {
+ get { return constraintField; }
+ set { constraintField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string sid
+ {
+ get { return sidField; }
+ set { sidField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class library_physics_scenes
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+
+ private string nameField;
+ private physics_scene[] physics_sceneField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("physics_scene")]
+ public physics_scene[] physics_scene
+ {
+ get { return physics_sceneField; }
+ set { physics_sceneField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class physics_scene
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+ private InstanceWithExtra[] instance_force_fieldField;
+
+ private instance_physics_model[] instance_physics_modelField;
+
+ private string nameField;
+ private technique[] techniqueField;
+ private physics_sceneTechnique_common technique_commonField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("instance_force_field")]
+ public InstanceWithExtra[] instance_force_field
+ {
+ get { return instance_force_fieldField; }
+ set { instance_force_fieldField = value; }
+ }
+
+ ///
+ [XmlElement("instance_physics_model")]
+ public instance_physics_model[] instance_physics_model
+ {
+ get { return instance_physics_modelField; }
+ set { instance_physics_modelField = value; }
+ }
+
+ ///
+ public physics_sceneTechnique_common technique_common
+ {
+ get { return technique_commonField; }
+ set { technique_commonField = value; }
+ }
+
+ ///
+ [XmlElement("technique")]
+ public technique[] technique
+ {
+ get { return techniqueField; }
+ set { techniqueField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class physics_sceneTechnique_common
+ {
+ private TargetableFloat3 gravityField;
+
+ private TargetableFloat time_stepField;
+
+ ///
+ public TargetableFloat3 gravity
+ {
+ get { return gravityField; }
+ set { gravityField = value; }
+ }
+
+ ///
+ public TargetableFloat time_step
+ {
+ get { return time_stepField; }
+ set { time_stepField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class library_visual_scenes
+ {
+ private asset assetField;
+
+ private extra[] extraField;
+
+ private string idField;
+
+ private string nameField;
+ private visual_scene[] visual_sceneField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("visual_scene")]
+ public visual_scene[] visual_scene
+ {
+ get { return visual_sceneField; }
+ set { visual_sceneField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class visual_scene
+ {
+ private asset assetField;
+
+ private visual_sceneEvaluate_scene[] evaluate_sceneField;
+
+ private extra[] extraField;
+
+ private string idField;
+
+ private string nameField;
+ private node[] nodeField;
+
+ ///
+ public asset asset
+ {
+ get { return assetField; }
+ set { assetField = value; }
+ }
+
+ ///
+ [XmlElement("node")]
+ public node[] node
+ {
+ get { return nodeField; }
+ set { nodeField = value; }
+ }
+
+ ///
+ [XmlElement("evaluate_scene")]
+ public visual_sceneEvaluate_scene[] evaluate_scene
+ {
+ get { return evaluate_sceneField; }
+ set { evaluate_sceneField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "ID")]
+ public string id
+ {
+ get { return idField; }
+ set { idField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class visual_sceneEvaluate_scene
+ {
+ private string nameField;
+ private visual_sceneEvaluate_sceneRender[] renderField;
+
+ ///
+ [XmlElement("render")]
+ public visual_sceneEvaluate_sceneRender[] render
+ {
+ get { return renderField; }
+ set { renderField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "NCName")]
+ public string name
+ {
+ get { return nameField; }
+ set { nameField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class visual_sceneEvaluate_sceneRender
+ {
+ private string camera_nodeField;
+ private instance_effect instance_effectField;
+ private string[] layerField;
+
+ ///
+ [XmlElement("layer", DataType = "NCName")]
+ public string[] layer
+ {
+ get { return layerField; }
+ set { layerField = value; }
+ }
+
+ ///
+ public instance_effect instance_effect
+ {
+ get { return instance_effectField; }
+ set { instance_effectField = value; }
+ }
+
+ ///
+ [XmlAttribute(DataType = "anyURI")]
+ public string camera_node
+ {
+ get { return camera_nodeField; }
+ set { camera_nodeField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public class COLLADAScene
+ {
+ private extra[] extraField;
+ private InstanceWithExtra[] instance_physics_sceneField;
+
+ private InstanceWithExtra instance_visual_sceneField;
+
+ ///
+ [XmlElement("instance_physics_scene")]
+ public InstanceWithExtra[] instance_physics_scene
+ {
+ get { return instance_physics_sceneField; }
+ set { instance_physics_sceneField = value; }
+ }
+
+ ///
+ public InstanceWithExtra instance_visual_scene
+ {
+ get { return instance_visual_sceneField; }
+ set { instance_visual_sceneField = value; }
+ }
+
+ ///
+ [XmlElement("extra")]
+ public extra[] extra
+ {
+ get { return extraField; }
+ set { extraField = value; }
+ }
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [XmlType(Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ public enum VersionType
+ {
+ ///
+ [XmlEnum("1.4.0")] Item140,
+
+ ///
+ [XmlEnum("1.4.1")] Item141,
+ }
+
+ ///
+ [GeneratedCode("xsd", "4.0.30319.1")]
+ [Serializable]
+ [DebuggerStepThrough]
+ [DesignerCategory("code")]
+ [XmlType(AnonymousType = true, Namespace = "http://www.collada.org/2005/11/COLLADASchema")]
+ [XmlRoot(Namespace = "http://www.collada.org/2005/11/COLLADASchema", IsNullable = false)]
+ public class ellipsoid
+ {
+ private string sizeField;
+
+ ///
+ public string size
+ {
+ get { return sizeField; }
+ set { sizeField = value; }
+ }
+ }
+
+
+ ///
+ /// Extend COLLADA class to provide convertion helpers
+ ///
+ public partial class COLLADA
+ {
+ private static Regex regex = new Regex(@"\s+");
+
+ public static string ConvertFromArray(IList array)
+ {
+ if (array == null)
+ return null;
+
+ StringBuilder text = new StringBuilder();
+ if (typeof(T) == typeof(double))
+ {
+ // If type is double, then use a plain ToString with no exponent
+ for (int i = 0; i < array.Count; i++)
+ {
+ object value1 = array[i];
+ double value = (double)value1;
+ text.Append(
+ value.ToString(
+ "0.000000",
+ NumberFormatInfo.InvariantInfo));
+ if ((i + 1) < array.Count)
+ text.Append(" ");
+ }
+ }
+ else
+ {
+ for (int i = 0; i < array.Count; i++)
+ {
+ text.Append(Convert.ToString(array[i], NumberFormatInfo.InvariantInfo));
+ if ((i + 1) < array.Count)
+ text.Append(" ");
+ }
+ }
+ return text.ToString();
+ }
+
+ internal static string[] ConvertStringArray(string arrayStr)
+ {
+ string[] elements = regex.Split(arrayStr.Trim());
+ string[] ret = new string[elements.Length];
+ for (int i = 0; i < ret.Length; i++)
+ ret[i] = elements[i];
+ return ret;
+ }
+
+ internal static int[] ConvertIntArray(string arrayStr)
+ {
+ string[] elements = regex.Split(arrayStr.Trim());
+ int[] ret = new int[elements.Length];
+ for (int i = 0; i < ret.Length; i++)
+ ret[i] = int.Parse(elements[i]);
+ return ret;
+ }
+
+ internal static double[] ConvertDoubleArray(string arrayStr)
+ {
+ string[] elements = regex.Split(arrayStr.Trim());
+ double[] ret = new double[elements.Length];
+ try
+ {
+ for (int i = 0; i < ret.Length; i++)
+ ret[i] = double.Parse(elements[i], NumberStyles.Float, CultureInfo.InvariantCulture);
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex);
+ }
+ return ret;
+ }
+
+ internal static bool[] ConvertBoolArray(string arrayStr)
+ {
+ string[] elements = regex.Split(arrayStr.Trim());
+ bool[] ret = new bool[elements.Length];
+ for (int i = 0; i < ret.Length; i++)
+ ret[i] = bool.Parse(elements[i]);
+ return ret;
+ }
+
+
+ public static COLLADA Load(string fileName)
+ {
+ FileStream stream = new FileStream(fileName, FileMode.Open);
+ COLLADA result;
+ try
+ {
+ result = Load(stream);
+ }
+ finally
+ {
+ stream.Close();
+ }
+ return result;
+ }
+
+ public static COLLADA Load(Stream stream)
+ {
+ StreamReader str = new StreamReader(stream);
+ XmlSerializer xSerializer = new XmlSerializer(typeof(COLLADA));
+
+ return (COLLADA)xSerializer.Deserialize(str);
+ }
+
+ public void Save(string fileName)
+ {
+ FileStream stream = new FileStream(fileName, FileMode.Create);
+ try
+ {
+ Save(stream);
+ }
+ finally
+ {
+ stream.Close();
+ }
+ }
+
+ public void Save(Stream stream)
+ {
+ XmlTextWriter writer = new XmlTextWriter(stream, Encoding.UTF8);
+ XmlSerializer xSerializer = new XmlSerializer(typeof(COLLADA));
+ writer.Formatting = Formatting.Indented;
+ xSerializer.Serialize(writer, this);
+ }
+ }
+}
\ No newline at end of file
diff --git a/External/ColladaSharp/ColladaSharp.csproj b/External/ColladaSharp/ColladaSharp.csproj
new file mode 100644
index 000000000..132c02c59
--- /dev/null
+++ b/External/ColladaSharp/ColladaSharp.csproj
@@ -0,0 +1,9 @@
+
+
+
+ net6.0
+ enable
+ enable
+
+
+
diff --git a/Rime/RimeRenderManager.cs b/Rime/RimeRenderManager.cs
index 29b5414d4..ce380a3d4 100644
--- a/Rime/RimeRenderManager.cs
+++ b/Rime/RimeRenderManager.cs
@@ -12,7 +12,7 @@
using RimeLib.Content.Mounting;
using RimeLib.Frostbite;
using RimeLib.IO.Conversion;
-using RimeLib.Mesh.Frostbite;
+using RimeLib.Mesh.Frostbite2_0.Frostbite;
using RimeLib.Shader.Frostbite2_0.Frostbite;
using RimeLib.Texture;
using RimeLib.Texture.DDS;
diff --git a/RimeLib.Cmd/Commands/Base/MountGameCommand.cs b/RimeLib.Cmd/Commands/Base/MountGameCommand.cs
index 0e259704f..a18aaf778 100644
--- a/RimeLib.Cmd/Commands/Base/MountGameCommand.cs
+++ b/RimeLib.Cmd/Commands/Base/MountGameCommand.cs
@@ -40,7 +40,13 @@ public override bool Execute(ref ExecutionContext p_Context, TextWriter p_Writer
p_Writer.WriteLine($"Failed to load supporting texture assembly for engine '{Engine}'. This means that the engine is not supported or that you are missing required files.");
return false;
}
-
+
+ if (!AssemblyUtils.LoadSupportAssembly(AssemblyType.Mesh, Engine))
+ {
+ p_Writer.WriteLine($"Failed to load supporting mesh assembly for engine '{Engine}'. This means that the engine is not supported or that you are missing required files.");
+ return false;
+ }
+
if (!AssemblyUtils.LoadSupportAssembly(AssemblyType.Serialization, Engine))
{
p_Writer.WriteLine($"Failed to load supporting serialization assembly for engine '{Engine}'. This means that the engine is not supported or that you are missing required files.");
diff --git a/RimeLib.Cmd/Commands/Game/DumpMeshCommand.cs b/RimeLib.Cmd/Commands/Game/DumpMeshCommand.cs
new file mode 100644
index 000000000..d12c102b7
--- /dev/null
+++ b/RimeLib.Cmd/Commands/Game/DumpMeshCommand.cs
@@ -0,0 +1,49 @@
+using RimeLib.Cmd.Attributes;
+using RimeLib.Cmd.Contexts;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace RimeLib.Cmd.Commands.Game
+{
+ [CommandDescription("Converts and dumps the specified mesh resource file.")]
+ public class DumpMeshCommand : Command
+ {
+ [CommandArgument(Description = "The name of the mesh resource.")]
+ public string? Name { get; set; }
+
+ [CommandArgument(Description = "The destination file name where the mesh file will be saved.")]
+ public FileInfo? Destination { get; set; }
+
+ public enum ExportType
+ {
+ Text,
+ Obj,
+ BlenderScript,
+ Gltf
+ }
+
+ [CommandArgument(Description = "The exporting type.")]
+ public ExportType DestinationType { get; set; }
+
+ public override bool Execute(ref ExecutionContext p_Context, TextWriter p_Writer)
+ {
+ try
+ {
+ (p_Context as GameContext)?.DumpMesh(Name!, Destination!, DestinationType);
+ p_Writer.WriteLine("Mesh successfully converted and dumped.");
+ return true;
+ }
+ catch (Exception s_Exception)
+ {
+ p_Writer.WriteLine("Failed to convert and dump mesh.");
+ p_Writer.Write(s_Exception.Message);
+ }
+
+ return false;
+ }
+ }
+}
diff --git a/RimeLib.Cmd/Contexts/GameContext.cs b/RimeLib.Cmd/Contexts/GameContext.cs
index caa0571de..1ca2e50a0 100644
--- a/RimeLib.Cmd/Contexts/GameContext.cs
+++ b/RimeLib.Cmd/Contexts/GameContext.cs
@@ -9,6 +9,7 @@
using RimeLib.IO;
using RimeLib.Serialization;
using RimeLib.Texture;
+using RimeLib.Mesh;
namespace RimeLib.Cmd.Contexts
{
@@ -43,6 +44,7 @@ public GameContext(BaseContext p_Parent, int p_Id, IEngineMounter p_Mounter)
RegisterCommand();
RegisterCommand();
RegisterCommand();
+ RegisterCommand();
}
public override string GetShortDescription()
@@ -148,6 +150,31 @@ internal void DumpTexture(string p_Name, FileInfo p_Destination)
s_Converter.ConvertToDDS(s_Resource.FirstVariant!, m_Mounter, s_Writer);
}
+ internal void DumpMesh(string p_Name, FileInfo p_Destination, DumpMeshCommand.ExportType p_ExportType)
+ {
+ var s_ShortName = p_Name.Split('/').Last();
+
+ if (!m_Mounter.TryGetResource(p_Name, out var s_Resource))
+ throw new Exception($"Could not find resource with name '{p_Name}'");
+
+ var s_Converter = EngineInterfaceRegistry.Create(m_Mounter.GetEngineType());
+
+ using var s_FileStream = File.Create(p_Destination.FullName);
+ using var s_Writer = new RimeWriter(s_FileStream);
+
+ switch (p_ExportType)
+ {
+ case DumpMeshCommand.ExportType.Obj:
+ s_Converter.ConvertToObj(s_Resource.FirstVariant, m_Mounter, s_Writer);
+ break;
+ case DumpMeshCommand.ExportType.Gltf:
+ s_Converter.ConvertToGltf(s_Resource.FirstVariant, m_Mounter, s_Writer);
+ break;
+ default:
+ throw new Exception("Invalid export type.");
+ }
+ }
+
internal IEnumerable GetBundleChunks(string p_Bundle)
{
return m_Mounter.GetChunksInBundle(p_Bundle);
diff --git a/RimeLib.Cmd/RimeLib.Cmd.csproj b/RimeLib.Cmd/RimeLib.Cmd.csproj
index 7e2dc464b..4f48687e1 100644
--- a/RimeLib.Cmd/RimeLib.Cmd.csproj
+++ b/RimeLib.Cmd/RimeLib.Cmd.csproj
@@ -27,6 +27,7 @@
+
diff --git a/RimeLib.Enlighten.Frostbite2_0/EnlightenDatabase.cs b/RimeLib.Enlighten.Frostbite2_0/EnlightenDatabase.cs
index da7b9e383..b28719e79 100644
--- a/RimeLib.Enlighten.Frostbite2_0/EnlightenDatabase.cs
+++ b/RimeLib.Enlighten.Frostbite2_0/EnlightenDatabase.cs
@@ -72,12 +72,12 @@ public void Deserialize(RimeReader p_Reader)
SystemNames[i] = p_Reader.ReadNullTerminatedString();
TerrainLightMapCount = p_Reader.ReadUInt32();
- TerrainLightMaps = new EnlightenTerrainLightmap[TerrainLightMapCount];
+ TerrainLightMaps = new List((int)TerrainLightMapCount);
for (var i = 0; i < TerrainLightMapCount; i++)
TerrainLightMaps[i] = new EnlightenTerrainLightmap(p_Reader);
LightMapInstanceCount = p_Reader.ReadUInt32();
- LightMapInstances = new LightMapInstance[LightMapInstanceCount];
+ LightMapInstances = new List((int)LightMapInstanceCount);
for (var i = 0; i < LightMapInstanceCount; i++)
LightMapInstances[i] = new LightMapInstance(p_Reader);
diff --git a/RimeLib.Enlighten.Frostbite2_0/EnlightenMaterial.cs b/RimeLib.Enlighten.Frostbite2_0/EnlightenMaterial.cs
index 92c4f4a63..bb53801bd 100644
--- a/RimeLib.Enlighten.Frostbite2_0/EnlightenMaterial.cs
+++ b/RimeLib.Enlighten.Frostbite2_0/EnlightenMaterial.cs
@@ -3,6 +3,7 @@
using System.IO;
using fb;
using RimeLib.Frostbite;
+using RimeLib.Frostbite.Core;
using RimeLib.IO;
namespace RimeLib.Enlighten.Frostbite2_0;
@@ -10,7 +11,7 @@ namespace RimeLib.Enlighten.Frostbite2_0;
public class EnlightenMaterial : IFbSerializable
{
public Vec3 Color { get; set; } = new Vec3();
- public GUID Guid { get; set; }
+ public GUID Guid { get; set; } = GUID.Empty;
public ulong ShaderId { get; set; }
public bool Emissive { get; set; }
diff --git a/RimeLib.Enlighten.Frostbite2_0/EnlightenProbeSet.cs b/RimeLib.Enlighten.Frostbite2_0/EnlightenProbeSet.cs
index 5c520fa81..229f1fd4b 100644
--- a/RimeLib.Enlighten.Frostbite2_0/EnlightenProbeSet.cs
+++ b/RimeLib.Enlighten.Frostbite2_0/EnlightenProbeSet.cs
@@ -13,7 +13,7 @@ public class EnlightenProbeSet : IFbSerializable
public LinearTransform InverseTransform { get; set; } = new LinearTransform();
public AxisAlignedBox BoundingBox { get; set; } = new AxisAlignedBox();
public float BlendDistance { get; set; }
- public uint[] Dim { get; set; } = new Dim[3];
+ public uint[] Dim { get; set; } = new uint[3];
public uint Priority { get; set; }
public uint ProbeCount { get; set; }
public uint GlobalOffset { get; set; }
diff --git a/RimeLib.Enlighten.Frostbite2_0/EnlightenShaderDatabase.cs b/RimeLib.Enlighten.Frostbite2_0/EnlightenShaderDatabase.cs
index a91cc2036..600421637 100644
--- a/RimeLib.Enlighten.Frostbite2_0/EnlightenShaderDatabase.cs
+++ b/RimeLib.Enlighten.Frostbite2_0/EnlightenShaderDatabase.cs
@@ -45,7 +45,7 @@ public bool Serialize([NotNullWhen(true)] out byte[]? p_Data)
public void Deserialize(RimeReader p_Reader)
{
MaterialCount = p_Reader.ReadUInt32();
- Materials = new EnlightenMaterial[MaterialCount];
+ Materials = new List((int)MaterialCount);
for (var i = 0; i < MaterialCount; i++)
Materials[i] = new EnlightenMaterial(p_Reader);
}
diff --git a/RimeLib.Enlighten.Frostbite2_0/LightMapInstance.cs b/RimeLib.Enlighten.Frostbite2_0/LightMapInstance.cs
index 746b4dd2e..48fb5e986 100644
--- a/RimeLib.Enlighten.Frostbite2_0/LightMapInstance.cs
+++ b/RimeLib.Enlighten.Frostbite2_0/LightMapInstance.cs
@@ -3,13 +3,14 @@
using System.IO;
using fb;
using RimeLib.Frostbite;
+using RimeLib.Frostbite.Core;
using RimeLib.IO;
namespace RimeLib.Enlighten.Frostbite2_0;
public class LightMapInstance : IFbSerializable
{
- public GUID Guid { get; set; }
+ public GUID Guid { get; set; } = GUID.Empty;
public LinearTransform Transform { get; set; } = new LinearTransform();
public Vec4 UVTransform { get; set; } = new Vec4();
public Vec2 UVTranslation { get; set; } = new Vec2();
diff --git a/RimeLib.Enlighten.Frostbite2_0/RimeLib.Enlighten.Frostbite2_0.csproj b/RimeLib.Enlighten.Frostbite2_0/RimeLib.Enlighten.Frostbite2_0.csproj
index 094eb9944..a265f596c 100644
--- a/RimeLib.Enlighten.Frostbite2_0/RimeLib.Enlighten.Frostbite2_0.csproj
+++ b/RimeLib.Enlighten.Frostbite2_0/RimeLib.Enlighten.Frostbite2_0.csproj
@@ -1,7 +1,7 @@
- net7.0
+ net6.0
default
enable
$(SolutionDir)\bin\$(Configuration)
diff --git a/RimeLib.Enlighten/RimeLib.Enlighten.csproj b/RimeLib.Enlighten/RimeLib.Enlighten.csproj
index c78e56c98..b1ac3a3c6 100644
--- a/RimeLib.Enlighten/RimeLib.Enlighten.csproj
+++ b/RimeLib.Enlighten/RimeLib.Enlighten.csproj
@@ -1,7 +1,7 @@
- net7.0
+ net6.0
default
enable
$(SolutionDir)\bin\$(Configuration)
diff --git a/RimeLib.Mesh/Frostbite/Fb2/MeshLayout.cs b/RimeLib.Mesh.Frostbite2_0/Frostbite/MeshLayout.cs
similarity index 95%
rename from RimeLib.Mesh/Frostbite/Fb2/MeshLayout.cs
rename to RimeLib.Mesh.Frostbite2_0/Frostbite/MeshLayout.cs
index e5d80cfba..1c32539d2 100644
--- a/RimeLib.Mesh/Frostbite/Fb2/MeshLayout.cs
+++ b/RimeLib.Mesh.Frostbite2_0/Frostbite/MeshLayout.cs
@@ -2,16 +2,15 @@
using System.Diagnostics.CodeAnalysis;
using System.IO;
using fb;
-using RimeLib.Frostbite;
using RimeLib.Frostbite.Core;
using RimeLib.IO;
-namespace RimeLib.Mesh.Frostbite
+namespace RimeLib.Mesh.Frostbite2_0.Frostbite
{
///
/// Venice (Battlefield 3) Mesh layout
///
- public class MeshLayout : IFbSerializable
+ public class MeshLayout : Mesh.Frostbite.MeshLayout
{
///
/// Flags for the mesh layout
@@ -167,7 +166,7 @@ public MeshLayout(RimeReader p_Reader)
/// Writes the mesh layout to an opened writer
///
/// Writer opened to the position of the mesh layout
- public bool Serialize(RimeWriter p_Writer)
+ public override bool Serialize(RimeWriter p_Writer)
{
p_Writer.Write((uint)Type);
@@ -197,14 +196,14 @@ public bool Serialize(RimeWriter p_Writer)
return true;
}
- public bool Serialize([NotNullWhen(true)] out byte[]? p_Data)
+ public override bool Serialize([NotNullWhen(true)] out byte[]? p_Data)
{
p_Data = null;
throw new NotImplementedException();
}
///
- public void Deserialize(RimeReader p_Reader)
+ public override void Deserialize(RimeReader p_Reader)
{
Type = (MeshType)p_Reader.ReadUInt32();
//m_subsetCount = p_Reader.ReadUInt32();
@@ -235,7 +234,7 @@ public void Deserialize(RimeReader p_Reader)
}
///
- public void Deserialize(byte[] p_Data)
+ public override void Deserialize(byte[] p_Data)
{
Deserialize(new RimeReader(new MemoryStream(p_Data)));
}
diff --git a/RimeLib.Mesh/Frostbite/Fb2/MeshSetLayout.cs b/RimeLib.Mesh.Frostbite2_0/Frostbite/MeshSetLayout.cs
similarity index 91%
rename from RimeLib.Mesh/Frostbite/Fb2/MeshSetLayout.cs
rename to RimeLib.Mesh.Frostbite2_0/Frostbite/MeshSetLayout.cs
index be7ec2bdb..a32098657 100644
--- a/RimeLib.Mesh/Frostbite/Fb2/MeshSetLayout.cs
+++ b/RimeLib.Mesh.Frostbite2_0/Frostbite/MeshSetLayout.cs
@@ -1,17 +1,16 @@
-using System;
-using System.Diagnostics.CodeAnalysis;
+using System.Diagnostics.CodeAnalysis;
using System.IO;
using fb;
-using RimeLib.Frostbite;
using RimeLib.Frostbite.Core;
using RimeLib.IO;
+using RimeLib.Mesh.Frostbite;
-namespace RimeLib.Mesh.Frostbite
+namespace RimeLib.Mesh.Frostbite2_0.Frostbite
{
///
/// Implementation for fb::MeshSetLayout
///
- public class MeshSetLayout : IFbSerializable
+ public class MeshSetLayout : Mesh.Frostbite.MeshSetLayout
{
///
/// Mesh type
@@ -84,7 +83,7 @@ public MeshSetLayout(RimeReader p_Reader)
/// Writes a MeshSetLayout to an opened writer
///
/// Writer opened to the position of a MeshSetLayout
- public bool Serialize(RimeWriter p_Writer)
+ public override bool Serialize(RimeWriter p_Writer)
{
p_Writer.Write((uint)MeshType);
p_Writer.Write((uint)Flags);
@@ -113,13 +112,13 @@ public bool Serialize(RimeWriter p_Writer)
return true;
}
- public bool Serialize([NotNullWhen(true)] out byte[]? p_Data)
+ public override bool Serialize([NotNullWhen(true)] out byte[]? p_Data)
{
p_Data = null;
throw new System.NotImplementedException();
}
- public void Deserialize(RimeReader p_Reader)
+ public override void Deserialize(RimeReader p_Reader)
{
MeshType = (MeshType)p_Reader.ReadUInt32();
Flags = (MeshLayoutFlags)p_Reader.ReadUInt32();
@@ -158,7 +157,7 @@ public void Deserialize(RimeReader p_Reader)
Padding = p_Reader.ReadUInt32();
}
- public void Deserialize(byte[] p_Data)
+ public override void Deserialize(byte[] p_Data)
{
Deserialize(new RimeReader(new MemoryStream(p_Data)));
}
diff --git a/RimeLib.Mesh/Frostbite/Fb2/MeshSubset.cs b/RimeLib.Mesh.Frostbite2_0/Frostbite/MeshSubset.cs
similarity index 92%
rename from RimeLib.Mesh/Frostbite/Fb2/MeshSubset.cs
rename to RimeLib.Mesh.Frostbite2_0/Frostbite/MeshSubset.cs
index 9534a7147..d03200506 100644
--- a/RimeLib.Mesh/Frostbite/Fb2/MeshSubset.cs
+++ b/RimeLib.Mesh.Frostbite2_0/Frostbite/MeshSubset.cs
@@ -3,14 +3,15 @@
using RimeLib.Frostbite;
using RimeLib.Frostbite.Core;
using RimeLib.IO;
+using RimeLib.Mesh.Frostbite;
-namespace RimeLib.Mesh.Frostbite
+namespace RimeLib.Mesh.Frostbite2_0.Frostbite
{
///
/// Implementation of fb::MeshSubset
/// Sizeof MeshSubset = 148 or 0x94
///
- public class MeshSubset : IFbSerializable
+ public class MeshSubset : Mesh.Frostbite.MeshSubset
{
///
/// Geometry declarations
@@ -103,7 +104,7 @@ public MeshSubset(RimeReader p_Reader)
/// Writes a meshsubset to an opened writer
///
/// Writer opened to the position of a MeshSubset
- public bool Serialize(RimeWriter p_Writer)
+ public override bool Serialize(RimeWriter p_Writer)
{
p_Writer.Write(GeometryDeclarations); // 0
p_Writer.Write(MaterialName.BaseAddress);
@@ -127,13 +128,13 @@ public bool Serialize(RimeWriter p_Writer)
return true;
}
- public bool Serialize([NotNullWhen(true)] out byte[]? p_Data)
+ public override bool Serialize([NotNullWhen(true)] out byte[]? p_Data)
{
p_Data = null;
throw new System.NotImplementedException();
}
- public void Deserialize(RimeReader p_Reader)
+ public override void Deserialize(RimeReader p_Reader)
{
GeometryDeclarations = p_Reader.ReadUInt64();
MaterialName = new RelocPtr(p_Reader);
@@ -153,7 +154,7 @@ public void Deserialize(RimeReader p_Reader)
TexCoordRatios.Add(p_Reader.ReadSingle());
}
- public void Deserialize(byte[] p_Data)
+ public override void Deserialize(byte[] p_Data)
{
Deserialize(new RimeReader(new MemoryStream(p_Data)));
}
diff --git a/RimeLib.Mesh/Frostbite/Fb2/MeshSubsetCategoryFlags.cs b/RimeLib.Mesh.Frostbite2_0/Frostbite/MeshSubsetCategoryFlags.cs
similarity index 76%
rename from RimeLib.Mesh/Frostbite/Fb2/MeshSubsetCategoryFlags.cs
rename to RimeLib.Mesh.Frostbite2_0/Frostbite/MeshSubsetCategoryFlags.cs
index 4e90152e8..36f8d4211 100644
--- a/RimeLib.Mesh/Frostbite/Fb2/MeshSubsetCategoryFlags.cs
+++ b/RimeLib.Mesh.Frostbite2_0/Frostbite/MeshSubsetCategoryFlags.cs
@@ -1,8 +1,6 @@
using System;
-using System.Collections.Generic;
-using System.Text;
-namespace RimeLib.Mesh.Frostbite.Fb2
+namespace RimeLib.Mesh.Frostbite2_0.Frostbite
{
[Flags]
public enum MeshSubsetCategoryFlags
diff --git a/RimeLib.Mesh.Frostbite2_0/Frostbite/OccluderMeshData.cs b/RimeLib.Mesh.Frostbite2_0/Frostbite/OccluderMeshData.cs
index da8255e5e..244588953 100644
--- a/RimeLib.Mesh.Frostbite2_0/Frostbite/OccluderMeshData.cs
+++ b/RimeLib.Mesh.Frostbite2_0/Frostbite/OccluderMeshData.cs
@@ -4,12 +4,8 @@
using RimeLib.IO;
using RimeLib.Serialization.Frostbite2_0.Extensions;
using System;
-using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace RimeLib.Mesh.Frostbite2_0.Frostbite
{
diff --git a/RimeLib.Mesh.Frostbite2_0/Frostbite/OccluderPartMask.cs b/RimeLib.Mesh.Frostbite2_0/Frostbite/OccluderPartMask.cs
index f99f357cd..880e758d0 100644
--- a/RimeLib.Mesh.Frostbite2_0/Frostbite/OccluderPartMask.cs
+++ b/RimeLib.Mesh.Frostbite2_0/Frostbite/OccluderPartMask.cs
@@ -1,12 +1,8 @@
using RimeLib.Frostbite;
using RimeLib.IO;
using System;
-using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace RimeLib.Mesh.Frostbite2_0.Frostbite
{
diff --git a/RimeLib.Mesh.Frostbite2_0/MeshConverter.cs b/RimeLib.Mesh.Frostbite2_0/MeshConverter.cs
new file mode 100644
index 000000000..32edb2396
--- /dev/null
+++ b/RimeLib.Mesh.Frostbite2_0/MeshConverter.cs
@@ -0,0 +1,1236 @@
+using fb;
+using RimeLib.Content.Mounting;
+using RimeLib.Extensions;
+using RimeLib.Frostbite;
+using RimeLib.Frostbite.Core;
+using RimeLib.IO;
+using RimeLib.IO.Conversion;
+using RimeLib.Math;
+using SharpGLTF.Schema2;
+using SharpGLTF.Materials;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices;
+using SharpGLTF.Geometry;
+using SharpGLTF.Geometry.VertexTypes;
+using RimeLib.Mesh.Frostbite2_0.Frostbite;
+using Collada141;
+
+namespace RimeLib.Mesh.Frostbite2_0
+{
+ public class MeshConverter : IMeshConverter
+ {
+ ///
+ /// This class holds mesh data being read in and is stored in our own format so we can streamline the exporting process.
+ /// Credits: Ma_rv, IceBloc
+ ///
+ public sealed class InternalMesh
+ {
+ public string Name = "";
+ public bool IsSkinned;
+ public List Vertices = new();
+ public List<(int A, int B, int C)> Faces = new();
+
+ public InternalMesh() { }
+ }
+
+ ///
+ /// Stores vertex attributes for each element.
+ /// Credits: Ma_rv, IceBloc
+ ///
+ public struct Vertex
+ {
+ public float PositionX;
+ public float PositionY;
+ public float PositionZ;
+ public float NormalX;
+ public float NormalY;
+ public float NormalZ;
+ public float TexCoordX;
+ public float TexCoordY;
+ public float BoneIndexA;
+ public float BoneIndexB;
+ public float BoneIndexC;
+ public float BoneIndexD;
+ public float BoneWeightA;
+ public float BoneWeightB;
+ public float BoneWeightC;
+ public float BoneWeightD;
+ }
+
+ public void ConvertToBlender(IResourceObject p_Resource, IEngineMounter p_Mounter, RimeWriter p_Writer)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void ConvertToGltf(IResourceObject p_Resource, IEngineMounter p_Mounter, RimeWriter p_Writer)
+ {
+ using var s_MeshReader = p_Resource.GetReader();
+ var s_MeshData = s_MeshReader.ToArray();
+ using var s_TempMeshReader = new RimeReader(new MemoryStream(s_MeshData));
+ var s_MeshSetLayout = new MeshSetLayout(s_TempMeshReader);
+
+ // Create a new GLTF model
+ var s_Model = ModelRoot.CreateModel();
+ s_Model.Asset.Generator = "Generated by RimeLib (c) 2020";
+ s_Model.Asset.Copyright = "Exported by Rime (c) kiwidoggie productions 2017-2020, models copyright respective ip owners, not for redistribution";
+
+ // Create a default scene
+ var s_Scene = s_Model.UseScene("default");
+
+ // Hold a new random for randomized colors
+ var s_Random = new Random();
+
+ // Iterate through each of the level of details objects
+ for (var s_LodIndex = 0; s_LodIndex < s_MeshSetLayout.LodCount; ++s_LodIndex)
+ {
+
+ // Get the level of detail object
+ var s_Lod = s_MeshSetLayout.Lods[s_LodIndex].Object;
+ if (s_Lod == null)
+ throw new Exception("could not get lod");
+
+ // Debug information
+ var s_LodName = s_Lod.Name.Object;
+ //if (!p_Options?.Quiet ?? false)
+ // Console.WriteLine($"Dumping rigid mesh ({s_LodName}) lod {s_LodIndex}");
+
+ // Debug checking to make sure assumptions are correct
+ if (s_Lod.CategorySubsetIndices.Length != (int)MeshSubsetCategory.MeshSubsetCategoryCount)
+ throw new Exception("category subset indicies don't match the count");
+
+ // Get the data chunk
+ var s_DataChunkId = s_Lod.DataChunkId;
+ if (!p_Mounter.TryGetChunk(s_DataChunkId, out /*IMountedObject*/ var p_Chunk))
+ {
+ //if (!p_Options.Quiet)
+ // Console.WriteLine($"could not find data: {BitConverter.ToString(s_DataChunkId.Id)}");
+
+ continue;
+ }
+
+ using var s_ChunkReader = p_Chunk.FirstVariant.GetReader();
+
+ // Hold all of our data
+ byte[] s_VertexChunkData = new byte[s_Lod.VertexDataSize];
+ byte[] s_PrimitiveChunkData = new byte[s_Lod.IndexDataSize];
+ byte[] s_ChunkData = s_ChunkReader.ReadBytes((int)s_ChunkReader.Length);
+
+ // Read out all vertex and primitive chunk data
+ using (var s_DataChunkReader = new RimeReader(new MemoryStream(s_ChunkData)))
+ {
+ // Read out all vertitices
+ s_VertexChunkData = s_DataChunkReader.ReadBytes((int)s_Lod.VertexDataSize);
+
+ // Read out all of the primitive data
+ s_PrimitiveChunkData = s_DataChunkReader.ReadBytes((int)s_Lod.IndexDataSize);
+ }
+
+ var s_SubsetsDict = new Dictionary>();
+
+ var s_SubsetsList = new List();
+ var s_VertexDataList = new List();
+ var s_CurrentVertexCount = 0;
+ var s_CurrentVertexSize = 0;
+
+ // Parse out all of the verticies
+ using (var s_VertexReader = new RimeReader(new MemoryStream(s_VertexChunkData)))
+ {
+ var s_VertexBitmask = new bool[s_VertexChunkData.Length];
+
+ // Iterate through each of the subsets in the lod
+ for (var s_SubsetIndex = 0; s_SubsetIndex < s_Lod.Subsets.Count; ++s_SubsetIndex)
+ {
+ // Get the subset
+ var s_Subset = s_Lod.Subsets.Get[s_SubsetIndex];
+
+ // Get the vertex stride, this should be the same as the current stream (elements per vertex) size
+ var s_VertexStride = s_Subset.VertexStride;
+
+ s_VertexReader.Seek(s_Subset.VertexOffset, SeekOrigin.Begin);
+
+ // Hold a list for all of our vertex data
+ var s_Set = new List();
+
+ // Iterate through each of the verticies
+ for (var s_VertexIndex = 0; s_VertexIndex < s_Subset.VertexCount; ++s_VertexIndex)
+ {
+ for (var i = 0; i < s_VertexStride; ++i)
+ s_VertexBitmask[s_VertexReader.Position + i] = true;
+
+ // Read out the vertex information
+ var s_Bytes = s_VertexReader.ReadBytes(s_VertexStride);
+
+ // Add this array of bytes (of size vertex stride)
+ s_VertexDataList.Add(s_Bytes);
+ s_Set.Add(s_Bytes);
+
+ s_CurrentVertexCount++;
+ s_CurrentVertexSize += s_VertexStride;
+ }
+
+ s_SubsetsDict.Add(s_Subset, s_Set);
+ s_SubsetsList.Add(s_Subset);
+ }
+
+ var s_Any = s_VertexBitmask.Any(p_Bit => p_Bit == false);
+ }
+
+ // Hold the subset + parsed vertex information
+ var s_ParsedSubsets = new Dictionary>>();
+
+ // Iterate through each of the subsets + the raw data
+ for (var s_SubsetIndex = 0; s_SubsetIndex < s_SubsetsDict.Count; s_SubsetIndex++)
+ {
+ // Get the subset and data pair
+ var s_SubsetsPair = s_SubsetsDict.ElementAt(s_SubsetIndex);
+
+ var s_SubsetKey = s_SubsetsPair.Key;
+ var s_SubsetValue = s_SubsetsPair.Value;
+
+ // Get the geometry descriptor
+ var s_GeometryDesc = s_SubsetKey.GeometryDeclarationDesc;
+
+ // Iterate all vertices that are for this model
+ if (s_SubsetValue.Count != s_SubsetKey.VertexCount)
+ throw new Exception("vertex count does not match number of verts read");
+
+ // Parse all of the data
+ var s_VerticiesNiceList = new List>();
+ for (var s_VertexIndex = 0; s_VertexIndex < s_SubsetValue.Count; ++s_VertexIndex)
+ {
+ var s_VertexData = s_SubsetValue[s_VertexIndex];
+
+ using var s_VertexReader = new RimeReader(new MemoryStream(s_VertexData));
+
+ var s_Dict = new Dictionary();
+
+ foreach (var s_Element in s_GeometryDesc.Elements)
+ {
+ s_VertexReader.Seek(s_Element.Offset, SeekOrigin.Begin);
+
+ // Iterate each element and check the format and set to the usage
+ // There should not be more than one of the same kind of usage here
+ switch (s_Element.Format)
+ {
+ case VertexElementFormat.VertexElementFormat_None:
+ break;
+ // Halfs
+ case VertexElementFormat.VertexElementFormat_Half:
+ s_Dict[s_Element.Usage] = RimeMath.HalfToFloat(s_VertexReader.ReadUInt16());
+ break;
+ case VertexElementFormat.VertexElementFormat_Half2:
+ s_Dict[s_Element.Usage] = (RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()));
+ break;
+ case VertexElementFormat.VertexElementFormat_Half3:
+ s_Dict[s_Element.Usage] = (RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()));
+ break;
+ case VertexElementFormat.VertexElementFormat_Half4:
+ s_Dict[s_Element.Usage] = (RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()));
+ break;
+
+ // Bytes
+ case VertexElementFormat.VertexElementFormat_UByteN:
+ s_Dict[s_Element.Usage] = s_VertexReader.ReadByte();
+ break;
+ case VertexElementFormat.VertexElementFormat_Byte4: // Should be signed byte
+ case VertexElementFormat.VertexElementFormat_Byte4N:
+ s_Dict[s_Element.Usage] = s_VertexReader.ReadBytes(4);
+ break;
+ case VertexElementFormat.VertexElementFormat_UByte4:
+ case VertexElementFormat.VertexElementFormat_UByte4N:
+ s_Dict[s_Element.Usage] = s_VertexReader.ReadBytes(4);
+ break;
+
+ // Floats
+ case VertexElementFormat.VertexElementFormat_Float:
+ s_Dict[s_Element.Usage] = s_VertexReader.ReadSingle();
+ break;
+ case VertexElementFormat.VertexElementFormat_Float2:
+ s_Dict[s_Element.Usage] = (s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle());
+ break;
+ case VertexElementFormat.VertexElementFormat_Float3:
+ s_Dict[s_Element.Usage] = (s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle());
+ break;
+ case VertexElementFormat.VertexElementFormat_Float4:
+ s_Dict[s_Element.Usage] = (s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle());
+ break;
+ default:
+ Console.WriteLine($"Unknown Format usage {s_Element.Format}");
+ throw new Exception($"Unknown format usage {s_Element.Format}");
+ }
+ }
+
+ s_VerticiesNiceList.Add(s_Dict);
+ }
+
+ // Verify that we have parsed all of the verticies
+ if (s_VerticiesNiceList.Count != s_SubsetKey.VertexCount)
+ throw new Exception("asdasdas");
+
+ // Add to the new map of subset + parsed vertitices
+ s_ParsedSubsets.Add(s_SubsetKey, s_VerticiesNiceList);
+ }
+
+ // Now order the mesh subset category + (subset + parsed vert data)
+ var s_Categories = new Dictionary>>>>();
+ for (var s_CategoryIndex = 0; s_CategoryIndex < s_Lod.CategorySubsetIndices.Length; ++s_CategoryIndex)
+ {
+ // Get the list of subsets per-category
+ var s_SubsetIndicies = s_Lod.CategorySubsetIndices[s_CategoryIndex].Get;
+
+ // Hold a list of subsets + parsed verts
+ var s_SubsetPairList = new List>>>();
+ foreach (var s_SubsetIndex in s_SubsetIndicies)
+ {
+ // Example: Opaque = 0x1, 0x2 (subset index)
+ var s_SubsetPair = s_ParsedSubsets.ElementAt(s_SubsetIndex);
+
+ s_SubsetPairList.Add(s_SubsetPair);
+ }
+
+ // Add to the dictionary for subset category, (subsets + vertex data)[]
+ s_Categories.Add((MeshSubsetCategory)s_CategoryIndex, s_SubsetPairList);
+ }
+
+ // We only want to get the opaque meshes, TODO: Iterate through everything
+ var s_Ret = s_Categories[MeshSubsetCategory.MeshSubsetCategory_Opaque];
+
+ // TODO: Hold list of subset + parsed verts + primitives
+
+ // Open up a reader for our primitives
+ using (var s_IndexReader = new RimeReader(new MemoryStream(s_PrimitiveChunkData)))
+ {
+ // Iterate each subset pair
+ foreach (var s_SubsetPair in s_Ret)
+ {
+ // Get the subset
+ var s_SubsetKey = s_SubsetPair.Key;
+ var s_SubsetValue = s_SubsetPair.Value;
+
+ // Calculate the start offset in the index buffer
+ var s_SubsetStartIndex = s_SubsetKey.StartIndex;
+
+ // Validate the start offset
+ var s_SubsetStartOffset = Marshal.SizeOf() * s_SubsetStartIndex;
+ if (s_SubsetStartOffset >= s_IndexReader.Length)
+ throw new Exception("subset start offset");
+
+ // Calculate and verify the end offset (that it's in-bounds)
+ var s_SubsetEndOffset = (Marshal.SizeOf() * 3) * s_SubsetKey.PrimitiveCount; // * 3 for X, Y, Z
+ if (s_SubsetEndOffset > s_IndexReader.Length)
+ throw new Exception("subset end offset");
+
+ // Hold our index list
+ var s_PrimitiveList = new List<(ushort, ushort, ushort)>();
+ switch (s_SubsetKey.PrimitiveType)
+ {
+ // If we are parsing a triangle list, then read out the X, Y, Z indices
+ case RimeLib.Mesh.Frostbite.PrimitiveType.PrimitiveType_TriangleList:
+ s_IndexReader.Seek(s_SubsetStartOffset, SeekOrigin.Begin);
+ for (var s_PrimitiveIndex = 0; s_PrimitiveIndex < s_SubsetKey.PrimitiveCount; ++s_PrimitiveIndex)
+ s_PrimitiveList.Add((s_IndexReader.ReadUInt16(), s_IndexReader.ReadUInt16(), s_IndexReader.ReadUInt16()));
+ break;
+ default:
+ throw new Exception("unimplemented primitive type");
+ }
+
+ // Continue with creating the gltf format
+ var s_RandomColor = new System.Numerics.Vector4((float)s_Random.NextDouble(), (float)s_Random.NextDouble(), (float)s_Random.NextDouble(), 1.0f);
+#pragma warning disable CS0618 // Type or member is obsolete
+ var s_DebugMaterial = new MaterialBuilder(s_SubsetKey.MaterialName.Object ?? "")
+ .WithMetallicRoughnessShader().WithChannelParam(KnownChannel.BaseColor, s_RandomColor);
+#pragma warning restore CS0618 // Type or member is obsolete
+
+ // Create a new GLTF mesh
+ var s_Mesh = new MeshBuilder($"{MeshSubsetCategory.MeshSubsetCategory_Opaque}_{s_Lod.ShortName.Object}");
+ var s_Primitive = s_Mesh.UsePrimitive(s_DebugMaterial);
+
+ // Iterate through all primitives
+ for (var s_PrimitiveIndex = 0; s_PrimitiveIndex < s_PrimitiveList.Count; ++s_PrimitiveIndex)
+ {
+ var s_PrimitiveIndices = s_PrimitiveList[s_PrimitiveIndex];
+
+ var s_FirstIndex = s_PrimitiveIndices.Item1;
+ if (s_FirstIndex > s_SubsetValue.Count)
+ throw new Exception("first index oob");
+
+ var s_FirstVertex = s_SubsetValue[s_FirstIndex];
+ if (!s_FirstVertex.TryGetValue(VertexElementUsage.VertexElementUsage_Pos, out dynamic? s_FirstVertexPos))
+ continue;
+
+
+ var s_SecondIndex = s_PrimitiveIndices.Item2;
+ if (s_SecondIndex > s_SubsetValue.Count)
+ throw new Exception("second index oob");
+
+ var s_SecondVertex = s_SubsetValue[s_SecondIndex];
+ if (!s_SecondVertex.TryGetValue(VertexElementUsage.VertexElementUsage_Pos, out dynamic? s_SecondVertexPos))
+ continue;
+
+ var s_ThirdIndex = s_PrimitiveIndices.Item3;
+ if (s_ThirdIndex > s_SubsetValue.Count)
+ throw new Exception("third index oob");
+
+ var s_ThirdVertex = s_SubsetValue[s_ThirdIndex];
+ if (!s_ThirdVertex.TryGetValue(VertexElementUsage.VertexElementUsage_Pos, out dynamic? s_ThirdVertexPos))
+ continue;
+
+
+ var s_FirstPosition = new VertexPosition(s_FirstVertexPos.Item1, s_FirstVertexPos.Item2, s_FirstVertexPos.Item3);
+ var s_SecondPosition = new VertexPosition(s_SecondVertexPos.Item1, s_SecondVertexPos.Item2, s_SecondVertexPos.Item3);
+ var s_ThirdPosition = new VertexPosition(s_ThirdVertexPos.Item1, s_ThirdVertexPos.Item2, s_ThirdVertexPos.Item3);
+
+
+ if (s_FirstVertex.TryGetValue(VertexElementUsage.VertexElementUsage_TexCoord0, out dynamic? s_FirstVertexTexture) &&
+ s_SecondVertex.TryGetValue(VertexElementUsage.VertexElementUsage_TexCoord0, out dynamic? s_SecondVertexTexture) &&
+ s_ThirdVertex.TryGetValue(VertexElementUsage.VertexElementUsage_TexCoord0, out dynamic? s_ThirdVertexTexture))
+ {
+ var s_FirstTexture = new VertexTexture1(new System.Numerics.Vector2(s_FirstVertexTexture.Item1, s_FirstVertexTexture.Item2));
+ var s_SecondTexture = new VertexTexture1(new System.Numerics.Vector2(s_SecondVertexTexture.Item1, s_SecondVertexTexture.Item2));
+ var s_ThirdTexture = new VertexTexture1(new System.Numerics.Vector2(s_ThirdVertexTexture.Item1, s_ThirdVertexTexture.Item2));
+
+ s_Primitive.AddTriangle((s_FirstPosition, s_FirstTexture), (s_SecondPosition, s_SecondTexture), (s_ThirdPosition, s_ThirdTexture));
+ }
+ else
+ {
+ //Console.WriteLine("No texcoords");
+ s_Primitive.AddTriangle(s_FirstPosition, s_SecondPosition, s_ThirdPosition);
+ }
+ }
+ //var s_BaseAddress = s_Lod.BoneShortNameArrayPartTransforms.BaseAddress;
+ // s_ChunkReader.Seek((long)s_BaseAddress, SeekOrigin.Begin);
+
+ //var l_MatrixTransform = new Matrix44(s_ChunkReader);
+
+ //var s_Transform = new RimeLib.Frostbite.Core.
+ //s_SceneBuilder.AddRigidMesh(s_Mesh, l_MatrixTransform.ToMatrix4x4());
+
+ s_Model.CreateMesh(s_Mesh);
+ }
+ }
+
+ foreach (var s_Mesh in s_Model.LogicalMeshes)
+ s_Model.UseScene("default").CreateNode().WithMesh(s_Mesh);
+
+ //var s_ModelPath = Path.Join(p_Options?.OutputPath ?? "./", s_MeshSetLayout.Name.Object);
+ //var s_ModelDirectory = Path.GetDirectoryName(s_ModelPath);
+
+ //Directory.CreateDirectory(s_ModelDirectory);
+
+ //s_Model.SaveGLTF(s_ModelPath, new WriteSettings() { JsonIndented = true });
+
+ //var s_Json = s_Model.GetJsonPreview();
+ //p_Writer.WriteLine(s_Json);
+ s_Model.SaveGLTF("model.gltf", new WriteSettings
+ {
+ JsonIndented = true
+ });
+ }
+ }
+
+ public void ConvertToObj(IResourceObject p_Resource, IEngineMounter p_Mounter, RimeWriter p_Writer)
+ {
+ using var s_MeshReader = p_Resource.GetReader();
+ var s_MeshData = s_MeshReader.ToArray();
+ using var s_TempMeshReader = new RimeReader(new MemoryStream(s_MeshData));
+ var s_MeshSetLayout = new MeshSetLayout(s_TempMeshReader);
+
+ // Create a new GLTF model
+ var s_Model = ModelRoot.CreateModel();
+ s_Model.Asset.Generator = "Generated by RimeLib (c) 2020";
+ s_Model.Asset.Copyright = "Exported by Rime (c) kiwidoggie productions 2017-2020, models copyright respective ip owners, not for redistribution";
+
+ // Create a default scene
+ var s_Scene = s_Model.UseScene("default");
+
+ // Hold a new random for randomized colors
+ var s_Random = new Random();
+
+ // Iterate through each of the level of details objects
+ for (var s_LodIndex = 0; s_LodIndex < s_MeshSetLayout.LodCount; ++s_LodIndex)
+ {
+
+ // Get the level of detail object
+ var s_Lod = s_MeshSetLayout.Lods[s_LodIndex].Object;
+ if (s_Lod == null)
+ throw new Exception("could not get lod");
+
+ // Debug information
+ var s_LodName = s_Lod.Name.Object;
+ //if (!p_Options?.Quiet ?? false)
+ // Console.WriteLine($"Dumping rigid mesh ({s_LodName}) lod {s_LodIndex}");
+
+ // Debug checking to make sure assumptions are correct
+ if (s_Lod.CategorySubsetIndices.Length != (int)MeshSubsetCategory.MeshSubsetCategoryCount)
+ throw new Exception("category subset indicies don't match the count");
+
+ // Get the data chunk
+ var s_DataChunkId = s_Lod.DataChunkId;
+ if (!p_Mounter.TryGetChunk(s_DataChunkId, out /*IMountedObject*/ var p_Chunk))
+ {
+ //if (!p_Options.Quiet)
+ // Console.WriteLine($"could not find data: {BitConverter.ToString(s_DataChunkId.Id)}");
+
+ continue;
+ }
+
+ using var s_ChunkReader = p_Chunk.FirstVariant.GetReader();
+
+ // Hold all of our data
+ byte[] s_VertexChunkData = new byte[s_Lod.VertexDataSize];
+ byte[] s_PrimitiveChunkData = new byte[s_Lod.IndexDataSize];
+ byte[] s_ChunkData = s_ChunkReader.ReadBytes((int)s_ChunkReader.Length);
+
+ // Read out all vertex and primitive chunk data
+ using (var s_DataChunkReader = new RimeReader(new MemoryStream(s_ChunkData)))
+ {
+ // Read out all vertitices
+ s_VertexChunkData = s_DataChunkReader.ReadBytes((int)s_Lod.VertexDataSize);
+
+ // Read out all of the primitive data
+ s_PrimitiveChunkData = s_DataChunkReader.ReadBytes((int)s_Lod.IndexDataSize);
+ }
+
+ var s_SubsetsDict = new Dictionary>();
+
+ var s_SubsetsList = new List();
+ var s_VertexDataList = new List();
+ var s_CurrentVertexCount = 0;
+ var s_CurrentVertexSize = 0;
+
+ // Parse out all of the verticies
+ using (var s_VertexReader = new RimeReader(new MemoryStream(s_VertexChunkData)))
+ {
+ var s_VertexBitmask = new bool[s_VertexChunkData.Length];
+
+ // Iterate through each of the subsets in the lod
+ for (var s_SubsetIndex = 0; s_SubsetIndex < s_Lod.Subsets.Count; ++s_SubsetIndex)
+ {
+ // Get the subset
+ var s_Subset = s_Lod.Subsets.Get[s_SubsetIndex];
+
+ // Get the vertex stride, this should be the same as the current stream (elements per vertex) size
+ var s_VertexStride = s_Subset.VertexStride;
+
+ s_VertexReader.Seek(s_Subset.VertexOffset, SeekOrigin.Begin);
+
+ // Hold a list for all of our vertex data
+ var s_Set = new List();
+
+ // Iterate through each of the verticies
+ for (var s_VertexIndex = 0; s_VertexIndex < s_Subset.VertexCount; ++s_VertexIndex)
+ {
+ for (var i = 0; i < s_VertexStride; ++i)
+ s_VertexBitmask[s_VertexReader.Position + i] = true;
+
+ // Read out the vertex information
+ var s_Bytes = s_VertexReader.ReadBytes(s_VertexStride);
+
+ // Add this array of bytes (of size vertex stride)
+ s_VertexDataList.Add(s_Bytes);
+ s_Set.Add(s_Bytes);
+
+ s_CurrentVertexCount++;
+ s_CurrentVertexSize += s_VertexStride;
+ }
+
+ s_SubsetsDict.Add(s_Subset, s_Set);
+ s_SubsetsList.Add(s_Subset);
+ }
+
+ var s_Any = s_VertexBitmask.Any(p_Bit => p_Bit == false);
+ }
+
+ // Hold the subset + parsed vertex information
+ var s_ParsedSubsets = new Dictionary>>();
+
+ // Iterate through each of the subsets + the raw data
+ for (var s_SubsetIndex = 0; s_SubsetIndex < s_SubsetsDict.Count; s_SubsetIndex++)
+ {
+ // Get the subset and data pair
+ var s_SubsetsPair = s_SubsetsDict.ElementAt(s_SubsetIndex);
+
+ var s_SubsetKey = s_SubsetsPair.Key;
+ var s_SubsetValue = s_SubsetsPair.Value;
+
+ // Get the geometry descriptor
+ var s_GeometryDesc = s_SubsetKey.GeometryDeclarationDesc;
+
+ // Iterate all vertices that are for this model
+ if (s_SubsetValue.Count != s_SubsetKey.VertexCount)
+ throw new Exception("vertex count does not match number of verts read");
+
+ // Parse all of the data
+ var s_VerticiesNiceList = new List>();
+ for (var s_VertexIndex = 0; s_VertexIndex < s_SubsetValue.Count; ++s_VertexIndex)
+ {
+ var s_VertexData = s_SubsetValue[s_VertexIndex];
+
+ using var s_VertexReader = new RimeReader(new MemoryStream(s_VertexData));
+
+ var s_Dict = new Dictionary();
+
+ foreach (var s_Element in s_GeometryDesc.Elements)
+ {
+ s_VertexReader.Seek(s_Element.Offset, SeekOrigin.Begin);
+
+ // Iterate each element and check the format and set to the usage
+ // There should not be more than one of the same kind of usage here
+ switch (s_Element.Format)
+ {
+ case VertexElementFormat.VertexElementFormat_None:
+ break;
+ // Halfs
+ case VertexElementFormat.VertexElementFormat_Half:
+ s_Dict[s_Element.Usage] = RimeMath.HalfToFloat(s_VertexReader.ReadUInt16());
+ break;
+ case VertexElementFormat.VertexElementFormat_Half2:
+ s_Dict[s_Element.Usage] = (RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()));
+ break;
+ case VertexElementFormat.VertexElementFormat_Half3:
+ s_Dict[s_Element.Usage] = (RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()));
+ break;
+ case VertexElementFormat.VertexElementFormat_Half4:
+ s_Dict[s_Element.Usage] = (RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()));
+ break;
+
+ // Bytes
+ case VertexElementFormat.VertexElementFormat_UByteN:
+ s_Dict[s_Element.Usage] = s_VertexReader.ReadByte();
+ break;
+ case VertexElementFormat.VertexElementFormat_Byte4: // Should be signed byte
+ case VertexElementFormat.VertexElementFormat_Byte4N:
+ s_Dict[s_Element.Usage] = s_VertexReader.ReadBytes(4);
+ break;
+ case VertexElementFormat.VertexElementFormat_UByte4:
+ case VertexElementFormat.VertexElementFormat_UByte4N:
+ s_Dict[s_Element.Usage] = s_VertexReader.ReadBytes(4);
+ break;
+
+ // Floats
+ case VertexElementFormat.VertexElementFormat_Float:
+ s_Dict[s_Element.Usage] = s_VertexReader.ReadSingle();
+ break;
+ case VertexElementFormat.VertexElementFormat_Float2:
+ s_Dict[s_Element.Usage] = (s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle());
+ break;
+ case VertexElementFormat.VertexElementFormat_Float3:
+ s_Dict[s_Element.Usage] = (s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle());
+ break;
+ case VertexElementFormat.VertexElementFormat_Float4:
+ s_Dict[s_Element.Usage] = (s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle());
+ break;
+ default:
+ Console.WriteLine($"Unknown Format usage {s_Element.Format}");
+ throw new Exception($"Unknown format usage {s_Element.Format}");
+ }
+ }
+
+ s_VerticiesNiceList.Add(s_Dict);
+ }
+
+ // Verify that we have parsed all of the verticies
+ if (s_VerticiesNiceList.Count != s_SubsetKey.VertexCount)
+ throw new Exception("asdasdas");
+
+ // Add to the new map of subset + parsed vertitices
+ s_ParsedSubsets.Add(s_SubsetKey, s_VerticiesNiceList);
+ }
+
+ // Now order the mesh subset category + (subset + parsed vert data)
+ var s_Categories = new Dictionary>>>>();
+ for (var s_CategoryIndex = 0; s_CategoryIndex < s_Lod.CategorySubsetIndices.Length; ++s_CategoryIndex)
+ {
+ // Get the list of subsets per-category
+ var s_SubsetIndicies = s_Lod.CategorySubsetIndices[s_CategoryIndex].Get;
+
+ // Hold a list of subsets + parsed verts
+ var s_SubsetPairList = new List>>>();
+ foreach (var s_SubsetIndex in s_SubsetIndicies)
+ {
+ // Example: Opaque = 0x1, 0x2 (subset index)
+ var s_SubsetPair = s_ParsedSubsets.ElementAt(s_SubsetIndex);
+
+ s_SubsetPairList.Add(s_SubsetPair);
+ }
+
+ // Add to the dictionary for subset category, (subsets + vertex data)[]
+ s_Categories.Add((MeshSubsetCategory)s_CategoryIndex, s_SubsetPairList);
+ }
+
+ // We only want to get the opaque meshes, TODO: Iterate through everything
+ var s_Ret = s_Categories[MeshSubsetCategory.MeshSubsetCategory_Opaque];
+
+ // TODO: Hold list of subset + parsed verts + primitives
+
+ // Open up a reader for our primitives
+ using (var s_IndexReader = new RimeReader(new MemoryStream(s_PrimitiveChunkData)))
+ {
+ // Iterate each subset pair
+ foreach (var s_SubsetPair in s_Ret)
+ {
+ // Get the subset
+ var s_SubsetKey = s_SubsetPair.Key;
+ var s_SubsetValue = s_SubsetPair.Value;
+
+ // Calculate the start offset in the index buffer
+ var s_SubsetStartIndex = s_SubsetKey.StartIndex;
+
+ // Validate the start offset
+ var s_SubsetStartOffset = Marshal.SizeOf() * s_SubsetStartIndex;
+ if (s_SubsetStartOffset >= s_IndexReader.Length)
+ throw new Exception("subset start offset");
+
+ // Calculate and verify the end offset (that it's in-bounds)
+ var s_SubsetEndOffset = (Marshal.SizeOf() * 3) * s_SubsetKey.PrimitiveCount; // * 3 for X, Y, Z
+ if (s_SubsetEndOffset > s_IndexReader.Length)
+ throw new Exception("subset end offset");
+
+ // Hold our index list
+ var s_PrimitiveList = new List<(ushort, ushort, ushort)>();
+ switch (s_SubsetKey.PrimitiveType)
+ {
+ // If we are parsing a triangle list, then read out the X, Y, Z indices
+ case RimeLib.Mesh.Frostbite.PrimitiveType.PrimitiveType_TriangleList:
+ s_IndexReader.Seek(s_SubsetStartOffset, SeekOrigin.Begin);
+ for (var s_PrimitiveIndex = 0; s_PrimitiveIndex < s_SubsetKey.PrimitiveCount; ++s_PrimitiveIndex)
+ s_PrimitiveList.Add((s_IndexReader.ReadUInt16(), s_IndexReader.ReadUInt16(), s_IndexReader.ReadUInt16()));
+ break;
+ default:
+ throw new Exception("unimplemented primitive type");
+ }
+
+ // Continue with creating the gltf format
+ var s_RandomColor = new System.Numerics.Vector4((float)s_Random.NextDouble(), (float)s_Random.NextDouble(), (float)s_Random.NextDouble(), 1.0f);
+#pragma warning disable CS0618 // Type or member is obsolete
+ var s_DebugMaterial = new MaterialBuilder(s_SubsetKey.MaterialName.Object ?? "")
+ .WithMetallicRoughnessShader().WithChannelParam(KnownChannel.BaseColor, s_RandomColor);
+#pragma warning restore CS0618 // Type or member is obsolete
+
+ // Create a new GLTF mesh
+ var s_Mesh = new MeshBuilder($"{MeshSubsetCategory.MeshSubsetCategory_Opaque}_{s_Lod.ShortName.Object}");
+ var s_Primitive = s_Mesh.UsePrimitive(s_DebugMaterial);
+
+ // Iterate through all primitives
+ for (var s_PrimitiveIndex = 0; s_PrimitiveIndex < s_PrimitiveList.Count; ++s_PrimitiveIndex)
+ {
+ var s_PrimitiveIndices = s_PrimitiveList[s_PrimitiveIndex];
+
+ var s_FirstIndex = s_PrimitiveIndices.Item1;
+ if (s_FirstIndex > s_SubsetValue.Count)
+ throw new Exception("first index oob");
+
+ var s_FirstVertex = s_SubsetValue[s_FirstIndex];
+ if (!s_FirstVertex.TryGetValue(VertexElementUsage.VertexElementUsage_Pos, out dynamic? s_FirstVertexPos))
+ continue;
+
+
+ var s_SecondIndex = s_PrimitiveIndices.Item2;
+ if (s_SecondIndex > s_SubsetValue.Count)
+ throw new Exception("second index oob");
+
+ var s_SecondVertex = s_SubsetValue[s_SecondIndex];
+ if (!s_SecondVertex.TryGetValue(VertexElementUsage.VertexElementUsage_Pos, out dynamic? s_SecondVertexPos))
+ continue;
+
+ var s_ThirdIndex = s_PrimitiveIndices.Item3;
+ if (s_ThirdIndex > s_SubsetValue.Count)
+ throw new Exception("third index oob");
+
+ var s_ThirdVertex = s_SubsetValue[s_ThirdIndex];
+ if (!s_ThirdVertex.TryGetValue(VertexElementUsage.VertexElementUsage_Pos, out dynamic? s_ThirdVertexPos))
+ continue;
+
+
+ var s_FirstPosition = new VertexPosition(s_FirstVertexPos.Item1, s_FirstVertexPos.Item2, s_FirstVertexPos.Item3);
+ var s_SecondPosition = new VertexPosition(s_SecondVertexPos.Item1, s_SecondVertexPos.Item2, s_SecondVertexPos.Item3);
+ var s_ThirdPosition = new VertexPosition(s_ThirdVertexPos.Item1, s_ThirdVertexPos.Item2, s_ThirdVertexPos.Item3);
+
+
+ if (s_FirstVertex.TryGetValue(VertexElementUsage.VertexElementUsage_TexCoord0, out dynamic? s_FirstVertexTexture) &&
+ s_SecondVertex.TryGetValue(VertexElementUsage.VertexElementUsage_TexCoord0, out dynamic? s_SecondVertexTexture) &&
+ s_ThirdVertex.TryGetValue(VertexElementUsage.VertexElementUsage_TexCoord0, out dynamic? s_ThirdVertexTexture))
+ {
+ var s_FirstTexture = new VertexTexture1(new System.Numerics.Vector2(s_FirstVertexTexture.Item1, s_FirstVertexTexture.Item2));
+ var s_SecondTexture = new VertexTexture1(new System.Numerics.Vector2(s_SecondVertexTexture.Item1, s_SecondVertexTexture.Item2));
+ var s_ThirdTexture = new VertexTexture1(new System.Numerics.Vector2(s_ThirdVertexTexture.Item1, s_ThirdVertexTexture.Item2));
+
+ s_Primitive.AddTriangle((s_FirstPosition, s_FirstTexture), (s_SecondPosition, s_SecondTexture), (s_ThirdPosition, s_ThirdTexture));
+ }
+ else
+ {
+ //Console.WriteLine("No texcoords");
+ s_Primitive.AddTriangle(s_FirstPosition, s_SecondPosition, s_ThirdPosition);
+ }
+ }
+ //var s_BaseAddress = s_Lod.BoneShortNameArrayPartTransforms.BaseAddress;
+ // s_ChunkReader.Seek((long)s_BaseAddress, SeekOrigin.Begin);
+
+ //var l_MatrixTransform = new Matrix44(s_ChunkReader);
+
+ //var s_Transform = new RimeLib.Frostbite.Core.
+ //s_SceneBuilder.AddRigidMesh(s_Mesh, l_MatrixTransform.ToMatrix4x4());
+
+ s_Model.CreateMesh(s_Mesh);
+ }
+ }
+
+ foreach (var s_Mesh in s_Model.LogicalMeshes)
+ s_Model.UseScene("default").CreateNode().WithMesh(s_Mesh);
+
+ //var s_ModelPath = Path.Join(p_Options?.OutputPath ?? "./", s_MeshSetLayout.Name.Object);
+ //var s_ModelDirectory = Path.GetDirectoryName(s_ModelPath);
+
+ //Directory.CreateDirectory(s_ModelDirectory);
+
+ //s_Model.SaveGLTF(s_ModelPath, new WriteSettings() { JsonIndented = true });
+
+ //var s_Json = s_Model.GetJsonPreview();
+ //p_Writer.WriteLine(s_Json);
+ s_Model.SaveAsWavefront("model.obj");
+ }
+
+ }
+
+ public void ConvertToText(IResourceObject p_Resource, IEngineMounter p_Mounter, RimeWriter p_Writer)
+ {
+ throw new NotImplementedException();
+ }
+
+ public EngineType[] GetSupportedEngines()
+ {
+ return new[] { EngineType.Frostbite2_0 };
+ }
+ public void ConvertToCollada(IResourceObject p_Resource, IEngineMounter p_Mounter, RimeWriter p_Writer)
+ {
+ // References
+ // https://gist.github.com/wtsnz/bfa11c40e04594b260255b5dc7956f26
+ // https://www.khronos.org/collada/wiki/Using_accessors
+ // https://www.khronos.org/files/collada_spec_1_5.pdf
+ // https://xoofx.com/blog/2010/08/24/import-and-export-3d-collada-files-with/
+
+ using var s_MeshReader = p_Resource.GetReader();
+ var s_MeshData = s_MeshReader.ToArray();
+ using var s_TempMeshReader = new RimeReader(new MemoryStream(s_MeshData));
+ var s_MeshSetLayout = new MeshSetLayout(s_TempMeshReader);
+
+ // Create a new collada model
+ var s_Model = new COLLADA
+ {
+ // Create new asset information
+ asset = new asset
+ {
+ // Create the contributor information
+ contributor = new assetContributor[]
+ {
+ // Automated information
+ new assetContributor
+ {
+ author = Environment.UserName,
+ authoring_tool = "Generated by RimeLib (c) 2016-2023"
+ }
+ },
+
+ // Creation date
+ created = DateTime.Now,
+
+ // Modification date
+ modified = DateTime.Now,
+
+ // Frostbite is Y up
+ up_axis = UpAxisType.Y_UP,
+
+ // Name of this asset
+ title = s_MeshSetLayout.Name.Object,
+
+ // Revision of this asset
+ revision = "1.0",
+
+ // Extra information
+ keywords = $"{s_MeshSetLayout.ShortName.Object},{s_MeshSetLayout.NameHash}"
+ }
+ };
+
+ // TODO: Handle materials
+ var s_LibraryMaterials = new library_materials
+ {
+ material = new material[]
+ {
+ new material
+ {
+ id = "blue",
+ name = "blue",
+ instance_effect = new instance_effect
+ {
+ url = "#instance_effect_blue"
+ }
+ }
+ }
+ };
+ // TODO: End handle materials
+
+ var s_Geometries = new library_geometries();
+
+ // Iterate through each of the level of details objects
+ for (var s_LodIndex = 0; s_LodIndex < s_MeshSetLayout.LodCount; ++s_LodIndex)
+ {
+ // Get the level of detail object
+ var s_Lod = s_MeshSetLayout.Lods[s_LodIndex].Object;
+ if (s_Lod == null)
+ throw new Exception("could not get lod");
+
+ // Debug information
+ var s_LodName = s_Lod.Name.Object;
+ //if (!p_Options?.Quiet ?? false)
+ // Console.WriteLine($"Dumping rigid mesh ({s_LodName}) lod {s_LodIndex}");
+
+ // Debug checking to make sure assumptions are correct
+ if (s_Lod.CategorySubsetIndices.Length != (int)MeshSubsetCategory.MeshSubsetCategoryCount)
+ throw new Exception("category subset indicies don't match the count");
+
+ // Get the data chunk
+ var s_DataChunkId = s_Lod.DataChunkId;
+ if (!p_Mounter.TryGetChunk(s_DataChunkId, out /*IMountedObject*/ var p_Chunk))
+ {
+ //if (!p_Options.Quiet)
+ // Console.WriteLine($"could not find data: {BitConverter.ToString(s_DataChunkId.Id)}");
+
+ continue;
+ }
+
+ using var s_ChunkReader = p_Chunk.FirstVariant.GetReader();
+
+ // Hold all of our data
+ byte[] s_VertexChunkData = new byte[s_Lod.VertexDataSize];
+ byte[] s_PrimitiveChunkData = new byte[s_Lod.IndexDataSize];
+ byte[] s_ChunkData = s_ChunkReader.ReadBytes((int)s_ChunkReader.Length);
+
+ // Read out all vertex and primitive chunk data
+ using (var s_DataChunkReader = new RimeReader(new MemoryStream(s_ChunkData)))
+ {
+ // Read out all vertitices
+ s_VertexChunkData = s_DataChunkReader.ReadBytes((int)s_Lod.VertexDataSize);
+
+ // Read out all of the primitive data
+ s_PrimitiveChunkData = s_DataChunkReader.ReadBytes((int)s_Lod.IndexDataSize);
+ }
+
+ var s_SubsetsDict = new Dictionary>();
+
+ var s_SubsetsList = new List();
+ var s_VertexDataList = new List();
+ var s_CurrentVertexCount = 0;
+ var s_CurrentVertexSize = 0;
+
+ // Parse out all of the verticies
+ using (var s_VertexReader = new RimeReader(new MemoryStream(s_VertexChunkData)))
+ {
+ var s_VertexBitmask = new bool[s_VertexChunkData.Length];
+
+ // Iterate through each of the subsets in the lod
+ for (var s_SubsetIndex = 0; s_SubsetIndex < s_Lod.Subsets.Count; ++s_SubsetIndex)
+ {
+ // Get the subset
+ var s_Subset = s_Lod.Subsets.Get[s_SubsetIndex];
+
+ // Get the vertex stride, this should be the same as the current stream (elements per vertex) size
+ var s_VertexStride = s_Subset.VertexStride;
+
+ s_VertexReader.Seek(s_Subset.VertexOffset, SeekOrigin.Begin);
+
+ // Hold a list for all of our vertex data
+ var s_Set = new List();
+
+ // Iterate through each of the verticies
+ for (var s_VertexIndex = 0; s_VertexIndex < s_Subset.VertexCount; ++s_VertexIndex)
+ {
+ for (var i = 0; i < s_VertexStride; ++i)
+ s_VertexBitmask[s_VertexReader.Position + i] = true;
+
+ // Read out the vertex information
+ var s_Bytes = s_VertexReader.ReadBytes(s_VertexStride);
+
+ // Add this array of bytes (of size vertex stride)
+ s_VertexDataList.Add(s_Bytes);
+ s_Set.Add(s_Bytes);
+
+ s_CurrentVertexCount++;
+ s_CurrentVertexSize += s_VertexStride;
+ }
+
+ s_SubsetsDict.Add(s_Subset, s_Set);
+ s_SubsetsList.Add(s_Subset);
+ }
+
+ var s_Any = s_VertexBitmask.Any(p_Bit => p_Bit == false);
+ }
+
+ // Hold the subset + parsed vertex information
+ var s_ParsedSubsets = new Dictionary>>();
+
+ // Iterate through each of the subsets + the raw data
+ for (var s_SubsetIndex = 0; s_SubsetIndex < s_SubsetsDict.Count; s_SubsetIndex++)
+ {
+ // Get the subset and data pair
+ var s_SubsetsPair = s_SubsetsDict.ElementAt(s_SubsetIndex);
+
+ var s_SubsetKey = s_SubsetsPair.Key;
+ var s_SubsetValue = s_SubsetsPair.Value;
+
+ // Get the geometry descriptor
+ var s_GeometryDesc = s_SubsetKey.GeometryDeclarationDesc;
+
+ // Iterate all vertices that are for this model
+ if (s_SubsetValue.Count != s_SubsetKey.VertexCount)
+ throw new Exception("vertex count does not match number of verts read");
+
+ // Parse all of the data
+ var s_VerticiesNiceList = new List>();
+ for (var s_VertexIndex = 0; s_VertexIndex < s_SubsetValue.Count; ++s_VertexIndex)
+ {
+ var s_VertexData = s_SubsetValue[s_VertexIndex];
+
+ using var s_VertexReader = new RimeReader(new MemoryStream(s_VertexData));
+
+ var s_Dict = new Dictionary();
+
+ foreach (var s_Element in s_GeometryDesc.Elements)
+ {
+ s_VertexReader.Seek(s_Element.Offset, SeekOrigin.Begin);
+
+ // Iterate each element and check the format and set to the usage
+ // There should not be more than one of the same kind of usage here
+ switch (s_Element.Format)
+ {
+ case VertexElementFormat.VertexElementFormat_None:
+ break;
+ // Halfs
+ case VertexElementFormat.VertexElementFormat_Half:
+ s_Dict[s_Element.Usage] = RimeMath.HalfToFloat(s_VertexReader.ReadUInt16());
+ break;
+ case VertexElementFormat.VertexElementFormat_Half2:
+ s_Dict[s_Element.Usage] = (RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()));
+ break;
+ case VertexElementFormat.VertexElementFormat_Half3:
+ s_Dict[s_Element.Usage] = (RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()));
+ break;
+ case VertexElementFormat.VertexElementFormat_Half4:
+ s_Dict[s_Element.Usage] = (RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()), RimeMath.HalfToFloat(s_VertexReader.ReadUInt16()));
+ break;
+
+ // Bytes
+ case VertexElementFormat.VertexElementFormat_UByteN:
+ s_Dict[s_Element.Usage] = s_VertexReader.ReadByte();
+ break;
+ case VertexElementFormat.VertexElementFormat_Byte4: // Should be signed byte
+ case VertexElementFormat.VertexElementFormat_Byte4N:
+ s_Dict[s_Element.Usage] = s_VertexReader.ReadBytes(4);
+ break;
+ case VertexElementFormat.VertexElementFormat_UByte4:
+ case VertexElementFormat.VertexElementFormat_UByte4N:
+ s_Dict[s_Element.Usage] = s_VertexReader.ReadBytes(4);
+ break;
+
+ // Floats
+ case VertexElementFormat.VertexElementFormat_Float:
+ s_Dict[s_Element.Usage] = s_VertexReader.ReadSingle();
+ break;
+ case VertexElementFormat.VertexElementFormat_Float2:
+ s_Dict[s_Element.Usage] = (s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle());
+ break;
+ case VertexElementFormat.VertexElementFormat_Float3:
+ s_Dict[s_Element.Usage] = (s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle());
+ break;
+ case VertexElementFormat.VertexElementFormat_Float4:
+ s_Dict[s_Element.Usage] = (s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle(), s_VertexReader.ReadSingle());
+ break;
+ default:
+ Console.WriteLine($"Unknown Format usage {s_Element.Format}");
+ throw new Exception($"Unknown format usage {s_Element.Format}");
+ }
+ }
+
+ s_VerticiesNiceList.Add(s_Dict);
+ }
+
+ // Verify that we have parsed all of the verticies
+ if (s_VerticiesNiceList.Count != s_SubsetKey.VertexCount)
+ throw new Exception("asdasdas");
+
+ // Add to the new map of subset + parsed vertitices
+ s_ParsedSubsets.Add(s_SubsetKey, s_VerticiesNiceList);
+ }
+
+ // Now order the mesh subset category + (subset + parsed vert data)
+ var s_Categories = new Dictionary>>>>();
+ for (var s_CategoryIndex = 0; s_CategoryIndex < s_Lod.CategorySubsetIndices.Length; ++s_CategoryIndex)
+ {
+ // Get the list of subsets per-category
+ var s_SubsetIndicies = s_Lod.CategorySubsetIndices[s_CategoryIndex].Get;
+
+ // Hold a list of subsets + parsed verts
+ var s_SubsetPairList = new List>>>();
+ foreach (var s_SubsetIndex in s_SubsetIndicies)
+ {
+ // Example: Opaque = 0x1, 0x2 (subset index)
+ var s_SubsetPair = s_ParsedSubsets.ElementAt(s_SubsetIndex);
+
+ s_SubsetPairList.Add(s_SubsetPair);
+ }
+
+ // Add to the dictionary for subset category, (subsets + vertex data)[]
+ s_Categories.Add((MeshSubsetCategory)s_CategoryIndex, s_SubsetPairList);
+ }
+
+ // We only want to get the opaque meshes, TODO: Iterate through everything
+ var s_Ret = s_Categories[MeshSubsetCategory.MeshSubsetCategory_Opaque];
+
+ // TODO: Hold list of subset + parsed verts + primitives
+
+ // Open up a reader for our primitives
+ using (var s_IndexReader = new RimeReader(new MemoryStream(s_PrimitiveChunkData)))
+ {
+ // Iterate each subset pair
+ foreach (var s_SubsetPair in s_Ret)
+ {
+ // Get the subset
+ var s_SubsetKey = s_SubsetPair.Key;
+ var s_SubsetValue = s_SubsetPair.Value;
+
+ // Calculate the start offset in the index buffer
+ var s_SubsetStartIndex = s_SubsetKey.StartIndex;
+
+ // Validate the start offset
+ var s_SubsetStartOffset = Marshal.SizeOf() * s_SubsetStartIndex;
+ if (s_SubsetStartOffset >= s_IndexReader.Length)
+ throw new Exception("subset start offset");
+
+ // Calculate and verify the end offset (that it's in-bounds)
+ var s_SubsetEndOffset = (Marshal.SizeOf() * 3) * s_SubsetKey.PrimitiveCount; // * 3 for X, Y, Z
+ if (s_SubsetEndOffset > s_IndexReader.Length)
+ throw new Exception("subset end offset");
+
+ // Hold our index list
+ var s_PrimitiveList = new List<(ushort, ushort, ushort)>();
+ switch (s_SubsetKey.PrimitiveType)
+ {
+ // If we are parsing a triangle list, then read out the X, Y, Z indices
+ case RimeLib.Mesh.Frostbite.PrimitiveType.PrimitiveType_TriangleList:
+ s_IndexReader.Seek(s_SubsetStartOffset, SeekOrigin.Begin);
+ for (var s_PrimitiveIndex = 0; s_PrimitiveIndex < s_SubsetKey.PrimitiveCount; ++s_PrimitiveIndex)
+ s_PrimitiveList.Add((s_IndexReader.ReadUInt16(), s_IndexReader.ReadUInt16(), s_IndexReader.ReadUInt16()));
+ break;
+ default:
+ throw new Exception("unimplemented primitive type");
+ }
+
+ // Create a new GLTF mesh
+ // var s_Mesh = new MeshBuilder($"{MeshSubsetCategory.MeshSubsetCategory_Opaque}_{s_Lod.ShortName.Object}");
+ // var s_Primitive = s_Mesh.UsePrimitive(s_DebugMaterial);
+
+ // Create a new COLLADA mesh
+ var s_Mesh = new mesh();
+
+
+ // Iterate through all primitives
+ for (var s_PrimitiveIndex = 0; s_PrimitiveIndex < s_PrimitiveList.Count; ++s_PrimitiveIndex)
+ {
+ var s_PrimitiveIndices = s_PrimitiveList[s_PrimitiveIndex];
+
+ var s_FirstIndex = s_PrimitiveIndices.Item1;
+ if (s_FirstIndex > s_SubsetValue.Count)
+ throw new Exception("first index oob");
+
+ var s_FirstVertex = s_SubsetValue[s_FirstIndex];
+ if (!s_FirstVertex.TryGetValue(VertexElementUsage.VertexElementUsage_Pos, out dynamic? s_FirstVertexPos))
+ continue;
+
+
+ var s_SecondIndex = s_PrimitiveIndices.Item2;
+ if (s_SecondIndex > s_SubsetValue.Count)
+ throw new Exception("second index oob");
+
+ var s_SecondVertex = s_SubsetValue[s_SecondIndex];
+ if (!s_SecondVertex.TryGetValue(VertexElementUsage.VertexElementUsage_Pos, out dynamic? s_SecondVertexPos))
+ continue;
+
+ var s_ThirdIndex = s_PrimitiveIndices.Item3;
+ if (s_ThirdIndex > s_SubsetValue.Count)
+ throw new Exception("third index oob");
+
+ var s_ThirdVertex = s_SubsetValue[s_ThirdIndex];
+ if (!s_ThirdVertex.TryGetValue(VertexElementUsage.VertexElementUsage_Pos, out dynamic? s_ThirdVertexPos))
+ continue;
+
+ var s_Vertices = new vertices
+ {
+ id = "geom-x-vertices",
+ input = new InputLocal[]
+ {
+ new InputLocal
+ {
+ semantic = "POSITION",
+ source = "#geom-x-positions"
+ }
+ }
+ };
+
+
+ var s_VerticesInput = new InputLocal();
+ s_VerticesInput.semantic = "VERTEX";
+ s_VerticesInput.source = "#lod-";
+
+ var s_FirstPosition = new VertexPosition(s_FirstVertexPos.Item1, s_FirstVertexPos.Item2, s_FirstVertexPos.Item3);
+ var s_SecondPosition = new VertexPosition(s_SecondVertexPos.Item1, s_SecondVertexPos.Item2, s_SecondVertexPos.Item3);
+ var s_ThirdPosition = new VertexPosition(s_ThirdVertexPos.Item1, s_ThirdVertexPos.Item2, s_ThirdVertexPos.Item3);
+
+
+ if (s_FirstVertex.TryGetValue(VertexElementUsage.VertexElementUsage_TexCoord0, out dynamic? s_FirstVertexTexture) &&
+ s_SecondVertex.TryGetValue(VertexElementUsage.VertexElementUsage_TexCoord0, out dynamic? s_SecondVertexTexture) &&
+ s_ThirdVertex.TryGetValue(VertexElementUsage.VertexElementUsage_TexCoord0, out dynamic? s_ThirdVertexTexture))
+ {
+ var s_FirstTexture = new VertexTexture1(new System.Numerics.Vector2(s_FirstVertexTexture.Item1, s_FirstVertexTexture.Item2));
+ var s_SecondTexture = new VertexTexture1(new System.Numerics.Vector2(s_SecondVertexTexture.Item1, s_SecondVertexTexture.Item2));
+ var s_ThirdTexture = new VertexTexture1(new System.Numerics.Vector2(s_ThirdVertexTexture.Item1, s_ThirdVertexTexture.Item2));
+
+ // s_Primitive.AddTriangle((s_FirstPosition, s_FirstTexture), (s_SecondPosition, s_SecondTexture), (s_ThirdPosition, s_ThirdTexture));
+ }
+ else
+ {
+ //Console.WriteLine("No texcoords");
+ // s_Primitive.AddTriangle(s_FirstPosition, s_SecondPosition, s_ThirdPosition);
+ }
+ }
+ //var s_BaseAddress = s_Lod.BoneShortNameArrayPartTransforms.BaseAddress;
+ // s_ChunkReader.Seek((long)s_BaseAddress, SeekOrigin.Begin);
+
+ //var l_MatrixTransform = new Matrix44(s_ChunkReader);
+
+ //var s_Transform = new RimeLib.Frostbite.Core.
+ //s_SceneBuilder.AddRigidMesh(s_Mesh, l_MatrixTransform.ToMatrix4x4());
+
+ // Create GLTF mesh
+ // s_Model.CreateMesh(s_Mesh);
+ }
+ }
+
+ //foreach (var s_Mesh in s_Model.LogicalMeshes)
+ // s_Model.UseScene("default").CreateNode().WithMesh(s_Mesh);
+
+ //var s_ModelPath = Path.Join(p_Options?.OutputPath ?? "./", s_MeshSetLayout.Name.Object);
+ //var s_ModelDirectory = Path.GetDirectoryName(s_ModelPath);
+
+ //Directory.CreateDirectory(s_ModelDirectory);
+
+ //s_Model.SaveGLTF(s_ModelPath, new WriteSettings() { JsonIndented = true });
+ //var s_Json = s_Model.GetJsonPreview();
+ //p_Writer.WriteLine(s_Json);
+ }
+
+ s_Model.Save(p_Writer.BaseStream);
+ }
+ }
+}
diff --git a/RimeLib.Mesh.Frostbite2_0/MeshSetLoader.cs b/RimeLib.Mesh.Frostbite2_0/MeshSetLoader.cs
index de1fac64d..b476b6797 100644
--- a/RimeLib.Mesh.Frostbite2_0/MeshSetLoader.cs
+++ b/RimeLib.Mesh.Frostbite2_0/MeshSetLoader.cs
@@ -1,5 +1,5 @@
using RimeLib.Content.Mounting;
-using RimeLib.Mesh.Frostbite;
+using RimeLib.Mesh.Frostbite2_0.Frostbite;
using System;
namespace RimeLib.Mesh.Frostbite2_0
diff --git a/RimeLib.Mesh.Frostbite2_0/RimeLib.Mesh.Frostbite2_0.csproj b/RimeLib.Mesh.Frostbite2_0/RimeLib.Mesh.Frostbite2_0.csproj
index 5cd36c50e..6db3bedf8 100644
--- a/RimeLib.Mesh.Frostbite2_0/RimeLib.Mesh.Frostbite2_0.csproj
+++ b/RimeLib.Mesh.Frostbite2_0/RimeLib.Mesh.Frostbite2_0.csproj
@@ -22,10 +22,12 @@
-
+
+
+
diff --git a/RimeLib.Mesh/Frostbite/Fb2/MeshSubsetCategory.cs b/RimeLib.Mesh/Frostbite/Fb2/MeshSubsetCategory.cs
deleted file mode 100644
index 57b6d341b..000000000
--- a/RimeLib.Mesh/Frostbite/Fb2/MeshSubsetCategory.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace RimeLib.Mesh.Frostbite.Fb2
-{
- public enum MeshSubsetCategory
- {
- Opaque = 0x0,
- Transparent = 0x1,
- TransparentDecal = 0x2,
- ZOnly = 0x3,
- Count = 0x4
- }
-}
diff --git a/RimeLib.Mesh/Frostbite/MeshLayout.cs b/RimeLib.Mesh/Frostbite/MeshLayout.cs
new file mode 100644
index 000000000..9ced2e7f1
--- /dev/null
+++ b/RimeLib.Mesh/Frostbite/MeshLayout.cs
@@ -0,0 +1,19 @@
+using RimeLib.Frostbite;
+using RimeLib.IO;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace RimeLib.Mesh.Frostbite
+{
+ public abstract class MeshLayout : IFbSerializable
+ {
+ public abstract void Deserialize(RimeReader p_Reader);
+ public abstract void Deserialize(byte[] p_Data);
+ public abstract bool Serialize(RimeWriter p_Writer);
+ public abstract bool Serialize([NotNullWhen(true)] out byte[]? p_Data);
+ }
+}
diff --git a/RimeLib.Mesh/Frostbite/MeshSetLayout.cs b/RimeLib.Mesh/Frostbite/MeshSetLayout.cs
new file mode 100644
index 000000000..11b33b4ce
--- /dev/null
+++ b/RimeLib.Mesh/Frostbite/MeshSetLayout.cs
@@ -0,0 +1,19 @@
+using RimeLib.Frostbite;
+using RimeLib.IO;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace RimeLib.Mesh.Frostbite
+{
+ public abstract class MeshSetLayout : IFbSerializable
+ {
+ public abstract void Deserialize(RimeReader p_Reader);
+ public abstract void Deserialize(byte[] p_Data);
+ public abstract bool Serialize(RimeWriter p_Writer);
+ public abstract bool Serialize([NotNullWhen(true)] out byte[]? p_Data);
+ }
+}
diff --git a/RimeLib.Mesh/Frostbite/MeshSubset.cs b/RimeLib.Mesh/Frostbite/MeshSubset.cs
new file mode 100644
index 000000000..7958ef97f
--- /dev/null
+++ b/RimeLib.Mesh/Frostbite/MeshSubset.cs
@@ -0,0 +1,14 @@
+using RimeLib.Frostbite;
+using RimeLib.IO;
+using System.Diagnostics.CodeAnalysis;
+
+namespace RimeLib.Mesh.Frostbite
+{
+ public abstract class MeshSubset : IFbSerializable
+ {
+ public abstract void Deserialize(RimeReader p_Reader);
+ public abstract void Deserialize(byte[] p_Data);
+ public abstract bool Serialize(RimeWriter p_Writer);
+ public abstract bool Serialize([NotNullWhen(true)] out byte[]? p_Data);
+ }
+}
diff --git a/RimeLib.Mesh/IMeshConverter.cs b/RimeLib.Mesh/IMeshConverter.cs
new file mode 100644
index 000000000..7fc93b8c5
--- /dev/null
+++ b/RimeLib.Mesh/IMeshConverter.cs
@@ -0,0 +1,14 @@
+using RimeLib.Content.Mounting;
+using RimeLib.IO;
+
+namespace RimeLib.Mesh
+{
+ public interface IMeshConverter : IEngineInterface
+ {
+ public void ConvertToText(IResourceObject p_Resource, IEngineMounter p_Mounter, RimeWriter p_Writer);
+ public void ConvertToObj(IResourceObject p_Resource, IEngineMounter p_Mounter, RimeWriter p_Writer);
+ public void ConvertToBlender(IResourceObject p_Resource, IEngineMounter p_Mounter, RimeWriter p_Writer);
+ public void ConvertToGltf(IResourceObject p_Resource, IEngineMounter p_Mounter, RimeWriter p_Writer);
+ public void ConvertToCollada(IResourceObject p_Resource, IEngineMounter p_Mounter, RimeWriter p_Writer);
+ }
+}
diff --git a/RimeLib.Mesh/RimeMesh.cs b/RimeLib.Mesh/RimeMesh.cs
index cdc010356..29e106f8a 100644
--- a/RimeLib.Mesh/RimeMesh.cs
+++ b/RimeLib.Mesh/RimeMesh.cs
@@ -1,10 +1,6 @@
-using RimeLib.Mesh.Frostbite;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.Collections.Generic;
using fb;
+using RimeLib.Mesh.Frostbite;
namespace RimeLib.Mesh
{
diff --git a/RimeLibLite.sln b/RimeLibLite.sln
index b9eb2f373..aac9d6b16 100644
--- a/RimeLibLite.sln
+++ b/RimeLibLite.sln
@@ -99,175 +99,355 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AntLayoutDumper", "Utils\An
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AntGenericDataInfo", "Utils\AntGenericDataInfo\AntGenericDataInfo.csproj", "{2C13B391-69F9-4CD9-B8E9-C184AF50BBF1}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColladaSharp", "External\ColladaSharp\ColladaSharp.csproj", "{AB4356F6-CE6F-4709-8BE0-037BC8703ADE}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
+ Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {8C508EE5-C3B7-41BD-B6F1-1F731950F130}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {8C508EE5-C3B7-41BD-B6F1-1F731950F130}.Debug|Any CPU.Build.0 = Debug|x64
{8C508EE5-C3B7-41BD-B6F1-1F731950F130}.Debug|x64.ActiveCfg = Debug|x64
{8C508EE5-C3B7-41BD-B6F1-1F731950F130}.Debug|x64.Build.0 = Debug|x64
+ {8C508EE5-C3B7-41BD-B6F1-1F731950F130}.Release|Any CPU.ActiveCfg = Release|x64
+ {8C508EE5-C3B7-41BD-B6F1-1F731950F130}.Release|Any CPU.Build.0 = Release|x64
{8C508EE5-C3B7-41BD-B6F1-1F731950F130}.Release|x64.ActiveCfg = Release|x64
{8C508EE5-C3B7-41BD-B6F1-1F731950F130}.Release|x64.Build.0 = Release|x64
+ {5CEB7783-5DED-4515-B1E3-CA076F70D9C7}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {5CEB7783-5DED-4515-B1E3-CA076F70D9C7}.Debug|Any CPU.Build.0 = Debug|x64
{5CEB7783-5DED-4515-B1E3-CA076F70D9C7}.Debug|x64.ActiveCfg = Debug|x64
{5CEB7783-5DED-4515-B1E3-CA076F70D9C7}.Debug|x64.Build.0 = Debug|x64
+ {5CEB7783-5DED-4515-B1E3-CA076F70D9C7}.Release|Any CPU.ActiveCfg = Release|x64
+ {5CEB7783-5DED-4515-B1E3-CA076F70D9C7}.Release|Any CPU.Build.0 = Release|x64
{5CEB7783-5DED-4515-B1E3-CA076F70D9C7}.Release|x64.ActiveCfg = Release|x64
{5CEB7783-5DED-4515-B1E3-CA076F70D9C7}.Release|x64.Build.0 = Release|x64
+ {D17B9F4C-3664-4947-808A-0E57AC5A9339}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {D17B9F4C-3664-4947-808A-0E57AC5A9339}.Debug|Any CPU.Build.0 = Debug|x64
{D17B9F4C-3664-4947-808A-0E57AC5A9339}.Debug|x64.ActiveCfg = Debug|x64
{D17B9F4C-3664-4947-808A-0E57AC5A9339}.Debug|x64.Build.0 = Debug|x64
+ {D17B9F4C-3664-4947-808A-0E57AC5A9339}.Release|Any CPU.ActiveCfg = Release|x64
+ {D17B9F4C-3664-4947-808A-0E57AC5A9339}.Release|Any CPU.Build.0 = Release|x64
{D17B9F4C-3664-4947-808A-0E57AC5A9339}.Release|x64.ActiveCfg = Release|x64
{D17B9F4C-3664-4947-808A-0E57AC5A9339}.Release|x64.Build.0 = Release|x64
+ {4D596497-B3A1-4143-BE4B-D3D9DE3AF340}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {4D596497-B3A1-4143-BE4B-D3D9DE3AF340}.Debug|Any CPU.Build.0 = Debug|x64
{4D596497-B3A1-4143-BE4B-D3D9DE3AF340}.Debug|x64.ActiveCfg = Debug|x64
{4D596497-B3A1-4143-BE4B-D3D9DE3AF340}.Debug|x64.Build.0 = Debug|x64
+ {4D596497-B3A1-4143-BE4B-D3D9DE3AF340}.Release|Any CPU.ActiveCfg = Release|x64
+ {4D596497-B3A1-4143-BE4B-D3D9DE3AF340}.Release|Any CPU.Build.0 = Release|x64
{4D596497-B3A1-4143-BE4B-D3D9DE3AF340}.Release|x64.ActiveCfg = Release|x64
{4D596497-B3A1-4143-BE4B-D3D9DE3AF340}.Release|x64.Build.0 = Release|x64
+ {073FD311-02CA-4F15-BE36-20682C2C818E}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {073FD311-02CA-4F15-BE36-20682C2C818E}.Debug|Any CPU.Build.0 = Debug|x64
{073FD311-02CA-4F15-BE36-20682C2C818E}.Debug|x64.ActiveCfg = Debug|x64
{073FD311-02CA-4F15-BE36-20682C2C818E}.Debug|x64.Build.0 = Debug|x64
+ {073FD311-02CA-4F15-BE36-20682C2C818E}.Release|Any CPU.ActiveCfg = Release|x64
+ {073FD311-02CA-4F15-BE36-20682C2C818E}.Release|Any CPU.Build.0 = Release|x64
{073FD311-02CA-4F15-BE36-20682C2C818E}.Release|x64.ActiveCfg = Release|x64
{073FD311-02CA-4F15-BE36-20682C2C818E}.Release|x64.Build.0 = Release|x64
+ {A06C7A0E-7306-4A88-9AC9-D14BF39C6BA5}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {A06C7A0E-7306-4A88-9AC9-D14BF39C6BA5}.Debug|Any CPU.Build.0 = Debug|x64
{A06C7A0E-7306-4A88-9AC9-D14BF39C6BA5}.Debug|x64.ActiveCfg = Debug|x64
{A06C7A0E-7306-4A88-9AC9-D14BF39C6BA5}.Debug|x64.Build.0 = Debug|x64
+ {A06C7A0E-7306-4A88-9AC9-D14BF39C6BA5}.Release|Any CPU.ActiveCfg = Release|x64
+ {A06C7A0E-7306-4A88-9AC9-D14BF39C6BA5}.Release|Any CPU.Build.0 = Release|x64
{A06C7A0E-7306-4A88-9AC9-D14BF39C6BA5}.Release|x64.ActiveCfg = Release|x64
{A06C7A0E-7306-4A88-9AC9-D14BF39C6BA5}.Release|x64.Build.0 = Release|x64
+ {F77060AC-0B35-4126-AF64-602C572E375E}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {F77060AC-0B35-4126-AF64-602C572E375E}.Debug|Any CPU.Build.0 = Debug|x64
{F77060AC-0B35-4126-AF64-602C572E375E}.Debug|x64.ActiveCfg = Debug|x64
{F77060AC-0B35-4126-AF64-602C572E375E}.Debug|x64.Build.0 = Debug|x64
+ {F77060AC-0B35-4126-AF64-602C572E375E}.Release|Any CPU.ActiveCfg = Release|x64
+ {F77060AC-0B35-4126-AF64-602C572E375E}.Release|Any CPU.Build.0 = Release|x64
{F77060AC-0B35-4126-AF64-602C572E375E}.Release|x64.ActiveCfg = Release|x64
{F77060AC-0B35-4126-AF64-602C572E375E}.Release|x64.Build.0 = Release|x64
+ {03D9E45E-622D-4B89-9C3C-7FBE41199779}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {03D9E45E-622D-4B89-9C3C-7FBE41199779}.Debug|Any CPU.Build.0 = Debug|x64
{03D9E45E-622D-4B89-9C3C-7FBE41199779}.Debug|x64.ActiveCfg = Debug|x64
{03D9E45E-622D-4B89-9C3C-7FBE41199779}.Debug|x64.Build.0 = Debug|x64
+ {03D9E45E-622D-4B89-9C3C-7FBE41199779}.Release|Any CPU.ActiveCfg = Release|x64
+ {03D9E45E-622D-4B89-9C3C-7FBE41199779}.Release|Any CPU.Build.0 = Release|x64
{03D9E45E-622D-4B89-9C3C-7FBE41199779}.Release|x64.ActiveCfg = Release|x64
{03D9E45E-622D-4B89-9C3C-7FBE41199779}.Release|x64.Build.0 = Release|x64
+ {52F62CE8-2F07-4482-A89E-22957CE4D94E}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {52F62CE8-2F07-4482-A89E-22957CE4D94E}.Debug|Any CPU.Build.0 = Debug|x64
{52F62CE8-2F07-4482-A89E-22957CE4D94E}.Debug|x64.ActiveCfg = Debug|x64
{52F62CE8-2F07-4482-A89E-22957CE4D94E}.Debug|x64.Build.0 = Debug|x64
+ {52F62CE8-2F07-4482-A89E-22957CE4D94E}.Release|Any CPU.ActiveCfg = Release|x64
+ {52F62CE8-2F07-4482-A89E-22957CE4D94E}.Release|Any CPU.Build.0 = Release|x64
{52F62CE8-2F07-4482-A89E-22957CE4D94E}.Release|x64.ActiveCfg = Release|x64
{52F62CE8-2F07-4482-A89E-22957CE4D94E}.Release|x64.Build.0 = Release|x64
+ {5686AEEE-E8E7-4AC8-8B86-80485F90D69A}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {5686AEEE-E8E7-4AC8-8B86-80485F90D69A}.Debug|Any CPU.Build.0 = Debug|x64
{5686AEEE-E8E7-4AC8-8B86-80485F90D69A}.Debug|x64.ActiveCfg = Debug|x64
{5686AEEE-E8E7-4AC8-8B86-80485F90D69A}.Debug|x64.Build.0 = Debug|x64
+ {5686AEEE-E8E7-4AC8-8B86-80485F90D69A}.Release|Any CPU.ActiveCfg = Release|x64
+ {5686AEEE-E8E7-4AC8-8B86-80485F90D69A}.Release|Any CPU.Build.0 = Release|x64
{5686AEEE-E8E7-4AC8-8B86-80485F90D69A}.Release|x64.ActiveCfg = Release|x64
{5686AEEE-E8E7-4AC8-8B86-80485F90D69A}.Release|x64.Build.0 = Release|x64
+ {C915B4F0-D809-4C29-B115-D519EA1F60BC}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {C915B4F0-D809-4C29-B115-D519EA1F60BC}.Debug|Any CPU.Build.0 = Debug|x64
{C915B4F0-D809-4C29-B115-D519EA1F60BC}.Debug|x64.ActiveCfg = Debug|x64
{C915B4F0-D809-4C29-B115-D519EA1F60BC}.Debug|x64.Build.0 = Debug|x64
+ {C915B4F0-D809-4C29-B115-D519EA1F60BC}.Release|Any CPU.ActiveCfg = Release|x64
+ {C915B4F0-D809-4C29-B115-D519EA1F60BC}.Release|Any CPU.Build.0 = Release|x64
{C915B4F0-D809-4C29-B115-D519EA1F60BC}.Release|x64.ActiveCfg = Release|x64
{C915B4F0-D809-4C29-B115-D519EA1F60BC}.Release|x64.Build.0 = Release|x64
+ {0FA1472E-B14C-4675-B770-F386F952E746}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {0FA1472E-B14C-4675-B770-F386F952E746}.Debug|Any CPU.Build.0 = Debug|x64
{0FA1472E-B14C-4675-B770-F386F952E746}.Debug|x64.ActiveCfg = Debug|x64
{0FA1472E-B14C-4675-B770-F386F952E746}.Debug|x64.Build.0 = Debug|x64
+ {0FA1472E-B14C-4675-B770-F386F952E746}.Release|Any CPU.ActiveCfg = Release|x64
+ {0FA1472E-B14C-4675-B770-F386F952E746}.Release|Any CPU.Build.0 = Release|x64
{0FA1472E-B14C-4675-B770-F386F952E746}.Release|x64.ActiveCfg = Release|x64
{0FA1472E-B14C-4675-B770-F386F952E746}.Release|x64.Build.0 = Release|x64
+ {E986DA08-C00F-4C67-9F7A-CBAC0812C6D0}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {E986DA08-C00F-4C67-9F7A-CBAC0812C6D0}.Debug|Any CPU.Build.0 = Debug|x64
{E986DA08-C00F-4C67-9F7A-CBAC0812C6D0}.Debug|x64.ActiveCfg = Debug|x64
{E986DA08-C00F-4C67-9F7A-CBAC0812C6D0}.Debug|x64.Build.0 = Debug|x64
+ {E986DA08-C00F-4C67-9F7A-CBAC0812C6D0}.Release|Any CPU.ActiveCfg = Release|x64
+ {E986DA08-C00F-4C67-9F7A-CBAC0812C6D0}.Release|Any CPU.Build.0 = Release|x64
{E986DA08-C00F-4C67-9F7A-CBAC0812C6D0}.Release|x64.ActiveCfg = Release|x64
{E986DA08-C00F-4C67-9F7A-CBAC0812C6D0}.Release|x64.Build.0 = Release|x64
+ {4C2C1C61-6FD4-47A4-8C2D-D934FF3122F3}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {4C2C1C61-6FD4-47A4-8C2D-D934FF3122F3}.Debug|Any CPU.Build.0 = Debug|x64
{4C2C1C61-6FD4-47A4-8C2D-D934FF3122F3}.Debug|x64.ActiveCfg = Debug|x64
{4C2C1C61-6FD4-47A4-8C2D-D934FF3122F3}.Debug|x64.Build.0 = Debug|x64
+ {4C2C1C61-6FD4-47A4-8C2D-D934FF3122F3}.Release|Any CPU.ActiveCfg = Release|x64
+ {4C2C1C61-6FD4-47A4-8C2D-D934FF3122F3}.Release|Any CPU.Build.0 = Release|x64
{4C2C1C61-6FD4-47A4-8C2D-D934FF3122F3}.Release|x64.ActiveCfg = Release|x64
{4C2C1C61-6FD4-47A4-8C2D-D934FF3122F3}.Release|x64.Build.0 = Release|x64
+ {425A4256-28A7-4A4D-A536-09A7FDEBB73D}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {425A4256-28A7-4A4D-A536-09A7FDEBB73D}.Debug|Any CPU.Build.0 = Debug|x64
{425A4256-28A7-4A4D-A536-09A7FDEBB73D}.Debug|x64.ActiveCfg = Debug|x64
{425A4256-28A7-4A4D-A536-09A7FDEBB73D}.Debug|x64.Build.0 = Debug|x64
+ {425A4256-28A7-4A4D-A536-09A7FDEBB73D}.Release|Any CPU.ActiveCfg = Release|x64
+ {425A4256-28A7-4A4D-A536-09A7FDEBB73D}.Release|Any CPU.Build.0 = Release|x64
{425A4256-28A7-4A4D-A536-09A7FDEBB73D}.Release|x64.ActiveCfg = Release|x64
{425A4256-28A7-4A4D-A536-09A7FDEBB73D}.Release|x64.Build.0 = Release|x64
+ {DF1C5A8D-CC8E-4202-B730-90A5EA0C5D64}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {DF1C5A8D-CC8E-4202-B730-90A5EA0C5D64}.Debug|Any CPU.Build.0 = Debug|x64
{DF1C5A8D-CC8E-4202-B730-90A5EA0C5D64}.Debug|x64.ActiveCfg = Debug|x64
{DF1C5A8D-CC8E-4202-B730-90A5EA0C5D64}.Debug|x64.Build.0 = Debug|x64
+ {DF1C5A8D-CC8E-4202-B730-90A5EA0C5D64}.Release|Any CPU.ActiveCfg = Release|x64
+ {DF1C5A8D-CC8E-4202-B730-90A5EA0C5D64}.Release|Any CPU.Build.0 = Release|x64
{DF1C5A8D-CC8E-4202-B730-90A5EA0C5D64}.Release|x64.ActiveCfg = Release|x64
{DF1C5A8D-CC8E-4202-B730-90A5EA0C5D64}.Release|x64.Build.0 = Release|x64
+ {2DEA01DE-F865-4151-B4BF-1197F14F48C5}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {2DEA01DE-F865-4151-B4BF-1197F14F48C5}.Debug|Any CPU.Build.0 = Debug|x64
{2DEA01DE-F865-4151-B4BF-1197F14F48C5}.Debug|x64.ActiveCfg = Debug|x64
{2DEA01DE-F865-4151-B4BF-1197F14F48C5}.Debug|x64.Build.0 = Debug|x64
+ {2DEA01DE-F865-4151-B4BF-1197F14F48C5}.Release|Any CPU.ActiveCfg = Release|x64
+ {2DEA01DE-F865-4151-B4BF-1197F14F48C5}.Release|Any CPU.Build.0 = Release|x64
{2DEA01DE-F865-4151-B4BF-1197F14F48C5}.Release|x64.ActiveCfg = Release|x64
{2DEA01DE-F865-4151-B4BF-1197F14F48C5}.Release|x64.Build.0 = Release|x64
+ {7ECC05E2-9F9C-44A2-8648-5306FA72670D}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {7ECC05E2-9F9C-44A2-8648-5306FA72670D}.Debug|Any CPU.Build.0 = Debug|x64
{7ECC05E2-9F9C-44A2-8648-5306FA72670D}.Debug|x64.ActiveCfg = Debug|x64
{7ECC05E2-9F9C-44A2-8648-5306FA72670D}.Debug|x64.Build.0 = Debug|x64
+ {7ECC05E2-9F9C-44A2-8648-5306FA72670D}.Release|Any CPU.ActiveCfg = Release|x64
+ {7ECC05E2-9F9C-44A2-8648-5306FA72670D}.Release|Any CPU.Build.0 = Release|x64
{7ECC05E2-9F9C-44A2-8648-5306FA72670D}.Release|x64.ActiveCfg = Release|x64
{7ECC05E2-9F9C-44A2-8648-5306FA72670D}.Release|x64.Build.0 = Release|x64
+ {17A0AD07-E18D-4CD2-97B9-4A77E1958BEF}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {17A0AD07-E18D-4CD2-97B9-4A77E1958BEF}.Debug|Any CPU.Build.0 = Debug|x64
{17A0AD07-E18D-4CD2-97B9-4A77E1958BEF}.Debug|x64.ActiveCfg = Debug|x64
{17A0AD07-E18D-4CD2-97B9-4A77E1958BEF}.Debug|x64.Build.0 = Debug|x64
+ {17A0AD07-E18D-4CD2-97B9-4A77E1958BEF}.Release|Any CPU.ActiveCfg = Release|x64
+ {17A0AD07-E18D-4CD2-97B9-4A77E1958BEF}.Release|Any CPU.Build.0 = Release|x64
{17A0AD07-E18D-4CD2-97B9-4A77E1958BEF}.Release|x64.ActiveCfg = Release|x64
{17A0AD07-E18D-4CD2-97B9-4A77E1958BEF}.Release|x64.Build.0 = Release|x64
+ {6C00EAF2-CD94-40B2-B60E-B2E921C36F16}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {6C00EAF2-CD94-40B2-B60E-B2E921C36F16}.Debug|Any CPU.Build.0 = Debug|x64
{6C00EAF2-CD94-40B2-B60E-B2E921C36F16}.Debug|x64.ActiveCfg = Debug|x64
{6C00EAF2-CD94-40B2-B60E-B2E921C36F16}.Debug|x64.Build.0 = Debug|x64
+ {6C00EAF2-CD94-40B2-B60E-B2E921C36F16}.Release|Any CPU.ActiveCfg = Release|x64
+ {6C00EAF2-CD94-40B2-B60E-B2E921C36F16}.Release|Any CPU.Build.0 = Release|x64
{6C00EAF2-CD94-40B2-B60E-B2E921C36F16}.Release|x64.ActiveCfg = Release|x64
{6C00EAF2-CD94-40B2-B60E-B2E921C36F16}.Release|x64.Build.0 = Release|x64
+ {2F3DB5DC-0F2D-4729-AB49-805CA1612B75}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {2F3DB5DC-0F2D-4729-AB49-805CA1612B75}.Debug|Any CPU.Build.0 = Debug|x64
{2F3DB5DC-0F2D-4729-AB49-805CA1612B75}.Debug|x64.ActiveCfg = Debug|x64
{2F3DB5DC-0F2D-4729-AB49-805CA1612B75}.Debug|x64.Build.0 = Debug|x64
+ {2F3DB5DC-0F2D-4729-AB49-805CA1612B75}.Release|Any CPU.ActiveCfg = Release|x64
+ {2F3DB5DC-0F2D-4729-AB49-805CA1612B75}.Release|Any CPU.Build.0 = Release|x64
{2F3DB5DC-0F2D-4729-AB49-805CA1612B75}.Release|x64.ActiveCfg = Release|x64
{2F3DB5DC-0F2D-4729-AB49-805CA1612B75}.Release|x64.Build.0 = Release|x64
+ {185B27FF-F9A8-4882-A984-08CC4397E60A}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {185B27FF-F9A8-4882-A984-08CC4397E60A}.Debug|Any CPU.Build.0 = Debug|x64
{185B27FF-F9A8-4882-A984-08CC4397E60A}.Debug|x64.ActiveCfg = Debug|x64
{185B27FF-F9A8-4882-A984-08CC4397E60A}.Debug|x64.Build.0 = Debug|x64
+ {185B27FF-F9A8-4882-A984-08CC4397E60A}.Release|Any CPU.ActiveCfg = Release|x64
+ {185B27FF-F9A8-4882-A984-08CC4397E60A}.Release|Any CPU.Build.0 = Release|x64
{185B27FF-F9A8-4882-A984-08CC4397E60A}.Release|x64.ActiveCfg = Release|x64
{185B27FF-F9A8-4882-A984-08CC4397E60A}.Release|x64.Build.0 = Release|x64
+ {BF6CA921-D80D-4A1E-B1E8-1C88ACA073B0}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {BF6CA921-D80D-4A1E-B1E8-1C88ACA073B0}.Debug|Any CPU.Build.0 = Debug|x64
{BF6CA921-D80D-4A1E-B1E8-1C88ACA073B0}.Debug|x64.ActiveCfg = Debug|x64
{BF6CA921-D80D-4A1E-B1E8-1C88ACA073B0}.Debug|x64.Build.0 = Debug|x64
+ {BF6CA921-D80D-4A1E-B1E8-1C88ACA073B0}.Release|Any CPU.ActiveCfg = Release|x64
+ {BF6CA921-D80D-4A1E-B1E8-1C88ACA073B0}.Release|Any CPU.Build.0 = Release|x64
{BF6CA921-D80D-4A1E-B1E8-1C88ACA073B0}.Release|x64.ActiveCfg = Release|x64
{BF6CA921-D80D-4A1E-B1E8-1C88ACA073B0}.Release|x64.Build.0 = Release|x64
+ {47AAF1D6-E1D2-4924-8E61-956E9F60751D}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {47AAF1D6-E1D2-4924-8E61-956E9F60751D}.Debug|Any CPU.Build.0 = Debug|x64
{47AAF1D6-E1D2-4924-8E61-956E9F60751D}.Debug|x64.ActiveCfg = Debug|x64
{47AAF1D6-E1D2-4924-8E61-956E9F60751D}.Debug|x64.Build.0 = Debug|x64
+ {47AAF1D6-E1D2-4924-8E61-956E9F60751D}.Release|Any CPU.ActiveCfg = Release|x64
+ {47AAF1D6-E1D2-4924-8E61-956E9F60751D}.Release|Any CPU.Build.0 = Release|x64
{47AAF1D6-E1D2-4924-8E61-956E9F60751D}.Release|x64.ActiveCfg = Release|x64
{47AAF1D6-E1D2-4924-8E61-956E9F60751D}.Release|x64.Build.0 = Release|x64
+ {2853FEF7-3B3A-4581-8F0A-32F8A854097A}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {2853FEF7-3B3A-4581-8F0A-32F8A854097A}.Debug|Any CPU.Build.0 = Debug|x64
{2853FEF7-3B3A-4581-8F0A-32F8A854097A}.Debug|x64.ActiveCfg = Debug|x64
{2853FEF7-3B3A-4581-8F0A-32F8A854097A}.Debug|x64.Build.0 = Debug|x64
+ {2853FEF7-3B3A-4581-8F0A-32F8A854097A}.Release|Any CPU.ActiveCfg = Release|x64
+ {2853FEF7-3B3A-4581-8F0A-32F8A854097A}.Release|Any CPU.Build.0 = Release|x64
{2853FEF7-3B3A-4581-8F0A-32F8A854097A}.Release|x64.ActiveCfg = Release|x64
{2853FEF7-3B3A-4581-8F0A-32F8A854097A}.Release|x64.Build.0 = Release|x64
+ {8C398ED5-0C36-483D-951A-025A32D81437}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {8C398ED5-0C36-483D-951A-025A32D81437}.Debug|Any CPU.Build.0 = Debug|x64
{8C398ED5-0C36-483D-951A-025A32D81437}.Debug|x64.ActiveCfg = Debug|x64
{8C398ED5-0C36-483D-951A-025A32D81437}.Debug|x64.Build.0 = Debug|x64
+ {8C398ED5-0C36-483D-951A-025A32D81437}.Release|Any CPU.ActiveCfg = Release|x64
+ {8C398ED5-0C36-483D-951A-025A32D81437}.Release|Any CPU.Build.0 = Release|x64
{8C398ED5-0C36-483D-951A-025A32D81437}.Release|x64.ActiveCfg = Release|x64
{8C398ED5-0C36-483D-951A-025A32D81437}.Release|x64.Build.0 = Release|x64
+ {A0B4C70A-C749-4FF4-BC90-381820A80685}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {A0B4C70A-C749-4FF4-BC90-381820A80685}.Debug|Any CPU.Build.0 = Debug|x64
{A0B4C70A-C749-4FF4-BC90-381820A80685}.Debug|x64.ActiveCfg = Debug|x64
{A0B4C70A-C749-4FF4-BC90-381820A80685}.Debug|x64.Build.0 = Debug|x64
+ {A0B4C70A-C749-4FF4-BC90-381820A80685}.Release|Any CPU.ActiveCfg = Release|x64
+ {A0B4C70A-C749-4FF4-BC90-381820A80685}.Release|Any CPU.Build.0 = Release|x64
{A0B4C70A-C749-4FF4-BC90-381820A80685}.Release|x64.ActiveCfg = Release|x64
{A0B4C70A-C749-4FF4-BC90-381820A80685}.Release|x64.Build.0 = Release|x64
+ {D8E0673D-5AC8-406E-8540-1C4AD08F8E5A}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {D8E0673D-5AC8-406E-8540-1C4AD08F8E5A}.Debug|Any CPU.Build.0 = Debug|x64
{D8E0673D-5AC8-406E-8540-1C4AD08F8E5A}.Debug|x64.ActiveCfg = Debug|x64
{D8E0673D-5AC8-406E-8540-1C4AD08F8E5A}.Debug|x64.Build.0 = Debug|x64
+ {D8E0673D-5AC8-406E-8540-1C4AD08F8E5A}.Release|Any CPU.ActiveCfg = Release|x64
+ {D8E0673D-5AC8-406E-8540-1C4AD08F8E5A}.Release|Any CPU.Build.0 = Release|x64
{D8E0673D-5AC8-406E-8540-1C4AD08F8E5A}.Release|x64.ActiveCfg = Release|x64
{D8E0673D-5AC8-406E-8540-1C4AD08F8E5A}.Release|x64.Build.0 = Release|x64
+ {ABE866C9-682D-4A14-B800-24EA33B33AC1}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {ABE866C9-682D-4A14-B800-24EA33B33AC1}.Debug|Any CPU.Build.0 = Debug|x64
{ABE866C9-682D-4A14-B800-24EA33B33AC1}.Debug|x64.ActiveCfg = Debug|x64
{ABE866C9-682D-4A14-B800-24EA33B33AC1}.Debug|x64.Build.0 = Debug|x64
+ {ABE866C9-682D-4A14-B800-24EA33B33AC1}.Release|Any CPU.ActiveCfg = Release|x64
+ {ABE866C9-682D-4A14-B800-24EA33B33AC1}.Release|Any CPU.Build.0 = Release|x64
{ABE866C9-682D-4A14-B800-24EA33B33AC1}.Release|x64.ActiveCfg = Release|x64
{ABE866C9-682D-4A14-B800-24EA33B33AC1}.Release|x64.Build.0 = Release|x64
+ {CFE9A65F-DF7C-4E2C-978A-2B685ADFD304}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {CFE9A65F-DF7C-4E2C-978A-2B685ADFD304}.Debug|Any CPU.Build.0 = Debug|x64
{CFE9A65F-DF7C-4E2C-978A-2B685ADFD304}.Debug|x64.ActiveCfg = Debug|x64
{CFE9A65F-DF7C-4E2C-978A-2B685ADFD304}.Debug|x64.Build.0 = Debug|x64
+ {CFE9A65F-DF7C-4E2C-978A-2B685ADFD304}.Release|Any CPU.ActiveCfg = Release|x64
+ {CFE9A65F-DF7C-4E2C-978A-2B685ADFD304}.Release|Any CPU.Build.0 = Release|x64
{CFE9A65F-DF7C-4E2C-978A-2B685ADFD304}.Release|x64.ActiveCfg = Release|x64
{CFE9A65F-DF7C-4E2C-978A-2B685ADFD304}.Release|x64.Build.0 = Release|x64
+ {004E5A54-FD9E-4CE8-9D84-D05AD0876BBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {004E5A54-FD9E-4CE8-9D84-D05AD0876BBE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{004E5A54-FD9E-4CE8-9D84-D05AD0876BBE}.Debug|x64.ActiveCfg = Debug|x64
{004E5A54-FD9E-4CE8-9D84-D05AD0876BBE}.Debug|x64.Build.0 = Debug|x64
+ {004E5A54-FD9E-4CE8-9D84-D05AD0876BBE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {004E5A54-FD9E-4CE8-9D84-D05AD0876BBE}.Release|Any CPU.Build.0 = Release|Any CPU
{004E5A54-FD9E-4CE8-9D84-D05AD0876BBE}.Release|x64.ActiveCfg = Release|x64
{004E5A54-FD9E-4CE8-9D84-D05AD0876BBE}.Release|x64.Build.0 = Release|x64
+ {72AD08F6-5429-463A-9EF9-53912469BDBE}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {72AD08F6-5429-463A-9EF9-53912469BDBE}.Debug|Any CPU.Build.0 = Debug|x64
{72AD08F6-5429-463A-9EF9-53912469BDBE}.Debug|x64.ActiveCfg = Debug|x64
{72AD08F6-5429-463A-9EF9-53912469BDBE}.Debug|x64.Build.0 = Debug|x64
+ {72AD08F6-5429-463A-9EF9-53912469BDBE}.Release|Any CPU.ActiveCfg = Release|x64
+ {72AD08F6-5429-463A-9EF9-53912469BDBE}.Release|Any CPU.Build.0 = Release|x64
{72AD08F6-5429-463A-9EF9-53912469BDBE}.Release|x64.ActiveCfg = Release|x64
{72AD08F6-5429-463A-9EF9-53912469BDBE}.Release|x64.Build.0 = Release|x64
+ {9AE9BBB1-7806-4B91-AE85-4EA1FF14AFF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9AE9BBB1-7806-4B91-AE85-4EA1FF14AFF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9AE9BBB1-7806-4B91-AE85-4EA1FF14AFF3}.Debug|x64.ActiveCfg = Debug|x64
{9AE9BBB1-7806-4B91-AE85-4EA1FF14AFF3}.Debug|x64.Build.0 = Debug|x64
+ {9AE9BBB1-7806-4B91-AE85-4EA1FF14AFF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9AE9BBB1-7806-4B91-AE85-4EA1FF14AFF3}.Release|Any CPU.Build.0 = Release|Any CPU
{9AE9BBB1-7806-4B91-AE85-4EA1FF14AFF3}.Release|x64.ActiveCfg = Release|x64
{9AE9BBB1-7806-4B91-AE85-4EA1FF14AFF3}.Release|x64.Build.0 = Release|x64
+ {77A9BD12-4F63-452F-B5C5-550CD9E127E2}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {77A9BD12-4F63-452F-B5C5-550CD9E127E2}.Debug|Any CPU.Build.0 = Debug|x64
{77A9BD12-4F63-452F-B5C5-550CD9E127E2}.Debug|x64.ActiveCfg = Debug|x64
{77A9BD12-4F63-452F-B5C5-550CD9E127E2}.Debug|x64.Build.0 = Debug|x64
+ {77A9BD12-4F63-452F-B5C5-550CD9E127E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {77A9BD12-4F63-452F-B5C5-550CD9E127E2}.Release|Any CPU.Build.0 = Release|Any CPU
{77A9BD12-4F63-452F-B5C5-550CD9E127E2}.Release|x64.ActiveCfg = Release|Any CPU
{77A9BD12-4F63-452F-B5C5-550CD9E127E2}.Release|x64.Build.0 = Release|Any CPU
+ {7F6354E3-B6B1-4689-A0AB-727C3E4F68FE}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {7F6354E3-B6B1-4689-A0AB-727C3E4F68FE}.Debug|Any CPU.Build.0 = Debug|x64
{7F6354E3-B6B1-4689-A0AB-727C3E4F68FE}.Debug|x64.ActiveCfg = Debug|x64
{7F6354E3-B6B1-4689-A0AB-727C3E4F68FE}.Debug|x64.Build.0 = Debug|x64
+ {7F6354E3-B6B1-4689-A0AB-727C3E4F68FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7F6354E3-B6B1-4689-A0AB-727C3E4F68FE}.Release|Any CPU.Build.0 = Release|Any CPU
{7F6354E3-B6B1-4689-A0AB-727C3E4F68FE}.Release|x64.ActiveCfg = Release|Any CPU
{7F6354E3-B6B1-4689-A0AB-727C3E4F68FE}.Release|x64.Build.0 = Release|Any CPU
+ {C262DE1D-DA32-4FD4-B032-EEE76A6625C0}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {C262DE1D-DA32-4FD4-B032-EEE76A6625C0}.Debug|Any CPU.Build.0 = Debug|x64
{C262DE1D-DA32-4FD4-B032-EEE76A6625C0}.Debug|x64.ActiveCfg = Debug|x64
{C262DE1D-DA32-4FD4-B032-EEE76A6625C0}.Debug|x64.Build.0 = Debug|x64
+ {C262DE1D-DA32-4FD4-B032-EEE76A6625C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C262DE1D-DA32-4FD4-B032-EEE76A6625C0}.Release|Any CPU.Build.0 = Release|Any CPU
{C262DE1D-DA32-4FD4-B032-EEE76A6625C0}.Release|x64.ActiveCfg = Release|Any CPU
{C262DE1D-DA32-4FD4-B032-EEE76A6625C0}.Release|x64.Build.0 = Release|Any CPU
+ {1C204D03-F248-42F5-B01E-F8B649549870}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {1C204D03-F248-42F5-B01E-F8B649549870}.Debug|Any CPU.Build.0 = Debug|x64
{1C204D03-F248-42F5-B01E-F8B649549870}.Debug|x64.ActiveCfg = Debug|x64
{1C204D03-F248-42F5-B01E-F8B649549870}.Debug|x64.Build.0 = Debug|x64
+ {1C204D03-F248-42F5-B01E-F8B649549870}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1C204D03-F248-42F5-B01E-F8B649549870}.Release|Any CPU.Build.0 = Release|Any CPU
{1C204D03-F248-42F5-B01E-F8B649549870}.Release|x64.ActiveCfg = Release|Any CPU
{1C204D03-F248-42F5-B01E-F8B649549870}.Release|x64.Build.0 = Release|Any CPU
+ {28904B1D-642B-4FA2-9585-0D91F1C155AE}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {28904B1D-642B-4FA2-9585-0D91F1C155AE}.Debug|Any CPU.Build.0 = Debug|x64
{28904B1D-642B-4FA2-9585-0D91F1C155AE}.Debug|x64.ActiveCfg = Debug|x64
{28904B1D-642B-4FA2-9585-0D91F1C155AE}.Debug|x64.Build.0 = Debug|x64
+ {28904B1D-642B-4FA2-9585-0D91F1C155AE}.Release|Any CPU.ActiveCfg = Release|x64
+ {28904B1D-642B-4FA2-9585-0D91F1C155AE}.Release|Any CPU.Build.0 = Release|x64
{28904B1D-642B-4FA2-9585-0D91F1C155AE}.Release|x64.ActiveCfg = Release|x64
+ {512A8E82-910E-432D-8377-4C80E7EAC024}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {512A8E82-910E-432D-8377-4C80E7EAC024}.Debug|Any CPU.Build.0 = Debug|x64
{512A8E82-910E-432D-8377-4C80E7EAC024}.Debug|x64.ActiveCfg = Debug|x64
{512A8E82-910E-432D-8377-4C80E7EAC024}.Debug|x64.Build.0 = Debug|x64
+ {512A8E82-910E-432D-8377-4C80E7EAC024}.Release|Any CPU.ActiveCfg = Release|x64
+ {512A8E82-910E-432D-8377-4C80E7EAC024}.Release|Any CPU.Build.0 = Release|x64
{512A8E82-910E-432D-8377-4C80E7EAC024}.Release|x64.ActiveCfg = Release|x64
+ {AE249989-F01B-4C75-A9F9-C740B6AE4221}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {AE249989-F01B-4C75-A9F9-C740B6AE4221}.Debug|Any CPU.Build.0 = Debug|x64
{AE249989-F01B-4C75-A9F9-C740B6AE4221}.Debug|x64.ActiveCfg = Debug|x64
{AE249989-F01B-4C75-A9F9-C740B6AE4221}.Debug|x64.Build.0 = Debug|x64
+ {AE249989-F01B-4C75-A9F9-C740B6AE4221}.Release|Any CPU.ActiveCfg = Release|x64
+ {AE249989-F01B-4C75-A9F9-C740B6AE4221}.Release|Any CPU.Build.0 = Release|x64
{AE249989-F01B-4C75-A9F9-C740B6AE4221}.Release|x64.ActiveCfg = Release|x64
+ {85A3C857-CA06-4316-BFC5-2C0BCB9BF0D7}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {85A3C857-CA06-4316-BFC5-2C0BCB9BF0D7}.Debug|Any CPU.Build.0 = Debug|Win32
{85A3C857-CA06-4316-BFC5-2C0BCB9BF0D7}.Debug|x64.ActiveCfg = Debug|Win32
{85A3C857-CA06-4316-BFC5-2C0BCB9BF0D7}.Debug|x64.Build.0 = Debug|Win32
+ {85A3C857-CA06-4316-BFC5-2C0BCB9BF0D7}.Release|Any CPU.ActiveCfg = Release|Win32
+ {85A3C857-CA06-4316-BFC5-2C0BCB9BF0D7}.Release|Any CPU.Build.0 = Release|Win32
{85A3C857-CA06-4316-BFC5-2C0BCB9BF0D7}.Release|x64.ActiveCfg = Release|Win32
+ {2C13B391-69F9-4CD9-B8E9-C184AF50BBF1}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {2C13B391-69F9-4CD9-B8E9-C184AF50BBF1}.Debug|Any CPU.Build.0 = Debug|x64
{2C13B391-69F9-4CD9-B8E9-C184AF50BBF1}.Debug|x64.ActiveCfg = Debug|x64
{2C13B391-69F9-4CD9-B8E9-C184AF50BBF1}.Debug|x64.Build.0 = Debug|x64
+ {2C13B391-69F9-4CD9-B8E9-C184AF50BBF1}.Release|Any CPU.ActiveCfg = Release|x64
+ {2C13B391-69F9-4CD9-B8E9-C184AF50BBF1}.Release|Any CPU.Build.0 = Release|x64
{2C13B391-69F9-4CD9-B8E9-C184AF50BBF1}.Release|x64.ActiveCfg = Release|x64
+ {AB4356F6-CE6F-4709-8BE0-037BC8703ADE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AB4356F6-CE6F-4709-8BE0-037BC8703ADE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AB4356F6-CE6F-4709-8BE0-037BC8703ADE}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {AB4356F6-CE6F-4709-8BE0-037BC8703ADE}.Debug|x64.Build.0 = Debug|Any CPU
+ {AB4356F6-CE6F-4709-8BE0-037BC8703ADE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AB4356F6-CE6F-4709-8BE0-037BC8703ADE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AB4356F6-CE6F-4709-8BE0-037BC8703ADE}.Release|x64.ActiveCfg = Release|Any CPU
+ {AB4356F6-CE6F-4709-8BE0-037BC8703ADE}.Release|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -290,6 +470,7 @@ Global
{28904B1D-642B-4FA2-9585-0D91F1C155AE} = {42E38905-976C-4506-98AE-DC35CA1A9925}
{85A3C857-CA06-4316-BFC5-2C0BCB9BF0D7} = {42E38905-976C-4506-98AE-DC35CA1A9925}
{2C13B391-69F9-4CD9-B8E9-C184AF50BBF1} = {42E38905-976C-4506-98AE-DC35CA1A9925}
+ {AB4356F6-CE6F-4709-8BE0-037BC8703ADE} = {3F11DB22-14A7-40F2-9570-72D540C671C7}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9D2A4DE6-648D-4971-AC81-A89F21154CD0}
diff --git a/RimeLibLite/IO/EndianBinaryWriter.cs b/RimeLibLite/IO/EndianBinaryWriter.cs
index e0a245faf..ca3921b5c 100644
--- a/RimeLibLite/IO/EndianBinaryWriter.cs
+++ b/RimeLibLite/IO/EndianBinaryWriter.cs
@@ -1,5 +1,6 @@
using System;
using System.IO;
+using System.Text;
using RimeLib.IO.Conversion;
namespace RimeLib.IO
@@ -240,6 +241,12 @@ public void Write(byte[] p_Value)
WriteInternal(p_Value, 0, p_Value.Length);
}
+ public void WriteLine(string p_Value)
+ {
+ var s_Bytes = Encoding.UTF8.GetBytes(p_Value + Environment.NewLine);
+ WriteInternal(s_Bytes, 0, s_Bytes.Length);
+ }
+
///
/// Writes a portion of an array of bytes to the stream.
///
diff --git a/Utils/EbxExtractor/EbxExtractor.csproj b/Utils/EbxExtractor/EbxExtractor.csproj
index 6ab70b65c..2f6edbda7 100644
--- a/Utils/EbxExtractor/EbxExtractor.csproj
+++ b/Utils/EbxExtractor/EbxExtractor.csproj
@@ -14,7 +14,7 @@
-
+
diff --git a/Utils/EbxExtractor/Program.cs b/Utils/EbxExtractor/Program.cs
index c91d8c0c9..db0bbf9e4 100644
--- a/Utils/EbxExtractor/Program.cs
+++ b/Utils/EbxExtractor/Program.cs
@@ -15,7 +15,7 @@
using RimeLib.Frostbite.Core;
using RimeLib.IO;
using RimeLib.IO.Conversion;
-using RimeLib.Mesh.Frostbite;
+using RimeLib.Mesh.Frostbite2_0.Frostbite;
using RimeLib.Serialization;
using RimeLib.Shader.Frostbite2_0.Frostbite;
using RimeLib.Texture;
diff --git a/Utils/MeshExtractor/BlenderPyGenerator.cs b/Utils/MeshExtractor/BlenderPyGenerator.cs
index df9c3f14e..0c7aa3b15 100644
--- a/Utils/MeshExtractor/BlenderPyGenerator.cs
+++ b/Utils/MeshExtractor/BlenderPyGenerator.cs
@@ -2,7 +2,7 @@
using RimeLib.Content.Mounting;
using RimeLib.IO;
using RimeLib.Math;
-using RimeLib.Mesh.Frostbite;
+using RimeLib.Mesh.Frostbite2_0.Frostbite;
using System;
using System.Collections.Generic;
using System.IO;
diff --git a/Utils/MeshExtractor/MeshExtractor.csproj b/Utils/MeshExtractor/MeshExtractor.csproj
index 1f77554d3..a5c1ce173 100644
--- a/Utils/MeshExtractor/MeshExtractor.csproj
+++ b/Utils/MeshExtractor/MeshExtractor.csproj
@@ -9,13 +9,12 @@
-
-
+
diff --git a/Utils/MeshExtractor/Program.cs b/Utils/MeshExtractor/Program.cs
index 187c29a20..ab3701c3e 100644
--- a/Utils/MeshExtractor/Program.cs
+++ b/Utils/MeshExtractor/Program.cs
@@ -2,15 +2,12 @@
using RimeLib.Content.Mounting;
using RimeLib.Frostbite;
using RimeLib.IO;
-using RimeLib.Math;
-using RimeLib.Mesh.Frostbite;
using SharpGLTF.Geometry;
using SharpGLTF.Materials;
using SharpGLTF.Schema2;
using SharpGLTF.Geometry.VertexTypes;
using System;
using System.Collections.Generic;
-using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Threading.Tasks;
@@ -20,9 +17,9 @@
using RimeLib.Serialization.Frostbite2_0.Ebx;
using fb;
using RimeLib;
-using MeshSubsetCategory = RimeLib.Mesh.Frostbite.Fb2.MeshSubsetCategory;
-using SharpGLTF.Transforms;
using System.Text;
+using RimeLib.Mesh.Frostbite2_0.Frostbite;
+using RimeLib.Math;
namespace MeshExtractor
{
@@ -479,7 +476,7 @@ private static void ParseRigidMeshBlender(IEngineMounter p_Mounter, MeshSetLayou
Console.WriteLine($"Dumping rigid mesh ({s_LodName}) lod {s_LodIndex}");
// Debug checking to make sure assumptions are correct
- if (s_Lod.CategorySubsetIndices.Length != (int)RimeLib.Mesh.Frostbite.Fb2.MeshSubsetCategory.Count)
+ if (s_Lod.CategorySubsetIndices.Length != (int)MeshSubsetCategory.MeshSubsetCategoryCount)
throw new Exception("category subset indicies don't match the count");
// Get the data chunk
@@ -679,7 +676,7 @@ private static void ParseRigidMeshBlender(IEngineMounter p_Mounter, MeshSetLayou
}
// We only want to get the opaque meshes, TODO: Iterate through everything
- var s_Ret = s_Categories[MeshSubsetCategory.Opaque];
+ var s_Ret = s_Categories[MeshSubsetCategory.MeshSubsetCategory_Opaque];
// TODO: Hold list of subset + parsed verts + primitives
@@ -736,7 +733,7 @@ private static void ParseRigidMeshBlender(IEngineMounter p_Mounter, MeshSetLayou
.WithMetallicRoughnessShader().WithChannelParam(KnownChannel.BaseColor, s_RandomColor);
// Create a new GLTF mesh
- var s_Mesh = new MeshBuilder($"{MeshSubsetCategory.Opaque}_{s_Lod.ShortName.Object}");
+ var s_Mesh = new MeshBuilder($"{MeshSubsetCategory.MeshSubsetCategory_Opaque}_{s_Lod.ShortName.Object}");
var s_Primitive = s_Mesh.UsePrimitive(s_DebugMaterial);
var s_PrimitiveWriter = new StringBuilder();
@@ -778,7 +775,7 @@ private static void ParseRigidMeshBlender(IEngineMounter p_Mounter, MeshSetLayou
var s_Script = File.ReadAllText("Template.txt").Replace("||DATETIME||", DateTime.Now.ToString()).Replace("||NAME||", s_ObjectName).Replace("||VERTEXARRAY||", s_VertexBuilder.ToString()).Replace("||FACEARRAY||", s_PrimitiveWriter.ToString());
- File.WriteAllText($"{s_ObjectName}_lod{s_LodIndex}_{MeshSubsetCategory.Opaque}_import.py", s_Script);
+ File.WriteAllText($"{s_ObjectName}_lod{s_LodIndex}_{MeshSubsetCategory.MeshSubsetCategory_Opaque}_import.py", s_Script);
}
}
}
@@ -819,7 +816,7 @@ private static void ParseRigidMesh(IEngineMounter p_Mounter, MeshSetLayout p_Lay
Console.WriteLine($"Dumping rigid mesh ({s_LodName}) lod {s_LodIndex}");
// Debug checking to make sure assumptions are correct
- if (s_Lod.CategorySubsetIndices.Length != (int)RimeLib.Mesh.Frostbite.Fb2.MeshSubsetCategory.Count)
+ if (s_Lod.CategorySubsetIndices.Length != (int)MeshSubsetCategory.MeshSubsetCategoryCount)
throw new Exception("category subset indicies don't match the count");
// Get the data chunk
@@ -1092,7 +1089,7 @@ private static void ParseRigidMesh(IEngineMounter p_Mounter, MeshSetLayout p_Lay
}
// We only want to get the opaque meshes, TODO: Iterate through everything
- var s_Ret = s_Categories[MeshSubsetCategory.Opaque];
+ var s_Ret = s_Categories[MeshSubsetCategory.MeshSubsetCategory_Opaque];
// TODO: Hold list of subset + parsed verts + primitives
@@ -1139,7 +1136,7 @@ private static void ParseRigidMesh(IEngineMounter p_Mounter, MeshSetLayout p_Lay
.WithMetallicRoughnessShader().WithChannelParam(KnownChannel.BaseColor, s_RandomColor);
// Create a new GLTF mesh
- var s_Mesh = new MeshBuilder($"{MeshSubsetCategory.Opaque}_{s_Lod.ShortName.Object}");
+ var s_Mesh = new MeshBuilder($"{MeshSubsetCategory.MeshSubsetCategory_Opaque}_{s_Lod.ShortName.Object}");
var s_Primitive = s_Mesh.UsePrimitive(s_DebugMaterial);
// Iterate through all primitives
@@ -1202,12 +1199,14 @@ private static void ParseRigidMesh(IEngineMounter p_Mounter, MeshSetLayout p_Lay
//var s_Transform = new RimeLib.Frostbite.Core.
//s_SceneBuilder.AddRigidMesh(s_Mesh, l_MatrixTransform.ToMatrix4x4());
- s_Model.CreateMesh(s_Mesh);
+ // TODO: UNCOMMENT BELOW
+ // s_Model.CreateMesh(s_Mesh);
}
}
- foreach (var s_Mesh in s_Model.LogicalMeshes)
- s_Model.UseScene("default").CreateNode().WithMesh(s_Mesh);
+ // TODO: UNCOMMENT BELOW
+ //foreach (var s_Mesh in s_Model.LogicalMeshes)
+ // s_Model.UseScene("default").CreateNode().WithMesh(s_Mesh);
var s_ModelPath = Path.Join(p_Options?.OutputPath ?? "./", p_Layout.Name.Object);
var s_ModelDirectory = Path.GetDirectoryName(s_ModelPath);
diff --git a/Utils/RimeREPL/RimeREPL.csproj b/Utils/RimeREPL/RimeREPL.csproj
index 829076f31..ebf08d923 100644
--- a/Utils/RimeREPL/RimeREPL.csproj
+++ b/Utils/RimeREPL/RimeREPL.csproj
@@ -16,7 +16,17 @@
+
+
+
+
+
+
+
+
+
+