diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Extensions/KnowledgeAdventure/Associations/ATRDataFormat.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Extensions/KnowledgeAdventure/Associations/ATRDataFormat.xml
new file mode 100644
index 00000000..3a6812b6
--- /dev/null
+++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Extensions/KnowledgeAdventure/Associations/ATRDataFormat.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+ *.atr
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj
index 100c9cf3..b57c0ead 100644
--- a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj
+++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj
@@ -41,6 +41,7 @@
+
diff --git a/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/DataFormats/KnowledgeAdventure/Actor/ATRDataFormat.cs b/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/DataFormats/KnowledgeAdventure/Actor/ATRDataFormat.cs
new file mode 100644
index 00000000..b0bb3976
--- /dev/null
+++ b/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/DataFormats/KnowledgeAdventure/Actor/ATRDataFormat.cs
@@ -0,0 +1,50 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using UniversalEditor.IO;
+using UniversalEditor.ObjectModels.KnowledgeAdventure.Actor;
+
+namespace UniversalEditor.DataFormats.KnowledgeAdventure.Actor
+{
+ public class ATRDataFormat : DataFormat
+ {
+ private static DataFormatReference _dfr = null;
+ protected override DataFormatReference MakeReferenceInternal()
+ {
+ if (_dfr == null)
+ {
+ _dfr = base.MakeReferenceInternal();
+ _dfr.Capabilities.Add(typeof(ActorObjectModel), DataFormatCapabilities.All);
+ }
+ return _dfr;
+ }
+
+ protected override void LoadInternal(ref ObjectModel objectModel)
+ {
+ ActorObjectModel actor = (objectModel as ActorObjectModel);
+ if (actor == null) throw new ObjectModelNotSupportedException();
+
+ Reader reader = base.Accessor.Reader;
+
+ string signature = reader.ReadFixedLengthString(5);
+ if (signature != "ATR11") throw new InvalidDataFormatException("File does not begin with 'ATR11'");
+
+ actor.Name = reader.ReadFixedLengthString(16).TrimNull();
+ actor.ImageFileName = reader.ReadFixedLengthString(32).TrimNull();
+ }
+
+ protected override void SaveInternal(ObjectModel objectModel)
+ {
+ ActorObjectModel actor = (objectModel as ActorObjectModel);
+ if (actor == null) throw new ObjectModelNotSupportedException();
+
+ Writer writer = base.Accessor.Writer;
+
+ writer.WriteFixedLengthString("ATR11");
+
+ writer.WriteFixedLengthString(actor.Name, 16);
+ writer.WriteFixedLengthString(actor.ImageFileName, 32);
+ }
+ }
+}
diff --git a/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/ObjectModels/KnowledgeAdventure/Actor/ActorObjectModel.cs b/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/ObjectModels/KnowledgeAdventure/Actor/ActorObjectModel.cs
new file mode 100644
index 00000000..f838e120
--- /dev/null
+++ b/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/ObjectModels/KnowledgeAdventure/Actor/ActorObjectModel.cs
@@ -0,0 +1,49 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace UniversalEditor.ObjectModels.KnowledgeAdventure.Actor
+{
+ public class ActorObjectModel : ObjectModel
+ {
+ private static ObjectModelReference _omr = null;
+ protected override ObjectModelReference MakeReferenceInternal()
+ {
+ if (_omr == null)
+ {
+ _omr = base.MakeReferenceInternal();
+ _omr.Title = "Actor";
+ _omr.Path = new string[] { "Knowledge Adventure" };
+ }
+ return _omr;
+ }
+
+ private string mvarName = String.Empty;
+ ///
+ /// The name used in scripts to identify this .
+ ///
+ public string Name { get { return mvarName; } set { mvarName = value; } }
+
+ private string mvarImageFileName = String.Empty;
+ ///
+ /// The file name of the image file.
+ ///
+ public string ImageFileName { get { return mvarImageFileName; } set { mvarImageFileName = value; } }
+
+ public override void Clear()
+ {
+ mvarName = String.Empty;
+ mvarImageFileName = String.Empty;
+ }
+
+ public override void CopyTo(ObjectModel where)
+ {
+ ActorObjectModel clone = (where as ActorObjectModel);
+ if (clone == null) throw new ObjectModelNotSupportedException();
+
+ clone.Name = (mvarName.Clone() as string);
+ clone.ImageFileName = (mvarImageFileName.Clone() as string);
+ }
+ }
+}
diff --git a/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/UniversalEditor.Plugins.KnowledgeAdventure.csproj b/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/UniversalEditor.Plugins.KnowledgeAdventure.csproj
index 90fc5120..0ac9c91a 100644
--- a/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/UniversalEditor.Plugins.KnowledgeAdventure.csproj
+++ b/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/UniversalEditor.Plugins.KnowledgeAdventure.csproj
@@ -39,6 +39,8 @@
+
+
@@ -51,6 +53,7 @@
UniversalEditor.Essential
+