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 @@ + + + + + + + + + +