Implemented first working version of ANX to XNA project transformation using the ProjectConverter tool. The other way round is not tested yet but should work too.
Translation of content projects is missing but this will be the next one...
This commit is contained in:
parent
bf101259fe
commit
87dd600ffe
156
Tools/ProjectConverter/NamespaceMapper.cs
Normal file
156
Tools/ProjectConverter/NamespaceMapper.cs
Normal file
@ -0,0 +1,156 @@
|
|||||||
|
#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 ProjectConverter
|
||||||
|
{
|
||||||
|
internal class NamespaceMapping
|
||||||
|
{
|
||||||
|
public string Xna { get; set; }
|
||||||
|
public string Anx { get; set; }
|
||||||
|
public string XnaAssembly { get; set; }
|
||||||
|
public string AnxAssembly { get; set; }
|
||||||
|
|
||||||
|
public NamespaceMapping(string Xna, string Anx)
|
||||||
|
{
|
||||||
|
this.Xna = Xna;
|
||||||
|
this.Anx = Anx;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NamespaceMapping(string Xna, string Anx, string XnaAssembly, string AnxAssembly)
|
||||||
|
{
|
||||||
|
this.Xna = Xna;
|
||||||
|
this.Anx = Anx;
|
||||||
|
this.XnaAssembly = XnaAssembly;
|
||||||
|
this.AnxAssembly = AnxAssembly;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetInput(MappingDirection dir)
|
||||||
|
{
|
||||||
|
if (dir == MappingDirection.Xna2Anx)
|
||||||
|
{
|
||||||
|
return Xna;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Anx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetOutput(MappingDirection dir)
|
||||||
|
{
|
||||||
|
if (dir == MappingDirection.Xna2Anx)
|
||||||
|
{
|
||||||
|
return Anx;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return Xna;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum MappingDirection
|
||||||
|
{
|
||||||
|
Xna2Anx,
|
||||||
|
Anx2Xna,
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class NamespaceMapper
|
||||||
|
{
|
||||||
|
private static string xnaPrefix = "Microsoft.Xna.Framework";
|
||||||
|
private static string anxPrefix = "ANX.Framework";
|
||||||
|
|
||||||
|
private static NamespaceMapping[] mappings = new[] { new NamespaceMapping(xnaPrefix , anxPrefix , "Microsoft.Xna.Framework" , "ANX.Framework"),
|
||||||
|
new NamespaceMapping(xnaPrefix + ".Avatar" , anxPrefix + ".Avatar" , "Microsoft.Xna.Framework.Avatar" , "ANX.Framework"),
|
||||||
|
new NamespaceMapping(xnaPrefix + ".Graphics" , anxPrefix + ".Graphics" , "Microsoft.Xna.Framework.Graphics" , "ANX.Framework"),
|
||||||
|
new NamespaceMapping(xnaPrefix + ".Input" , anxPrefix + ".Input" , "Microsoft.Xna.Framework" , "ANX.Framework"),
|
||||||
|
new NamespaceMapping(xnaPrefix + ".Input.Touch" , anxPrefix + ".Input.Touch" , "Microsoft.Xna.Framework.Input.Touch" , "ANX.Framework"),
|
||||||
|
new NamespaceMapping(xnaPrefix + ".Game" , anxPrefix + ".Game" , "Microsoft.Xna.Framework.Game" , "ANX.Framework"),
|
||||||
|
new NamespaceMapping(xnaPrefix + ".GamerServices" , anxPrefix + ".GamerServices" , "Microsoft.Xna.Framework.GamerServices", "ANX.Framework"),
|
||||||
|
new NamespaceMapping(xnaPrefix + ".Net" , anxPrefix + ".Net" , "Microsoft.Xna.Framework.Net" , "ANX.Framework"),
|
||||||
|
new NamespaceMapping(xnaPrefix + ".Storage" , anxPrefix + ".Storage" , "Microsoft.Xna.Framework.Storage" , "ANX.Framework"),
|
||||||
|
new NamespaceMapping(xnaPrefix + ".Video" , anxPrefix + ".Video" , "Microsoft.Xna.Framework.Video" , "ANX.Framework"),
|
||||||
|
new NamespaceMapping(xnaPrefix + ".Xact" , anxPrefix + ".Xact" , "Microsoft.Xna.Framework.Xact" , "ANX.Framework"),
|
||||||
|
|
||||||
|
new NamespaceMapping("", "ANX.InputDevices.OpenTK"),
|
||||||
|
new NamespaceMapping("", "ANX.InputDevices.PsVita"),
|
||||||
|
new NamespaceMapping("", "ANX.InputDevices.Test"),
|
||||||
|
new NamespaceMapping("", "ANX.InputDevices.Windows.Kinect"),
|
||||||
|
new NamespaceMapping("", "ANX.InputDevices.Windows.ModernUI"),
|
||||||
|
new NamespaceMapping("", "ANX.InputDevices.Windows.XInput"),
|
||||||
|
new NamespaceMapping("", "ANX.InputSystem.Recording"),
|
||||||
|
new NamespaceMapping("", "ANX.InputSystem.Standard"),
|
||||||
|
|
||||||
|
new NamespaceMapping("", "ANX.PlatformSystem.Linux"),
|
||||||
|
new NamespaceMapping("", "ANX.PlatformSystem.Metro"),
|
||||||
|
new NamespaceMapping("", "ANX.PlatformSystem.PsVita"),
|
||||||
|
new NamespaceMapping("", "ANX.PlatformSystem.Windows"),
|
||||||
|
|
||||||
|
new NamespaceMapping("", "ANX.RenderSystem.GL3"),
|
||||||
|
new NamespaceMapping("", "ANX.RenderSystem.PsVita"),
|
||||||
|
new NamespaceMapping("", "ANX.RenderSystem.Windows.DX10"),
|
||||||
|
new NamespaceMapping("", "ANX.RenderSystem.Windows.DX11"),
|
||||||
|
new NamespaceMapping("", "ANX.RenderSystem.Windows.Metro"),
|
||||||
|
|
||||||
|
new NamespaceMapping("", "ANX.SoundSystem.OpenAL"),
|
||||||
|
new NamespaceMapping("", "ANX.SoundSystem.PsVita"),
|
||||||
|
new NamespaceMapping("", "ANX.SoundSystem.Windows.XAudio"),
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
public static string TryMapNamespace(MappingDirection dir, string input)
|
||||||
|
{
|
||||||
|
foreach (NamespaceMapping mapping in mappings)
|
||||||
|
{
|
||||||
|
if (String.Equals(input, mapping.GetInput(dir), StringComparison.InvariantCultureIgnoreCase))
|
||||||
|
{
|
||||||
|
return mapping.GetOutput(dir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return input;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool IsProjectReference(MappingDirection dir, string reference)
|
||||||
|
{
|
||||||
|
foreach (NamespaceMapping mapping in mappings)
|
||||||
|
{
|
||||||
|
if (String.Equals(reference, mapping.GetInput(dir), StringComparison.InvariantCultureIgnoreCase))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string GetReferencingAssemblyName(MappingDirection dir, string reference)
|
||||||
|
{
|
||||||
|
foreach (NamespaceMapping mapping in mappings)
|
||||||
|
{
|
||||||
|
if (String.Equals(reference, mapping.GetInput(dir), StringComparison.InvariantCultureIgnoreCase))
|
||||||
|
{
|
||||||
|
if (dir == MappingDirection.Xna2Anx)
|
||||||
|
{
|
||||||
|
return mapping.AnxAssembly;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return mapping.XnaAssembly;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,19 +1,33 @@
|
|||||||
using System;
|
#region Using Statements
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
|
#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 ProjectConverter.Platforms
|
namespace ProjectConverter.Platforms
|
||||||
{
|
{
|
||||||
public abstract class AbstractXna2AnxConverter : Converter
|
public abstract class AbstractXna2AnxConverter : Converter
|
||||||
{
|
{
|
||||||
protected internal List<string> csharpFiles = new List<string>();
|
protected internal List<string> csharpFiles = new List<string>();
|
||||||
|
protected internal HashSet<string> filesToCopy = new HashSet<string>();
|
||||||
|
protected internal HashSet<string> assemblyReferencesToAdd = new HashSet<string>();
|
||||||
|
|
||||||
public override string Postfix
|
public override string Postfix
|
||||||
{
|
{
|
||||||
get { return string.Empty; }
|
get { return string.Empty; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected internal abstract MappingDirection MappingDirection { get; }
|
||||||
|
|
||||||
|
protected internal abstract string ReplaceInlineNamespaces(string input);
|
||||||
|
|
||||||
protected override void ConvertItemGroup(System.Xml.Linq.XElement element)
|
protected override void ConvertItemGroup(System.Xml.Linq.XElement element)
|
||||||
{
|
{
|
||||||
var groups = element.Elements().ToList();
|
var groups = element.Elements().ToList();
|
||||||
@ -33,6 +47,18 @@ namespace ProjectConverter.Platforms
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (group.Name.LocalName.Equals("content", StringComparison.InvariantCultureIgnoreCase) ||
|
||||||
|
group.Name.LocalName.Equals("none", StringComparison.InvariantCultureIgnoreCase))
|
||||||
|
{
|
||||||
|
var attributes = group.Attributes().ToList();
|
||||||
|
foreach (var attribute in attributes)
|
||||||
|
{
|
||||||
|
if (attribute.Name.LocalName.Equals("include", StringComparison.InvariantCultureIgnoreCase))
|
||||||
|
{
|
||||||
|
filesToCopy.Add(attribute.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
base.ConvertItemGroup(element);
|
base.ConvertItemGroup(element);
|
||||||
@ -40,19 +66,53 @@ namespace ProjectConverter.Platforms
|
|||||||
|
|
||||||
protected override void PostConvert()
|
protected override void PostConvert()
|
||||||
{
|
{
|
||||||
|
string destinationPath = System.IO.Path.GetDirectoryName(base.CurrentProject.FullDestinationPath);
|
||||||
|
|
||||||
foreach (var file in csharpFiles)
|
foreach (var file in csharpFiles)
|
||||||
{
|
{
|
||||||
string target = string.Empty;
|
string target = string.Empty;
|
||||||
ConvertUsingDirectives(file, ref target);
|
ConvertUsingDirectives(file, ref target);
|
||||||
|
|
||||||
|
string destinationFile = System.IO.Path.Combine(destinationPath, file);
|
||||||
|
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(destinationFile));
|
||||||
|
System.IO.File.WriteAllText(destinationFile, ReplaceInlineNamespaces(target));
|
||||||
|
}
|
||||||
|
|
||||||
|
string namespaceName = CurrentProject.Root.Name.NamespaceName;
|
||||||
|
XName referenceName = XName.Get("Reference", namespaceName);
|
||||||
|
XName itemGroupName = XName.Get("ItemGroup", namespaceName);
|
||||||
|
var groups = CurrentProject.Root.Elements().ToList();
|
||||||
|
|
||||||
|
foreach (var group in groups)
|
||||||
|
{
|
||||||
|
if (group.Name == itemGroupName)
|
||||||
|
{
|
||||||
|
foreach (string reference in assemblyReferencesToAdd)
|
||||||
|
{
|
||||||
|
if (group.Element(GetXName("Reference")) != null)
|
||||||
|
{
|
||||||
|
var referenceElement = new XElement(GetXName("Reference"));
|
||||||
|
referenceElement.Add(new XAttribute("Include", reference));
|
||||||
|
group.Add(referenceElement);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var file in filesToCopy)
|
||||||
|
{
|
||||||
|
string destinationFile = System.IO.Path.Combine(destinationPath, file);
|
||||||
|
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(destinationFile));
|
||||||
|
System.IO.File.Copy(System.IO.Path.Combine(CurrentProject.FullSourceDirectoryPath, file), destinationFile, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
base.PostConvert();
|
base.PostConvert();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void ConvertUsingDirectives(string file, ref string target);
|
protected void ConvertUsingDirectives(string file, ref string target)
|
||||||
|
|
||||||
protected void ConvertUsingDirectivesImpl(ref string content, ref string target, string sourceNamespace, string targetNamespace, string[] namespaces)
|
|
||||||
{
|
{
|
||||||
|
string content = System.IO.File.ReadAllText(System.IO.Path.Combine(CurrentProject.FullSourceDirectoryPath, file));
|
||||||
|
|
||||||
int lastPos = 0;
|
int lastPos = 0;
|
||||||
int currentPos = -1;
|
int currentPos = -1;
|
||||||
int endPos = 0;
|
int endPos = 0;
|
||||||
@ -64,14 +124,11 @@ namespace ProjectConverter.Platforms
|
|||||||
if (currentPos >= 0)
|
if (currentPos >= 0)
|
||||||
{
|
{
|
||||||
endPos = NextTokenPos(ref content, currentPos + tokenLength, ref tokenLength);
|
endPos = NextTokenPos(ref content, currentPos + tokenLength, ref tokenLength);
|
||||||
string directive = content.Substring(currentPos + 5, endPos - currentPos - 5);
|
string directive = content.Substring(currentPos + 6, endPos - currentPos - 6);
|
||||||
|
|
||||||
target += content.Substring(lastPos, (currentPos + 6) - lastPos);
|
target += content.Substring(lastPos, (currentPos + 6) - lastPos);
|
||||||
|
|
||||||
if (namespaces.Contains<string>(directive.Trim()))
|
directive = NamespaceMapper.TryMapNamespace(MappingDirection, directive);
|
||||||
{
|
|
||||||
directive = directive.Replace(sourceNamespace, targetNamespace);
|
|
||||||
}
|
|
||||||
|
|
||||||
target += directive;
|
target += directive;
|
||||||
lastPos = endPos;
|
lastPos = endPos;
|
||||||
|
@ -2,40 +2,55 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
namespace ProjectConverter.Platforms
|
namespace ProjectConverter.Platforms
|
||||||
{
|
{
|
||||||
public class AnxConverter : AbstractXna2AnxConverter
|
public class AnxConverter : AbstractXna2AnxConverter
|
||||||
{
|
{
|
||||||
private readonly string[] xnaNamespaces = new string[] { "Microsoft.XNA.Framework",
|
public AnxConverter()
|
||||||
"Microsoft.XNA.Framework.Avatar",
|
{
|
||||||
"Microsoft.XNA.Framework.Content.Pipeline.AudioImporters",
|
// add default XNA references
|
||||||
"Microsoft.XNA.Framework.Content.Pipeline",
|
assemblyReferencesToAdd.Add("Microsoft.Xna.Framework");
|
||||||
"Microsoft.XNA.Framework.Content.Pipeline.EffectImporter",
|
assemblyReferencesToAdd.Add("Microsoft.Xna.Framework.Game");
|
||||||
"Microsoft.XNA.Framework.Content.Pipeline.FBXImporter",
|
assemblyReferencesToAdd.Add("Microsoft.Xna.Framework.Input");
|
||||||
"Microsoft.XNA.Framework.Content.Pipeline.TextureImporter",
|
assemblyReferencesToAdd.Add("Microsoft.Xna.Framework.Graphics");
|
||||||
"Microsoft.XNA.Framework.Content.Pipeline.VideoImporters",
|
}
|
||||||
"Microsoft.XNA.Framework.Content.Pipeline.XImporter",
|
|
||||||
"Microsoft.XNA.Framework.Game",
|
|
||||||
"Microsoft.XNA.Framework.GamerServices",
|
|
||||||
"Microsoft.XNA.Framework.Graphics",
|
|
||||||
"Microsoft.XNA.Framework.Input",
|
|
||||||
"Microsoft.XNA.Framework.Input.Touch",
|
|
||||||
"Microsoft.XNA.Framework.Net",
|
|
||||||
"Microsoft.XNA.Framework.Storage",
|
|
||||||
"Microsoft.XNA.Framework.Video",
|
|
||||||
"Microsoft.XNA.Framework.Xact",
|
|
||||||
};
|
|
||||||
|
|
||||||
public override string Name
|
public override string Name
|
||||||
{
|
{
|
||||||
get { return "anx2xna"; }
|
get { return "anx2xna"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void ConvertUsingDirectives(string file, ref string target)
|
protected internal override MappingDirection MappingDirection
|
||||||
{
|
{
|
||||||
string content = System.IO.File.ReadAllText(System.IO.Path.Combine(CurrentProject.FullSourceDirectoryPath, file));
|
get { return ProjectConverter.MappingDirection.Anx2Xna; }
|
||||||
ConvertUsingDirectivesImpl(ref content, ref target, "Microsoft.XNA.Framework", "ANX.Framework", xnaNamespaces);
|
}
|
||||||
|
|
||||||
|
protected override void ConvertProjectReference(XElement element)
|
||||||
|
{
|
||||||
|
XAttribute includeAttribute = element.Attribute("Include");
|
||||||
|
if (includeAttribute != null)
|
||||||
|
{
|
||||||
|
string reference = Path.GetFileNameWithoutExtension(includeAttribute.Value); // sometimes the node contains a relative path to the reference
|
||||||
|
|
||||||
|
if (NamespaceMapper.IsProjectReference(MappingDirection, reference))
|
||||||
|
{
|
||||||
|
string referenceAssembly = NamespaceMapper.GetReferencingAssemblyName(MappingDirection, reference);
|
||||||
|
if (!string.IsNullOrEmpty(referenceAssembly))
|
||||||
|
{
|
||||||
|
assemblyReferencesToAdd.Add(referenceAssembly);
|
||||||
|
}
|
||||||
|
|
||||||
|
element.Remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected internal override string ReplaceInlineNamespaces(string input)
|
||||||
|
{
|
||||||
|
return input.Replace("ANX.Framework.Game", "Microsoft.Xna.Framework.Game");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,41 +1,34 @@
|
|||||||
using System;
|
#region Using Statements
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
|
#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 ProjectConverter.Platforms
|
namespace ProjectConverter.Platforms
|
||||||
{
|
{
|
||||||
public class XnaConverter : AbstractXna2AnxConverter
|
public class XnaConverter : AbstractXna2AnxConverter
|
||||||
{
|
{
|
||||||
private readonly string[] anxNamespaces = new string[] { "ANX.Framework",
|
|
||||||
"ANX.Framework.Avatar",
|
|
||||||
"ANX.Framework.Content.Pipeline.AudioImporters",
|
|
||||||
"ANX.Framework.Content.Pipeline",
|
|
||||||
"ANX.Framework.Content.Pipeline.EffectImporter",
|
|
||||||
"ANX.Framework.Content.Pipeline.FBXImporter",
|
|
||||||
"ANX.Framework.Content.Pipeline.TextureImporter",
|
|
||||||
"ANX.Framework.Content.Pipeline.VideoImporters",
|
|
||||||
"ANX.Framework.Content.Pipeline.XImporter",
|
|
||||||
"ANX.Framework.Game",
|
|
||||||
"ANX.Framework.GamerServices",
|
|
||||||
"ANX.Framework.Graphics",
|
|
||||||
"ANX.Framework.Input",
|
|
||||||
"ANX.Framework.Input.Touch",
|
|
||||||
"ANX.Framework.Net",
|
|
||||||
"ANX.Framework.Storage",
|
|
||||||
"ANX.Framework.Video",
|
|
||||||
"ANX.Framework.Xact",
|
|
||||||
};
|
|
||||||
|
|
||||||
public override string Name
|
public override string Name
|
||||||
{
|
{
|
||||||
get { return "xna2anx"; }
|
get { return "xna2anx"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void ConvertUsingDirectives(string file, ref string target)
|
protected internal override MappingDirection MappingDirection
|
||||||
{
|
{
|
||||||
string content = System.IO.File.ReadAllText(System.IO.Path.Combine(CurrentProject.FullSourceDirectoryPath, file));
|
get { return ProjectConverter.MappingDirection.Xna2Anx; }
|
||||||
ConvertUsingDirectivesImpl(ref content, ref target, "ANX.Framework", "Microsoft.XNA.Framework", anxNamespaces);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected internal override string ReplaceInlineNamespaces(string input)
|
||||||
|
{
|
||||||
|
return input.Replace("Microsoft.Xna.Framework.Game", "ANX.Framework.Game");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,7 @@
|
|||||||
<Compile Include="AssemblyInfoFixer.cs" />
|
<Compile Include="AssemblyInfoFixer.cs" />
|
||||||
<Compile Include="Converter.cs" />
|
<Compile Include="Converter.cs" />
|
||||||
<Compile Include="DefinesConverter.cs" />
|
<Compile Include="DefinesConverter.cs" />
|
||||||
|
<Compile Include="NamespaceMapper.cs" />
|
||||||
<Compile Include="Platforms\AbstractXna2AnxConverter.cs" />
|
<Compile Include="Platforms\AbstractXna2AnxConverter.cs" />
|
||||||
<Compile Include="Platforms\AnxConverter.cs" />
|
<Compile Include="Platforms\AnxConverter.cs" />
|
||||||
<Compile Include="Platforms\XnaConverter.cs" />
|
<Compile Include="Platforms\XnaConverter.cs" />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user