#region Using Statements using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Content.Pipeline.Serialization; using Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler; #endregion // Using Statements // 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.TestCenter.ContentPipeline.Helper { public class ContentWithSharedResource { public class SharedResource { public int Value { get; set; } } public SharedResource ResourceA { get; set; } public SharedResource ResourceB { get; set; } } public class ContentWithSharedResourceWriter : ContentTypeWriter { protected override void Write(ContentWriter output, ContentWithSharedResource value) { output.WriteSharedResource(value.ResourceA); output.WriteSharedResource(value.ResourceB); } public override string GetRuntimeReader(Microsoft.Xna.Framework.Content.Pipeline.TargetPlatform targetPlatform) { return typeof(ContentWithSharedResourceReader).AssemblyQualifiedName; } } public class SharedResourceWriter : ContentTypeWriter { protected override void Write(ContentWriter output, ContentWithSharedResource.SharedResource value) { output.Write(value.Value); } public override string GetRuntimeReader(Microsoft.Xna.Framework.Content.Pipeline.TargetPlatform targetPlatform) { return typeof(SharedResourceReader).AssemblyQualifiedName; } } // The reader must be in the ANX Namespace public class ContentWithSharedResourceReader : ANX.Framework.Content.ContentTypeReader { protected override ContentWithSharedResource Read(ANX.Framework.Content.ContentReader input, ContentWithSharedResource existingInstance) { existingInstance = new ContentWithSharedResource(); input.ReadSharedResource((value) => { existingInstance.ResourceA = value; }); input.ReadSharedResource((value) => { existingInstance.ResourceB = value; }); return existingInstance; } } public class SharedResourceReader : ANX.Framework.Content.ContentTypeReader { protected override ContentWithSharedResource.SharedResource Read(ANX.Framework.Content.ContentReader input, ContentWithSharedResource.SharedResource existingInstance) { existingInstance = new ContentWithSharedResource.SharedResource(); existingInstance.Value = input.ReadInt32(); return existingInstance; } } }