diff --git a/ANX.Framework.Content.Pipeline/ANX.Framework.Content.Pipeline.csproj b/ANX.Framework.Content.Pipeline/ANX.Framework.Content.Pipeline.csproj
index ef93e132..2aee3f6e 100644
--- a/ANX.Framework.Content.Pipeline/ANX.Framework.Content.Pipeline.csproj
+++ b/ANX.Framework.Content.Pipeline/ANX.Framework.Content.Pipeline.csproj
@@ -34,6 +34,11 @@
+
+
+
+
+
@@ -48,7 +53,7 @@
-
+
@@ -72,6 +77,9 @@
+
+
+
@@ -82,18 +90,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -129,6 +165,7 @@
+
diff --git a/ANX.Framework.Content.Pipeline/Audio/AudioContent.cs b/ANX.Framework.Content.Pipeline/Audio/AudioContent.cs
new file mode 100644
index 00000000..954b6521
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Audio/AudioContent.cs
@@ -0,0 +1,37 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections.ObjectModel;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Audio
+{
+ public class AudioContent : ContentItem, IDisposable
+ {
+ public ReadOnlyCollection Data { get; internal set; }
+ public TimeSpan Duration { get; internal set; }
+ [ContentSerializer]
+ public string FileName { get; internal set; }
+ public AudioFileType FileType { get; internal set; }
+ public AudioFormat Format { get; internal set; }
+ public int LoopLength { get; internal set; }
+ public int LoopStart { get; internal set; }
+
+ public void ConvertFormat(ConversionFormat formatType, ConversionQuality quality, string targetFileName)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void Dispose()
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Audio/AudioFileType.cs b/ANX.Framework.Content.Pipeline/Audio/AudioFileType.cs
new file mode 100644
index 00000000..d832b94d
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Audio/AudioFileType.cs
@@ -0,0 +1,18 @@
+#region Using Statements
+using System;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Audio
+{
+ public enum AudioFileType
+ {
+ Mp3,
+ Wav,
+ Wma,
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Audio/AudioFormat.cs b/ANX.Framework.Content.Pipeline/Audio/AudioFormat.cs
new file mode 100644
index 00000000..87975cfb
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Audio/AudioFormat.cs
@@ -0,0 +1,27 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections.ObjectModel;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Audio
+{
+ public sealed class AudioFormat
+ {
+ public int AverageBytesPerSecond { get; internal set; }
+ public int BitsPerSample { get; internal set; }
+ public int BlockAlign { get; internal set; }
+ public int ChannelCount { get; internal set; }
+ public int Format { get; internal set; }
+ public ReadOnlyCollection NativeWaveFormat { get; internal set; }
+ public int SampleRate { get; internal set; }
+
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Audio/ConversionFormat.cs b/ANX.Framework.Content.Pipeline/Audio/ConversionFormat.cs
new file mode 100644
index 00000000..274732b1
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Audio/ConversionFormat.cs
@@ -0,0 +1,19 @@
+#region Using Statements
+using System;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Audio
+{
+ public enum ConversionFormat
+ {
+ Adpcm,
+ Pcm,
+ WindowsMedia,
+ Xma,
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Audio/ConversionQuality.cs b/ANX.Framework.Content.Pipeline/Audio/ConversionQuality.cs
new file mode 100644
index 00000000..29793b6a
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Audio/ConversionQuality.cs
@@ -0,0 +1,18 @@
+#region Using Statements
+using System;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Audio
+{
+ public enum ConversionQuality
+ {
+ Low,
+ Medium,
+ Best,
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/ContentProcessor.cs b/ANX.Framework.Content.Pipeline/ContentProcessor.cs
index 10793129..620559a9 100644
--- a/ANX.Framework.Content.Pipeline/ContentProcessor.cs
+++ b/ANX.Framework.Content.Pipeline/ContentProcessor.cs
@@ -19,7 +19,7 @@ namespace ANX.Framework.Content.Pipeline
throw new NotImplementedException();
}
- public abstract TOutput Process(TInput input, ContextProcessorContext context);
+ public abstract TOutput Process(TInput input, ContentProcessorContext context);
Type IContentProcessor.InputType
{
@@ -31,7 +31,7 @@ namespace ANX.Framework.Content.Pipeline
get { throw new NotImplementedException(); }
}
- object IContentProcessor.Process(object input, ContextProcessorContext context)
+ object IContentProcessor.Process(object input, ContentProcessorContext context)
{
throw new NotImplementedException();
}
diff --git a/ANX.Framework.Content.Pipeline/ContextProcessorContext.cs b/ANX.Framework.Content.Pipeline/ContentProcessorContext.cs
similarity index 93%
rename from ANX.Framework.Content.Pipeline/ContextProcessorContext.cs
rename to ANX.Framework.Content.Pipeline/ContentProcessorContext.cs
index 0b589307..b05c54cc 100644
--- a/ANX.Framework.Content.Pipeline/ContextProcessorContext.cs
+++ b/ANX.Framework.Content.Pipeline/ContentProcessorContext.cs
@@ -13,9 +13,9 @@ using ANX.Framework.Graphics;
namespace ANX.Framework.Content.Pipeline
{
- public abstract class ContextProcessorContext
+ public abstract class ContentProcessorContext
{
- public ContextProcessorContext()
+ public ContentProcessorContext()
{
throw new NotImplementedException();
}
diff --git a/ANX.Framework.Content.Pipeline/Graphics/SkinnedMaterialContent.cs b/ANX.Framework.Content.Pipeline/Graphics/SkinnedMaterialContent.cs
new file mode 100644
index 00000000..186f1e94
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Graphics/SkinnedMaterialContent.cs
@@ -0,0 +1,71 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Graphics
+{
+ public class SkinnedMaterialContent : MaterialContent
+ {
+ public const string AlphaKey = "";
+ public const string DiffuseColorKey = "";
+ public const string EmissiveColorKey = "";
+ public const string SpecularColorKey = "";
+ public const string SpecularPowerKey = "";
+ public const string TextureKey = "";
+ public const string WeightsPerVertexKey = "";
+
+ public SkinnedMaterialContent()
+ {
+ }
+
+ public Nullable Alpha
+ {
+ get;
+ set;
+ }
+
+ public Nullable DiffuseColor
+ {
+ get;
+ set;
+ }
+
+ public Nullable EmissiveColor
+ {
+ get;
+ set;
+ }
+
+ public Nullable SpecularColor
+ {
+ get;
+ set;
+ }
+
+ public Nullable SpecularPower
+ {
+ get;
+ set;
+ }
+
+ public ExternalReference Texture
+ {
+ get;
+ set;
+ }
+
+ public Nullable WeightsPerVertex
+ {
+ get;
+ set;
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Graphics/Texture2DContent.cs b/ANX.Framework.Content.Pipeline/Graphics/Texture2DContent.cs
new file mode 100644
index 00000000..ef81d33d
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Graphics/Texture2DContent.cs
@@ -0,0 +1,34 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Graphics
+{
+ public class Texture2DContent : TextureContent
+ {
+ public Texture2DContent()
+ : base(null) //TODO: implement
+ {
+
+ }
+
+ public MipmapChain Mipmaps
+ {
+ get;
+ set;
+ }
+
+ public override void Validate(Framework.Graphics.GraphicsProfile? targetProfile)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Graphics/Texture3DContent.cs b/ANX.Framework.Content.Pipeline/Graphics/Texture3DContent.cs
new file mode 100644
index 00000000..ccb4cd3d
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Graphics/Texture3DContent.cs
@@ -0,0 +1,33 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Graphics
+{
+ public class Texture3DContent : TextureContent
+ {
+ public Texture3DContent()
+ : base(null) // TODO: implement
+ {
+
+ }
+
+ public override void GenerateMipmaps(bool overwriteExistingMipmaps)
+ {
+ throw new NotImplementedException();
+ }
+
+ public override void Validate(Framework.Graphics.GraphicsProfile? targetProfile)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Graphics/TextureCubeContent.cs b/ANX.Framework.Content.Pipeline/Graphics/TextureCubeContent.cs
new file mode 100644
index 00000000..90aab565
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Graphics/TextureCubeContent.cs
@@ -0,0 +1,28 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Graphics
+{
+ public class TextureCubeContent : TextureContent
+ {
+ public TextureCubeContent()
+ : base(null) //TODO: implement
+ {
+
+ }
+
+ public override void Validate(Framework.Graphics.GraphicsProfile? targetProfile)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Graphics/VectorConverter.cs b/ANX.Framework.Content.Pipeline/Graphics/VectorConverter.cs
new file mode 100644
index 00000000..7330cc86
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Graphics/VectorConverter.cs
@@ -0,0 +1,43 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using ANX.Framework.Graphics;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Graphics
+{
+ public static class VectorConverter
+ {
+ public static Converter GetConverter()
+ {
+ throw new NotImplementedException();
+ }
+
+ public static bool TryGetSurfaceFormat(Type vectorType, out SurfaceFormat surfaceFormat)
+ {
+ throw new NotImplementedException();
+ }
+
+ public static bool TrayGetVectorType(SurfaceFormat surfaceFormat, out Type vectorType)
+ {
+ throw new NotImplementedException();
+ }
+
+ public static bool TryGetVectorType(VertexElementFormat vertexElementFormat, out Type vectorType)
+ {
+ throw new NotImplementedException();
+ }
+
+ public static bool TryGetVertexElementFormat(Type vectorType, out VertexElementFormat vertexElementFormat)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Graphics/VertexChannelNames.cs b/ANX.Framework.Content.Pipeline/Graphics/VertexChannelNames.cs
new file mode 100644
index 00000000..98442612
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Graphics/VertexChannelNames.cs
@@ -0,0 +1,151 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using ANX.Framework.Graphics;
+using System.Text.RegularExpressions;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Graphics
+{
+ public static class VertexChannelNames
+ {
+ public static string Binormal(int usageIndex)
+ {
+ return EncodeName("BINORMAL", usageIndex);
+ }
+
+ public static string Color(int usageIndex)
+ {
+ return EncodeName("COLOR", usageIndex);
+ }
+
+ public static string DecodeBaseName(string encodedName)
+ {
+ return encodedName.TrimEnd('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
+ }
+
+ public static string DecodeUsageIndex(string encodedName)
+ {
+ string baseName = DecodeBaseName(encodedName);
+ return encodedName.Replace(baseName, "").Trim();
+ }
+
+ public static string EncodeName(string baseName, int usageIndex)
+ {
+ return String.Format("{0}{1}", baseName.ToUpperInvariant(), usageIndex);
+ }
+
+ public static string EncodeName(VertexElementUsage vertexElementUsage, int usageIndex)
+ {
+ string baseName = String.Empty;
+
+ switch (vertexElementUsage)
+ {
+ case VertexElementUsage.Binormal:
+ case VertexElementUsage.BlendIndices:
+ case VertexElementUsage.BlendWeight:
+ case VertexElementUsage.Color:
+ case VertexElementUsage.Normal:
+ case VertexElementUsage.Position:
+ case VertexElementUsage.Tangent:
+ baseName = vertexElementUsage.ToString().ToUpperInvariant();
+ break;
+ case VertexElementUsage.PointSize:
+ baseName = "PSIZE";
+ break;
+ case VertexElementUsage.TessellateFactor:
+ baseName = "TESSFACTOR";
+ break;
+ case VertexElementUsage.TextureCoordinate:
+ baseName = "TEXCOORD";
+ break;
+ }
+
+ if (!String.IsNullOrEmpty(baseName))
+ {
+ return EncodeName(baseName, usageIndex);
+ }
+
+ return baseName;
+ }
+
+ public static string Normal()
+ {
+ return Normal(0);
+ }
+
+ public static string Normal(int usageIndex)
+ {
+ return EncodeName("NORMAL", usageIndex);
+ }
+
+ public static string Tangent(int usageIndex)
+ {
+ return EncodeName("TANGENT", usageIndex);
+ }
+
+ public static string TextureCoordinate(int usageIndex)
+ {
+ return EncodeName("TEXCOORD", usageIndex);
+ }
+
+ public static bool TryDecodeUsage(string encodedName, out VertexElementUsage usage)
+ {
+ string baseName = DecodeBaseName(encodedName);
+
+ switch (baseName)
+ {
+ case "BINORMAL":
+ usage = VertexElementUsage.Binormal;
+ return true;
+ case "BLENDINDICES":
+ usage = VertexElementUsage.BlendIndices;
+ return true;
+ case "BLENDWEIGHT":
+ usage = VertexElementUsage.BlendWeight;
+ return true;
+ case "COLOR":
+ usage = VertexElementUsage.Color;
+ return true;
+ case "NORMAL":
+ usage = VertexElementUsage.Normal;
+ return true;
+ case "POSITION":
+ usage = VertexElementUsage.Position;
+ return true;
+ case "PSIZE":
+ usage = VertexElementUsage.PointSize;
+ return true;
+ case "TANGENT":
+ usage = VertexElementUsage.Tangent;
+ return true;
+ case "TEXCOORD":
+ usage = VertexElementUsage.TextureCoordinate;
+ return true;
+ case "TESSFACTOR":
+ usage = VertexElementUsage.TessellateFactor;
+ return true;
+ default:
+ usage = 0;
+ return false;
+ }
+ }
+
+ public static string Weights()
+ {
+ return Weights(0);
+ }
+
+ public static string Weights(int usageIndex)
+ {
+ return EncodeName("BLENDWEIGHT", usageIndex);
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/IContentProcessor.cs b/ANX.Framework.Content.Pipeline/IContentProcessor.cs
index b0e88333..d864686c 100644
--- a/ANX.Framework.Content.Pipeline/IContentProcessor.cs
+++ b/ANX.Framework.Content.Pipeline/IContentProcessor.cs
@@ -16,6 +16,6 @@ namespace ANX.Framework.Content.Pipeline
{
Type InputType { get; }
Type OutputType { get; }
- Object Process(Object input, ContextProcessorContext context);
+ Object Process(Object input, ContentProcessorContext context);
}
}
diff --git a/ANX.Framework.Content.Pipeline/Processors/EffectProcessor.cs b/ANX.Framework.Content.Pipeline/Processors/EffectProcessor.cs
new file mode 100644
index 00000000..1d312321
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Processors/EffectProcessor.cs
@@ -0,0 +1,36 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using ANX.Framework.Content.Pipeline.Graphics;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Processors
+{
+ [ContentProcessor]
+ public class EffectProcessor : ContentProcessor
+ {
+ public virtual EffectProcessorDebugMode DebugMode
+ {
+ get;
+ set;
+ }
+
+ public virtual string Defines
+ {
+ get;
+ set;
+ }
+
+ public override CompiledEffectContent Process(EffectContent input, ContentProcessorContext context)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Processors/EffectProcessorDebugMode.cs b/ANX.Framework.Content.Pipeline/Processors/EffectProcessorDebugMode.cs
new file mode 100644
index 00000000..1ae33baf
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Processors/EffectProcessorDebugMode.cs
@@ -0,0 +1,21 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Processors
+{
+ public enum EffectProcessorDebugMode
+ {
+ Auto,
+ Debug,
+ Optimize,
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Processors/FontDescriptionProcessor.cs b/ANX.Framework.Content.Pipeline/Processors/FontDescriptionProcessor.cs
new file mode 100644
index 00000000..ffb77765
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Processors/FontDescriptionProcessor.cs
@@ -0,0 +1,25 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using ANX.Framework.Content.Pipeline.Graphics;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Processors
+{
+ [ContentProcessor]
+ public class FontDescriptionProcessor : ContentProcessor
+ {
+
+ public override SpriteFontContent Process(FontDescription input, ContentProcessorContext context)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Processors/FontTextureProcessor.cs b/ANX.Framework.Content.Pipeline/Processors/FontTextureProcessor.cs
new file mode 100644
index 00000000..7ffd5fde
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Processors/FontTextureProcessor.cs
@@ -0,0 +1,49 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using ANX.Framework.Content.Pipeline.Graphics;
+using System.ComponentModel;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Processors
+{
+ [ContentProcessor]
+ public class FontTextureProcessor : ContentProcessor
+ {
+ public virtual char FirstCharacter
+ {
+ get;
+ set;
+ }
+
+ [DefaultValue(true)]
+ public virtual bool PremultiplyAlpha
+ {
+ get;
+ set;
+ }
+
+ public virtual TextureProcessorOutputFormat TextureFormat
+ {
+ get;
+ set;
+ }
+
+ public override SpriteFontContent Process(Texture2DContent input, ContentProcessorContext context)
+ {
+ throw new NotImplementedException();
+ }
+
+ protected virtual char GetCharacterForIndex(int index)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Processors/MaterialProcessor.cs b/ANX.Framework.Content.Pipeline/Processors/MaterialProcessor.cs
new file mode 100644
index 00000000..46b586ad
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Processors/MaterialProcessor.cs
@@ -0,0 +1,44 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using ANX.Framework.Content.Pipeline.Graphics;
+using System.ComponentModel;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Processors
+{
+ [ContentProcessor]
+ public class MaterialProcessor : ContentProcessor
+ {
+ public virtual Color ColorKeyColor { get; set; }
+ public virtual bool ColorKeyEnabled { get; set; }
+ public virtual MaterialProcessorDefaultEffect DefaultEffect { get; set; }
+ public virtual bool GenerateMipmaps { get; set; }
+ [DefaultValue(true)]
+ public virtual bool PremultiplyTextureAlpha { get; set; }
+ public virtual bool ResizeTexturesToPowerOfTwo { get; set; }
+ public virtual TextureProcessorOutputFormat TextureFormat { get; set; }
+
+ public override MaterialContent Process(MaterialContent input, ContentProcessorContext context)
+ {
+ throw new NotImplementedException();
+ }
+
+ protected virtual ExternalReference BuildEffect(ExternalReference effect, ContentProcessorContext context)
+ {
+ throw new NotImplementedException();
+ }
+
+ protected virtual ExternalReference BuildTexture(string textureName, ExternalReference texture, ContentProcessorContext context)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Processors/MaterialProcessorDefaultEffect.cs b/ANX.Framework.Content.Pipeline/Processors/MaterialProcessorDefaultEffect.cs
new file mode 100644
index 00000000..7f77d12c
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Processors/MaterialProcessorDefaultEffect.cs
@@ -0,0 +1,20 @@
+#region Using Statements
+using System;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Processors
+{
+ public enum MaterialProcessorDefaultEffect
+ {
+ AlphaTestEffect,
+ BasicEffect,
+ DualTextureEffect,
+ EnvironmentMapEffect,
+ SkinnedEffect,
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Processors/ModelBoneContent.cs b/ANX.Framework.Content.Pipeline/Processors/ModelBoneContent.cs
new file mode 100644
index 00000000..bd13c2a5
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Processors/ModelBoneContent.cs
@@ -0,0 +1,51 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Processors
+{
+ public sealed class ModelBoneContent
+ {
+ public ModelBoneContentCollection Children { get; set; }
+
+ public int Index
+ {
+ get
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ public string Name
+ {
+ get
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ public ModelBoneContent Parent
+ {
+ get
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ public Matrix Transform
+ {
+ get
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Processors/ModelBoneContentCollection.cs b/ANX.Framework.Content.Pipeline/Processors/ModelBoneContentCollection.cs
new file mode 100644
index 00000000..737d5a06
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Processors/ModelBoneContentCollection.cs
@@ -0,0 +1,23 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections.ObjectModel;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Processors
+{
+ public sealed class ModelBoneContentCollection : ReadOnlyCollection
+ {
+ public ModelBoneContentCollection(IList content)
+ : base(content)
+ {
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Processors/ModelContent.cs b/ANX.Framework.Content.Pipeline/Processors/ModelContent.cs
new file mode 100644
index 00000000..c3c9de94
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Processors/ModelContent.cs
@@ -0,0 +1,41 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Processors
+{
+ public sealed class ModelContent
+ {
+ public ModelBoneContentCollection Bones
+ {
+ get;
+ private set;
+ }
+
+ public ModelMeshContentCollection Meshes
+ {
+ get;
+ private set;
+ }
+
+ public ModelBoneContent Root
+ {
+ get;
+ private set;
+ }
+
+ public Object Tag
+ {
+ get;
+ set;
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Processors/ModelMeshContent.cs b/ANX.Framework.Content.Pipeline/Processors/ModelMeshContent.cs
new file mode 100644
index 00000000..67eb41e2
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Processors/ModelMeshContent.cs
@@ -0,0 +1,53 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Processors
+{
+ public sealed class ModelMeshContent
+ {
+ public BoundingSphere BoundingSphere
+ {
+ get;
+ internal set;
+ }
+
+ public ModelMeshPartContentCollection MeshParts
+ {
+ get;
+ internal set;
+ }
+
+ public string Name
+ {
+ get;
+ internal set;
+ }
+
+ public ModelBoneContent ParentBone
+ {
+ get;
+ internal set;
+ }
+
+ public ModelMeshContent SourceMesh
+ {
+ get;
+ internal set;
+ }
+
+ public Object Tag
+ {
+ get;
+ set;
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Processors/ModelMeshContentCollection.cs b/ANX.Framework.Content.Pipeline/Processors/ModelMeshContentCollection.cs
new file mode 100644
index 00000000..18557d89
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Processors/ModelMeshContentCollection.cs
@@ -0,0 +1,23 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections.ObjectModel;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Processors
+{
+ public sealed class ModelMeshContentCollection : ReadOnlyCollection
+ {
+ public ModelMeshContentCollection(IList content)
+ : base(content)
+ {
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Processors/ModelMeshPartContent.cs b/ANX.Framework.Content.Pipeline/Processors/ModelMeshPartContent.cs
new file mode 100644
index 00000000..05a7283c
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Processors/ModelMeshPartContent.cs
@@ -0,0 +1,65 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using ANX.Framework.Content.Pipeline.Graphics;
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Processors
+{
+ public sealed class ModelMeshPartContent
+ {
+ public IndexCollection IndexBuffer
+ {
+ get;
+ internal set;
+ }
+
+ public MaterialContent Material
+ {
+ get;
+ set;
+ }
+
+ public int NumVertices
+ {
+ get;
+ internal set;
+ }
+
+ public int PrimitiveCount
+ {
+ get;
+ internal set;
+ }
+
+ public int StartIndex
+ {
+ get;
+ internal set;
+ }
+
+ public Object Tag
+ {
+ get;
+ set;
+ }
+
+ public VertexBufferContent VertexBuffer
+ {
+ get;
+ internal set;
+ }
+
+ public int VertexOffset
+ {
+ get;
+ internal set;
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Processors/ModelMeshPartContentCollection.cs b/ANX.Framework.Content.Pipeline/Processors/ModelMeshPartContentCollection.cs
new file mode 100644
index 00000000..d600d315
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Processors/ModelMeshPartContentCollection.cs
@@ -0,0 +1,23 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Collections.ObjectModel;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Processors
+{
+ public sealed class ModelMeshPartContentCollection : ReadOnlyCollection
+ {
+ public ModelMeshPartContentCollection(IList content)
+ : base(content)
+ {
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Processors/ModelProcessor.cs b/ANX.Framework.Content.Pipeline/Processors/ModelProcessor.cs
new file mode 100644
index 00000000..1f8598e4
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Processors/ModelProcessor.cs
@@ -0,0 +1,56 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using ANX.Framework.Content.Pipeline.Graphics;
+using System.ComponentModel;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Processors
+{
+ public class ModelProcessor : ContentProcessor
+ {
+ public virtual Color ColorKeyColor { get; set; }
+ public virtual bool ColorKeyEnabled { get; set; }
+ public virtual MaterialProcessorDefaultEffect DefaultEffect { get; set; }
+ public virtual bool GenerateMipmaps { get; set; }
+ public virtual bool GenerateTangentFrames { get; set; }
+ [DefaultValue(true)]
+ public virtual bool PremultiplyTextureAlpha { get; set; }
+ [DefaultValue(true)]
+ public virtual bool PremultiplyVertexColors { get; set; }
+ public virtual bool ResizeTexturesToPowerOfTwo { get; set; }
+ public virtual float RotationX { get; set; }
+ public virtual float RotationY { get; set; }
+ public virtual float RotationZ { get; set; }
+ public virtual float Scale { get; set; }
+ public virtual bool SwapWindingOrder { get; set; }
+ public virtual TextureProcessorOutputFormat TextureFormat { get; set; }
+
+ public override ModelContent Process(NodeContent input, ContentProcessorContext context)
+ {
+ throw new NotImplementedException();
+ }
+
+ protected virtual MaterialContent ConvertMaterial(MaterialContent material, ContentProcessorContext context)
+ {
+ throw new NotImplementedException();
+ }
+
+ protected virtual void ProcessGeometryUsingMaterial(MaterialContent material, IEnumerable geometryContent, ContentProcessorContext context)
+ {
+ throw new NotImplementedException();
+ }
+
+ protected virtual void ProcessVertexChannel(GeometryContent geometry, int vertexChannelIndex, ContentProcessorContext context)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Processors/ModelTextureProcessor.cs b/ANX.Framework.Content.Pipeline/Processors/ModelTextureProcessor.cs
new file mode 100644
index 00000000..5c0335c2
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Processors/ModelTextureProcessor.cs
@@ -0,0 +1,26 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Processors
+{
+ [ContentProcessor]
+ public class ModelTextureProcessor : TextureProcessor
+ {
+ public override Color ColorKeyColor { get; set; }
+ public override bool ColorKeyEnabled { get; set; }
+ public override bool GenerateMipmaps { get; set; }
+ public override bool ResizeToPowerOfTwo { get; set; }
+ public override TextureProcessorOutputFormat TextureFormat { get; set; }
+
+
+ }
+}
diff --git a/ANX.Framework.Content.Pipeline/Processors/PassThroughProcessor.cs b/ANX.Framework.Content.Pipeline/Processors/PassThroughProcessor.cs
new file mode 100644
index 00000000..55442bf3
--- /dev/null
+++ b/ANX.Framework.Content.Pipeline/Processors/PassThroughProcessor.cs
@@ -0,0 +1,23 @@
+#region Using Statements
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+#endregion
+
+// This file is part of the ANX.Framework created by the
+// "ANX.Framework developer group" and released under the Ms-PL license.
+// For details see: http://anxframework.codeplex.com/license
+
+namespace ANX.Framework.Content.Pipeline.Processors
+{
+ [ContentProcessor]
+ public class PassThroughProcessor : ContentProcessor