diff --git a/DevTools/CustomToolDomGen/CustomToolDomGen.cs b/DevTools/CustomToolDomGen/CustomToolDomGen.cs
new file mode 100644
index 00000000..41617d44
--- /dev/null
+++ b/DevTools/CustomToolDomGen/CustomToolDomGen.cs
@@ -0,0 +1,94 @@
+using System;
+using System.IO;
+using System.Runtime.InteropServices;
+using Microsoft.CustomTool;
+using Microsoft.Win32;
+
+namespace DomGen
+{
+ [Guid("9F877959-E457-4824-B58F-110FF320F0D1")]
+ [ComVisible(true)]
+ public class CustomToolDomGen : BaseCodeGeneratorWithSite
+ {
+ // Called every time the attached XML file is saved within visual studio.
+ protected override byte[] GenerateCode(string inputFileName, string inputFileContent)
+ {
+ // class name should always the same as output file name
+ string className = Path.GetFileNameWithoutExtension(inputFileName);
+
+ SchemaLoader typeLoader = new SchemaLoader();
+ typeLoader.Load(inputFileName);
+
+ string[] fakeArgs = {"CustomToolDomGen", inputFileName, Path.GetFileNameWithoutExtension(inputFileName) + ".cs", className, FileNameSpace};
+
+ return System.Text.Encoding.ASCII.GetBytes(SchemaGen.Generate(typeLoader, "", FileNameSpace, className, fakeArgs));
+ }
+
+ #region Registration
+
+ private const string CustomToolName = "DomSchemaGen";
+ private const string CustomToolDescription = "DOM Schema Class Generator";
+ private static Guid CustomToolGuid = new Guid("{9F877959-E457-4824-B58F-110FF320F0D1}"); // generated, but must match the class attribute
+
+ // Registry Categories to tell Visual Studio where to find the tool
+ private static Guid CSharpCategory = new Guid("{FAE04EC1-301F-11D3-BF4B-00C04F79EFBC}");
+ private static Guid VBCategory = new Guid("{164B10B9-B200-11D0-8C61-00A0C91E29D5}");
+
+ private const string KeyFormat = @"SOFTWARE\Microsoft\VisualStudio\{0}\Generators\{1}\{2}";
+
+ protected static void Register(Version vsVersion, Guid categoryGuid)
+ {
+ using (RegistryKey key = Registry.LocalMachine.CreateSubKey(
+ String.Format(KeyFormat, vsVersion, categoryGuid.ToString("B"), CustomToolName)))
+ {
+ key.SetValue("", CustomToolDescription);
+ key.SetValue("CLSID", CustomToolGuid.ToString("B"));
+ key.SetValue("GeneratesDesignTimeSource", 1);
+ }
+ }
+
+ protected static void Unregister(Version vsVersion, Guid categoryGuid)
+ {
+ Registry.LocalMachine.DeleteSubKey(
+ String.Format(KeyFormat, vsVersion, categoryGuid.ToString("B"), CustomToolName), false);
+ }
+
+ [ComRegisterFunction]
+ public static void RegisterClass(Type t)
+ {
+ // Register for VS.NET 2002, 2003, 2005, 2008, 2010 (C#)
+ Register(new Version(7, 0), CSharpCategory);
+ Register(new Version(7, 1), CSharpCategory);
+ Register(new Version(8, 0), CSharpCategory);
+ Register(new Version(9, 0), CSharpCategory);
+ Register(new Version(10, 0), CSharpCategory);
+
+ // Register for VS.NET 2002, 2003, 2005, 2008, 2010 (VB)
+ Register(new Version(7, 0), VBCategory);
+ Register(new Version(7, 1), VBCategory);
+ Register(new Version(8, 0), VBCategory);
+ Register(new Version(9, 0), VBCategory);
+ Register(new Version(10, 0), VBCategory);
+ }
+
+ [ComUnregisterFunction]
+ public static void UnregisterClass(Type t)
+ {
+ // Unregister for VS.NET 2002, 2003, 2005, 2008, 2010 (C#)
+ Unregister(new Version(7, 0), CSharpCategory);
+ Unregister(new Version(7, 1), CSharpCategory);
+ Unregister(new Version(8, 0), CSharpCategory);
+ Unregister(new Version(9, 0), CSharpCategory);
+ Unregister(new Version(10, 0), CSharpCategory);
+
+ // Unregister for VS.NET 2002, 2003, 2005, 2008, 2010 (VB)
+ Unregister(new Version(7, 0), VBCategory);
+ Unregister(new Version(7, 1), VBCategory);
+ Unregister(new Version(8, 0), VBCategory);
+ Unregister(new Version(9, 0), VBCategory);
+ Unregister(new Version(10, 0), VBCategory);
+ }
+
+ #endregion
+ }
+}
diff --git a/DevTools/CustomToolDomGen/CustomToolDomGen.vs2005.csproj b/DevTools/CustomToolDomGen/CustomToolDomGen.vs2005.csproj
new file mode 100644
index 00000000..465cc7cf
--- /dev/null
+++ b/DevTools/CustomToolDomGen/CustomToolDomGen.vs2005.csproj
@@ -0,0 +1,102 @@
+
+
+ Debug
+ AnyCPU
+ 8.0.50727
+ 2.0
+ {A3F98805-75BF-42A0-8799-76A749098D4A}
+ Library
+ Properties
+ CustomToolDomGen
+ CustomToolDomGen
+ false
+
+
+
+
+
+
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+
+
+ true
+ full
+ false
+ bin\Debug.vs2005\
+ obj\Debug.vs2005\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release.vs2005\
+ obj\Release.vs2005\
+ TRACE
+ prompt
+ 4
+
+
+
+ False
+ .\Microsoft.VisualStudio.BaseCodeGeneratorWithSite.dll
+
+
+
+
+
+
+
+
+
+
+
+ {9D1835B6-D1C2-44BA-BAE1-05C6EC442D2F}
+ Atf.Core.vs2005
+
+
+ {FE3CA2EA-2F56-49A5-AD02-E5DEC8694457}
+ DomGen.vs2005
+
+
+
+
+ False
+ .NET Framework Client Profile
+ false
+
+
+ False
+ .NET Framework 2.0
+ true
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+
+
+
diff --git a/DevTools/CustomToolDomGen/CustomToolDomGen.vs2005.sln b/DevTools/CustomToolDomGen/CustomToolDomGen.vs2005.sln
new file mode 100644
index 00000000..c75ee083
--- /dev/null
+++ b/DevTools/CustomToolDomGen/CustomToolDomGen.vs2005.sln
@@ -0,0 +1,32 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomToolDomGen.vs2005", "CustomToolDomGen.vs2005.csproj", "{A3F98805-75BF-42A0-8799-76A749098D4A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DomGen.vs2005", "..\DomGen\DomGen.vs2005.csproj", "{FE3CA2EA-2F56-49A5-AD02-E5DEC8694457}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atf.Core.vs2005", "..\..\Framework\Atf.Core\Atf.Core.vs2005.csproj", "{9D1835B6-D1C2-44BA-BAE1-05C6EC442D2F}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {A3F98805-75BF-42A0-8799-76A749098D4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A3F98805-75BF-42A0-8799-76A749098D4A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A3F98805-75BF-42A0-8799-76A749098D4A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A3F98805-75BF-42A0-8799-76A749098D4A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FE3CA2EA-2F56-49A5-AD02-E5DEC8694457}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FE3CA2EA-2F56-49A5-AD02-E5DEC8694457}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FE3CA2EA-2F56-49A5-AD02-E5DEC8694457}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FE3CA2EA-2F56-49A5-AD02-E5DEC8694457}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9D1835B6-D1C2-44BA-BAE1-05C6EC442D2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9D1835B6-D1C2-44BA-BAE1-05C6EC442D2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9D1835B6-D1C2-44BA-BAE1-05C6EC442D2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9D1835B6-D1C2-44BA-BAE1-05C6EC442D2F}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/DevTools/CustomToolDomGen/CustomToolDomGen.vs2010.csproj b/DevTools/CustomToolDomGen/CustomToolDomGen.vs2010.csproj
new file mode 100644
index 00000000..2600df8c
--- /dev/null
+++ b/DevTools/CustomToolDomGen/CustomToolDomGen.vs2010.csproj
@@ -0,0 +1,114 @@
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {A3F98805-75BF-42A0-8799-76A749098D4A}
+ Library
+ Properties
+ CustomToolDomGen
+ CustomToolDomGen
+ false
+
+
+
+
+ 2.0
+
+
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+
+
+ true
+ full
+ false
+ ..\..\lib\anycpu_dotnet_clr4_debug\
+ obj\Debug.vs2010\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ ..\..\lib\anycpu_dotnet_clr4_release\
+ obj\Release.vs2010\
+ TRACE
+ prompt
+ 4
+
+
+
+ False
+ .\Microsoft.VisualStudio.BaseCodeGeneratorWithSite.dll
+
+
+
+
+
+
+
+
+
+
+
+ {9D1835B6-D1C2-44BA-BAE1-05C6EC442D2F}
+ Atf.Core
+
+
+ {FE3CA2EA-2F56-49A5-AD02-E5DEC8694457}
+ DomGen
+
+
+
+
+ False
+ .NET Framework Client Profile
+ false
+
+
+ False
+ .NET Framework 2.0 %28x86%29
+ true
+
+
+ False
+ .NET Framework 3.0 %28x86%29
+ false
+
+
+ False
+ .NET Framework 3.5
+ false
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+
+
+
\ No newline at end of file
diff --git a/DevTools/CustomToolDomGen/Microsoft.VisualStudio.BaseCodeGeneratorWithSite.dll b/DevTools/CustomToolDomGen/Microsoft.VisualStudio.BaseCodeGeneratorWithSite.dll
new file mode 100644
index 00000000..3f40a2c4
Binary files /dev/null and b/DevTools/CustomToolDomGen/Microsoft.VisualStudio.BaseCodeGeneratorWithSite.dll differ
diff --git a/DevTools/CustomToolDomGen/Properties/AssemblyInfo.cs b/DevTools/CustomToolDomGen/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..b202a4f4
--- /dev/null
+++ b/DevTools/CustomToolDomGen/Properties/AssemblyInfo.cs
@@ -0,0 +1,32 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("CustomToolDomGen")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("SCEA")]
+[assembly: AssemblyProduct("CustomToolDomGen")]
+[assembly: AssemblyCopyright("Copyright © 2014 Sony Computer Entertainment America LLC")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("63328306-66be-4736-a0a2-2aff306598a5")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/DevTools/CustomToolDomGen/RegisterCOM.txt b/DevTools/CustomToolDomGen/RegisterCOM.txt
new file mode 100644
index 00000000..8c15e27a
--- /dev/null
+++ b/DevTools/CustomToolDomGen/RegisterCOM.txt
@@ -0,0 +1,5 @@
+To register, use:
+regasm /codebase CustomToolDomGen.dll
+
+To unregister use:
+regasm /codebase CustomToolDomGen.dll /u
diff --git a/DevTools/DomGen/DomGen.vs2005.csproj b/DevTools/DomGen/DomGen.vs2005.csproj
new file mode 100644
index 00000000..66daeb9c
--- /dev/null
+++ b/DevTools/DomGen/DomGen.vs2005.csproj
@@ -0,0 +1,93 @@
+
+
+
+ Debug
+ AnyCPU
+ 8.0.50727
+ 2.0
+ {FE3CA2EA-2F56-49A5-AD02-E5DEC8694457}
+ Exe
+ Properties
+ DomGen
+ DomGen
+
+
+
+
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+
+
+ true
+ full
+ false
+ bin\Debug.vs2005\
+ TRACE;DEBUG
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release.vs2005\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+ .NET Framework Client Profile
+ false
+
+
+ False
+ .NET Framework 2.0
+ true
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+
+
+ {9D1835B6-D1C2-44BA-BAE1-05C6EC442D2F}
+ Atf.Core.vs2005
+
+
+
+
+
\ No newline at end of file
diff --git a/DevTools/DomGen/DomGen.vs2005.sln b/DevTools/DomGen/DomGen.vs2005.sln
new file mode 100644
index 00000000..e1b4c7ee
--- /dev/null
+++ b/DevTools/DomGen/DomGen.vs2005.sln
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DomGen.vs2005", "DomGen.vs2005.csproj", "{FE3CA2EA-2F56-49A5-AD02-E5DEC8694457}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {FE3CA2EA-2F56-49A5-AD02-E5DEC8694457}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FE3CA2EA-2F56-49A5-AD02-E5DEC8694457}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FE3CA2EA-2F56-49A5-AD02-E5DEC8694457}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FE3CA2EA-2F56-49A5-AD02-E5DEC8694457}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/DevTools/DomGen/DomGen.vs2010.csproj b/DevTools/DomGen/DomGen.vs2010.csproj
new file mode 100644
index 00000000..c9c8e413
--- /dev/null
+++ b/DevTools/DomGen/DomGen.vs2010.csproj
@@ -0,0 +1,113 @@
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {FE3CA2EA-2F56-49A5-AD02-E5DEC8694457}
+ Exe
+ Properties
+ DomGen
+ DomGen
+
+
+ 2.0
+
+
+ v4.0
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ true
+
+
+
+ true
+ full
+ false
+ ..\..\bin\Debug.vs2010\
+ obj\Debug.vs2010\
+ TRACE;DEBUG;CS_3
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ ..\..\bin\Release.vs2010\
+ obj\Release.vs2010\
+ TRACE;CS_3
+ prompt
+ 4
+
+
+
+
+ 3.5
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+ .NET Framework Client Profile
+ false
+
+
+ False
+ .NET Framework 2.0 %28x86%29
+ true
+
+
+ False
+ .NET Framework 3.0 %28x86%29
+ false
+
+
+ False
+ .NET Framework 3.5
+ false
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+
+
+ {9D1835B6-D1C2-44BA-BAE1-05C6EC442D2F}
+ Atf.Core
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DevTools/DomGen/Program.cs b/DevTools/DomGen/Program.cs
new file mode 100644
index 00000000..6bf99afd
--- /dev/null
+++ b/DevTools/DomGen/Program.cs
@@ -0,0 +1,154 @@
+//Copyright 2014 Sony Computer Entertainment America LLC. See License.txt.
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using System.Security.Cryptography;
+using System.Xml.Schema;
+using System.Xml;
+
+namespace DomGen
+{
+ static class Program
+ {
+ // usage: DomGen {schemaPath} {outputPath} {schemaNamespace} {classNamespace}
+ [STAThread]
+ static void Main(string[] args)
+ {
+ string inputPath;
+ string outputPath;
+ string schemaNamespace;
+ string codeNamespace;
+ string className;
+ bool useCacheFile = false;
+ bool upToDate = false;
+
+ if (args.Length < 4)
+ {
+ Console.WriteLine(
+ "usage:\n" +
+ "DomGen {schemaPath} {outputPath} {schemaNamespace} {classNamespace} {options}\n" +
+ "eg: DomGen echo.xsd Schema.cs http://sce/audio Sce.Audio -a\n" +
+ "options:\n" +
+ "-a or -adapters\n" +
+ " Will generate DomNodeAdapters with properties\n" +
+ "-annotatedOnly\n" +
+ " If the -annotatedOnly argument is set: types will be included ONLY if\n" +
+ " is defined for this type, all other types will\n" +
+ " be skipped.\n" +
+ " If -annotatedOnly is NOT set: types will be included by default UNLESS\n" +
+ " is explicitly set for this type" +
+ "-enums\n" +
+ " Will generate Enum types for all AttributeTypes which have string value restrictions\n" +
+ "-cache\n" +
+ " If -cache is set will generate an intermediate file and will not rebuild the output unless\n" +
+ " the schema has changed\n");
+ return;
+ }
+
+ inputPath = args[0];
+ outputPath = args[1];
+ schemaNamespace = args[2];
+ codeNamespace = args[3];
+ // class name should always be the same as output file name
+ className = Path.GetFileNameWithoutExtension(outputPath);
+
+ for (int i = 4; i < args.Length; i++)
+ {
+ string arg = args[i];
+ if (arg == "-cache")
+ useCacheFile = true;
+ }
+
+ var typeLoader = new SchemaLoader();
+ XmlSchema schema = null;
+ string cacheFile = outputPath + @".dep";
+
+ // Temp: Test to see if not rebuilding speeds up our builds...
+ if (useCacheFile && File.Exists(cacheFile))
+ {
+ // Use special resolver
+ var resolver = new HashingXmlUrlResolver();
+ typeLoader.SchemaResolver = resolver;
+ schema = typeLoader.Load(inputPath);
+
+ if (schema != null)
+ {
+ try
+ {
+ string previousHashString = null;
+
+ using (TextReader reader = File.OpenText(cacheFile))
+ {
+ previousHashString = reader.ReadLine();
+ }
+
+ // Generate hash by concat of hash of each file stream loaded
+ var sb = new StringBuilder();
+ foreach (byte[] hash in resolver.Hashes)
+ {
+ sb.Append(Convert.ToBase64String(hash));
+ }
+
+ string hashString = sb.ToString();
+
+ upToDate = (previousHashString == hashString);
+
+ if (upToDate == false)
+ {
+ using (TextWriter writer = new StreamWriter(cacheFile))
+ {
+ writer.WriteLine(hashString);
+ }
+ }
+ }
+ catch (Exception)
+ {
+ }
+ }
+ }
+ else
+ {
+ schema = typeLoader.Load(inputPath);
+ }
+
+ if (upToDate == false)
+ {
+ UTF8Encoding encoding = new UTF8Encoding();
+ using (FileStream strm = File.Open(outputPath, FileMode.Create))
+ {
+ string s = SchemaGen.Generate(typeLoader, schemaNamespace, codeNamespace, className, args);
+ byte[] bytes = encoding.GetBytes(s);
+ strm.Write(bytes, 0, bytes.Length);
+ }
+ }
+ }
+
+ }
+
+ ///
+ /// resolver which takes a hash of all streams which are resolved
+ ///
+ class HashingXmlUrlResolver : XmlUrlResolver
+ {
+ public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn)
+ {
+ object entity = base.GetEntity(absoluteUri, role, ofObjectToReturn);
+ Stream s = entity as Stream;
+ if (s!= null)
+ {
+ long pos = s.Position;
+ var md5 = MD5.Create();
+ byte[] hash = md5.ComputeHash(s);
+ s.Position = pos;
+ m_hashes.Add(hash);
+ }
+ return entity;
+ }
+
+ public IEnumerable Hashes { get { return m_hashes; } }
+
+ private readonly List m_hashes = new List();
+ }
+}
diff --git a/DevTools/DomGen/Properties/AssemblyInfo.cs b/DevTools/DomGen/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..2dc50393
--- /dev/null
+++ b/DevTools/DomGen/Properties/AssemblyInfo.cs
@@ -0,0 +1,34 @@
+//Copyright © 2014 Sony Computer Entertainment America LLC. See License.txt.
+
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Scea.DomGen")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Scea.DomGen")]
+[assembly: AssemblyCopyright("Copyright © 2014 Sony Computer Entertainment America LLC")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("ecf6d869-2c49-42bd-b55c-8d2a918fab96")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/DevTools/DomGen/SchemaGen.cs b/DevTools/DomGen/SchemaGen.cs
new file mode 100644
index 00000000..f8bc01fe
--- /dev/null
+++ b/DevTools/DomGen/SchemaGen.cs
@@ -0,0 +1,457 @@
+//Copyright 2014 Sony Computer Entertainment America LLC. See License.txt.
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Xml;
+
+using Sce.Atf.Dom;
+
+namespace DomGen
+{
+ public static class SchemaGen
+ {
+ ///
+ /// Generates the Schema CSharp class
+ /// Type loader with loaded type and annotation information
+ /// Target namespace of the schema
+ /// Namespace of the class ot be generated
+ /// Name of the class to be generated
+ /// Commandline arguments
+ /// CSharp Schema class as string
+ public static string Generate(SchemaLoader typeLoader, string schemaNamespace, string codeNamespace, string className, string[] args)
+ {
+ bool generateAdapters = false;
+ bool annotatedOnly = false;
+ bool generateEnums = false;
+
+ for (int i = 4; i < args.Length; i++)
+ {
+ string arg = args[i];
+ if (arg == "-a" || arg == "-adapters")
+ generateAdapters = true;
+ else if (arg == "-annotatedOnly")
+ annotatedOnly = true;
+ else if (arg == "-enums")
+ generateEnums = true;
+ }
+
+ XmlSchemaTypeCollection typeCollection = GetTypeCollection(typeLoader, schemaNamespace);
+
+ string targetNamespace = typeCollection.TargetNamespace;
+ XmlQualifiedName[] namespaces = typeCollection.Namespaces;
+ List nodeTypes = new List(typeCollection.GetNodeTypes());
+
+ // Append additional DomNodeTypes from other namespaces, for example if the xs:import was used.
+ // Don't include the built-in "anyType".
+ // The reason to append is that if there is a conflict with the imported types, priority should
+ // be given to the types defined in the importing schema file.
+ foreach (XmlQualifiedName knownNamespace in namespaces)
+ {
+ if (knownNamespace.Namespace != targetNamespace &&
+ knownNamespace.Namespace != "http://www.w3.org/2001/XMLSchema")
+ nodeTypes.AddRange(typeCollection.GetNodeTypes(knownNamespace.Namespace));
+ }
+
+ List rootElements = new List(typeCollection.GetRootElements());
+
+ StringBuilder sb = new StringBuilder();
+
+ GenerateFileProlog(codeNamespace, args, sb);
+
+ WriteLine(sb, " public static class {0}", className);
+ WriteLine(sb, " {{");
+
+ WriteLine(sb, " public const string NS = \"{0}\";", targetNamespace);
+ WriteLine(sb, "");
+ WriteLine(sb, " public static void Initialize(XmlSchemaTypeCollection typeCollection)");
+ WriteLine(sb, " {{");
+ WriteLine(sb, " Initialize((ns,name)=>typeCollection.GetNodeType(ns,name),");
+ WriteLine(sb, " (ns,name)=>typeCollection.GetRootElement(ns,name));");
+ WriteLine(sb, " }}");
+ WriteLine(sb, "");
+ WriteLine(sb, " public static void Initialize(IDictionary typeCollections)");
+ WriteLine(sb, " {{");
+ WriteLine(sb, " Initialize((ns,name)=>typeCollections[ns].GetNodeType(name),");
+ WriteLine(sb, " (ns,name)=>typeCollections[ns].GetRootElement(name));");
+ WriteLine(sb, " }}");
+ WriteLine(sb, "");
+ WriteLine(sb, " private static void Initialize(Func getNodeType, Func getRootElement)");
+ WriteLine(sb, " {{");
+
+ StringBuilder fieldSb = new StringBuilder();
+ Dictionary domNodeTypeToClassName = new Dictionary(nodeTypes.Count);
+ Dictionary classNameToDomNodeType = new Dictionary(nodeTypes.Count);
+ foreach (DomNodeType nodeType in nodeTypes)
+ {
+ // Determine if the type should be included or skipped
+ // If the -annotatedOnly argument is set: types will be included
+ // ONLY IF is defined for this type, all other types will be skipped
+ // If -annotatedOnly is NOT set: types will be included by default
+ // UNLESS ({1}); }}", typeName, attrInfoName);
+ WriteLine(sb, " set {{ SetAttribute({0}, value); }}", attrInfoName);
+ WriteLine(sb, " }}");
+ }
+
+ foreach (ChildInfo childInfo in nodeType.Children)
+ {
+ if (childInfo.DefiningType != nodeType)
+ continue;
+
+ string childName = childInfo.Name;
+ string propertyName = childName;
+ string typeName = GetClassName(childInfo.Type, domNodeTypeToClassName);
+
+ string childInfoName = className + "." + adapterClassName + "." + childName + "Child";
+
+ if (childInfo.IsList)
+ {
+ WriteLine(sb, " public IList<{0}> {1}", typeName, propertyName);
+ WriteLine(sb, " {{");
+ WriteLine(sb, " get {{ return GetChildList<{0}>({1}); }}", typeName, childInfoName);
+ WriteLine(sb, " }}");
+ }
+ else
+ {
+ WriteLine(sb, " public {0} {1}", typeName, propertyName);
+ WriteLine(sb, " {{");
+ WriteLine(sb, " get {{ return GetChild<{0}>({1}); }}", typeName, childInfoName);
+ WriteLine(sb, " set {{ SetChild({0}, value); }}", childInfoName);
+ WriteLine(sb, " }}");
+ }
+ }
+
+ WriteLine(sb, " }}");
+ WriteLine(sb, "");
+ }
+ }
+
+ GenerateFileEpilog(sb);
+
+ return sb.ToString();
+ }
+
+ private static void GenerateEnums(StringBuilder sb,
+ SchemaLoader typeLoader,
+ XmlQualifiedName[] namespaces,
+ Dictionary domNodeTypeToClassName,
+ Dictionary classNameToDomNodeType)
+ {
+ // Temp code
+ // Currently the only way I can see to find out which strings are enum type
+ // is to search for the StringEnumRule on the AttributeType
+ // If this exists then use reflection to access the values list
+ // This could and should be done in some nicer way in the future!
+ System.Reflection.FieldInfo fInfo = typeof(StringEnumRule).GetField("m_values", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
+ if (fInfo != null)
+ {
+ var enumAttributeTypes = new HashSet();
+
+ foreach (AttributeType attributeType in typeLoader.GetAttributeTypes())
+ {
+ StringEnumRule rule = attributeType.Rules.FirstOrDefault(x => x is StringEnumRule) as StringEnumRule;
+ if (rule != null)
+ {
+ if (enumAttributeTypes.Add(attributeType))
+ {
+ string[] values = fInfo.GetValue(rule) as string[];
+ if (values != null)
+ {
+ string enumTypeName = GetClassName(namespaces, attributeType, domNodeTypeToClassName, classNameToDomNodeType);
+ WriteLine(sb, "");
+ WriteLine(sb, " public enum {0}", enumTypeName);
+ WriteLine(sb, " {{");
+
+ foreach (string value in values)
+ {
+ WriteLine(sb, " " + value + ",");
+ }
+
+ if (values.Length > 0)
+ sb.Length = sb.Length - 1;
+
+ WriteLine(sb, " }}");
+
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private static void GenerateFields(DomNodeType nodeType, string typeName, StringBuilder sb)
+ {
+ WriteLine(sb, " public static class {0}", typeName);
+ WriteLine(sb, " {{");
+
+ WriteLine(sb, " public static DomNodeType Type;");
+ foreach (AttributeInfo attributeInfo in nodeType.Attributes)
+ {
+ string attrInfoName = CreateIdentifier(attributeInfo.Name + "Attribute");
+ WriteLine(sb, " public static AttributeInfo {0};", attrInfoName);
+ }
+ foreach (ChildInfo child in nodeType.Children)
+ {
+ string childInfoName = CreateIdentifier(child.Name + "Child");
+ WriteLine(sb, " public static ChildInfo {0};", childInfoName);
+ }
+
+ WriteLine(sb, " }}");
+ }
+
+ private static void GenerateInitializers(DomNodeType nodeType, string typeName, StringBuilder sb)
+ {
+ string ns = "";
+ string name = nodeType.Name;
+ int separator = name.LastIndexOf(':'); // find colon separating ns from name
+ if (separator >= 0)
+ {
+ ns = name.Substring(0, separator);
+ name = name.Substring(separator + 1);
+ }
+
+ WriteLine(sb, " {0}.Type = getNodeType(\"{1}\", \"{2}\");", typeName, ns, name);
+
+ foreach (AttributeInfo attributeInfo in nodeType.Attributes)
+ {
+ string attrInfoName = CreateIdentifier(attributeInfo.Name + "Attribute");
+ WriteLine(sb, " {1}.{0} = {1}.Type.GetAttributeInfo(\"{2}\");", attrInfoName, typeName, attributeInfo.Name);
+ }
+ foreach (ChildInfo childInfo in nodeType.Children)
+ {
+ string childInfoName = CreateIdentifier(childInfo.Name + "Child");
+ WriteLine(sb, " {1}.{0} = {1}.Type.GetChildInfo(\"{2}\");", childInfoName, typeName, childInfo.Name);
+ }
+ }
+
+ private static XmlSchemaTypeCollection GetTypeCollection(XmlSchemaTypeLoader typeLoader, string schemaNamespace)
+ {
+ XmlSchemaTypeCollection typeCollection;
+ if (schemaNamespace != "")
+ {
+ typeCollection = typeLoader.GetTypeCollection(schemaNamespace);
+ }
+ else
+ {
+ IEnumerable collections = typeLoader.GetTypeCollections();
+ typeCollection = Enumerable.First(collections);
+ }
+ if (typeCollection == null)
+ {
+ throw new InvalidOperationException(string.Format("schema namespace '{0}' is missing or has no types", schemaNamespace));
+ }
+ return typeCollection;
+ }
+
+ private static string GetClassName(
+ XmlQualifiedName[] namespaces, NamedMetadata nodeType,
+ Dictionary domNodeTypeToClassName,
+ Dictionary classNameToDomNodeType)
+ {
+ // Remove the namespace decoration, including the ':'.
+ string className = nodeType.Name;
+ foreach (XmlQualifiedName xmlName in namespaces)
+ {
+ if (className.StartsWith(xmlName.Namespace) &&
+ className.Length > xmlName.Namespace.Length &&
+ className[xmlName.Namespace.Length] == ':')
+ {
+ className = className.Substring(xmlName.Namespace.Length + 1);
+ break;
+ }
+ }
+
+ className = CreateIdentifier(className);
+
+ // If we've already seen this class name, revert to the version with the namespace prepended, otherwise
+ // the *.cs file created won't compile.
+ if (classNameToDomNodeType.ContainsKey(className))
+ className = CreateIdentifier(nodeType.Name);
+
+ domNodeTypeToClassName[nodeType.Name] = className;
+ classNameToDomNodeType[className] = nodeType.Name;
+
+ return className;
+ }
+
+ private static string GetClassName(DomNodeType nodeType, Dictionary domNodeTypeToClassName)
+ {
+ return domNodeTypeToClassName[nodeType.Name];
+ }
+
+ private static string CreateIdentifier(string name)
+ {
+ string result;
+ result = name.Replace('/', '_');
+ result = result.Replace('\\', '_');
+ result = result.Replace(':', '_');
+ result = result.Replace('.', '_');
+ result = result.Replace('-', '_');
+ return result;
+ }
+
+ private static void GenerateFileProlog(string codeNamespace, string[] args, StringBuilder sb)
+ {
+ WriteLine(sb, "// -------------------------------------------------------------------------------------------------------------------");
+ WriteLine(sb, "// Generated code, do not edit");
+
+ sb.Append("// Command Line: DomGen");
+ foreach (string s in args)
+ {
+ sb.Append(" \"" + s + '"');
+ }
+ sb.Append(Environment.NewLine);
+
+ WriteLine(sb, "// -------------------------------------------------------------------------------------------------------------------");
+ WriteLine(sb, "");
+ WriteLine(sb, "using System;");
+ WriteLine(sb, "using System.Collections.Generic;");
+ WriteLine(sb, "");
+ WriteLine(sb, "using Sce.Atf.Dom;");
+ WriteLine(sb, "");
+ WriteLine(sb, "namespace {0}", codeNamespace);
+ WriteLine(sb, "{{");
+ }
+
+ private static void GenerateFileEpilog(StringBuilder sb)
+ {
+ WriteLine(sb, "}}");
+ }
+
+ private static void WriteLine(StringBuilder sb, string s, params object[] p)
+ {
+ sb.Append(string.Format(s, p));
+ sb.Append(Environment.NewLine);
+ }
+
+ private static HashSet s_cSharpKeywords = new HashSet(
+ new string[]
+ {
+ "abstract", "event", "new", "struct", "as", "explicit", "null", "switch",
+ "base", "extern", "object", "this", "bool", "false", "operator", "throw",
+ "break", "finally", "out", "true", "byte", "fixed", "override", "try",
+ "case", "float", "params", "typeof", "catch", "for", "private", "uint",
+ "char", "foreach", "protected", "ulong", "checked", "goto", "public", "unchecked",
+ "class", "if", "readonly", "unsafe", "const", "implicit", "ref", "ushort",
+ "continue", "in", "return", "using", "decimal", "int", "sbyte", "virtual",
+ "default", "interface", "sealed", "volatile", "delegate", "internal", "short", "void",
+ "do", "is", "sizeof", "while", "double", "lock", "stackalloc", "else", "long", "static",
+ "enum", "namespace", "string"
+ });
+
+ private static Dictionary s_attributeTypes = new Dictionary();
+
+ static SchemaGen()
+ {
+ s_attributeTypes.Add("Boolean", "bool");
+ s_attributeTypes.Add("BooleanArray", "bool[]");
+ s_attributeTypes.Add("Int8", "byte");
+ s_attributeTypes.Add("Int8Array", "byte[]");
+ s_attributeTypes.Add("UInt8", "ubyte");
+ s_attributeTypes.Add("UInt8Array", "ubyte[]");
+ s_attributeTypes.Add("Int16", "short");
+ s_attributeTypes.Add("Int16Array", "short[]");
+ s_attributeTypes.Add("UInt16", "ushort");
+ s_attributeTypes.Add("UInt16Array", "ushort[]");
+ s_attributeTypes.Add("Int32", "int");
+ s_attributeTypes.Add("Int32Array", "int[]");
+ s_attributeTypes.Add("UInt32", "uint");
+ s_attributeTypes.Add("UInt32Array", "uint[]");
+ s_attributeTypes.Add("Int64", "long");
+ s_attributeTypes.Add("Int64Array", "long[]");
+ s_attributeTypes.Add("UInt64", "ulong");
+ s_attributeTypes.Add("UInt64Array", "ulong[]");
+ s_attributeTypes.Add("Single", "float");
+ s_attributeTypes.Add("SingleArray", "float[]");
+ s_attributeTypes.Add("Double", "double");
+ s_attributeTypes.Add("DoubleArray", "double[]");
+ s_attributeTypes.Add("Decimal", "decimal");
+ s_attributeTypes.Add("DecimalArray", "decimal[]");
+ s_attributeTypes.Add("String", "string");
+ s_attributeTypes.Add("StringArray", "string[]");
+ s_attributeTypes.Add("DateTime", "DateTime");
+ s_attributeTypes.Add("Uri", "Uri");
+ s_attributeTypes.Add("Reference", "DomNode");
+ }
+ }
+}
diff --git a/DevTools/DomGen/SchemaLoader.cs b/DevTools/DomGen/SchemaLoader.cs
new file mode 100644
index 00000000..ecf9116e
--- /dev/null
+++ b/DevTools/DomGen/SchemaLoader.cs
@@ -0,0 +1,42 @@
+using System.Collections.Generic;
+using System.Xml;
+using System.Xml.Schema;
+using Sce.Atf.Dom;
+
+namespace DomGen
+{
+ ///
+ /// Schema loader capturing sce.domgen annotations
+ public class SchemaLoader : XmlSchemaTypeLoader
+ {
+ ///
+ /// Parses schema set annotations and captures the sce.domgen annotation XmlNodes
+ /// to a dictionary indext by type name
+ /// Xml schema set
+ /// Local dictionary to write annotations to.
+ /// This is NOT the same as the DomGenAnnotations dictionary.
+ protected override void ParseAnnotations(XmlSchemaSet schemaSet, IDictionary> annotations)
+ {
+ base.ParseAnnotations(schemaSet, annotations);
+
+ DomGenAnnotations = new Dictionary();
+ foreach (var annotation in annotations)
+ {
+ string typeName = annotation.Key.Name;
+ foreach (XmlNode xmlNode in annotation.Value)
+ {
+ if (xmlNode.Name == "sce.domgen")
+ DomGenAnnotations.Add(typeName, xmlNode);
+ }
+ }
+ }
+
+ ///
+ /// Gets a dictionary of DomGen annotations
+ /// The key is the typeName (DomNodeType.Name) and value
+ /// is the sce.domgen annotation Xml node for this type if one exists,
+ /// null otherwise. Types without sce.domgen annotation are not
+ /// included in this dictionary.
+ public IDictionary DomGenAnnotations { get; private set; }
+ }
+}
diff --git a/DevTools/DomGen/app.config b/DevTools/DomGen/app.config
new file mode 100644
index 00000000..3a190771
--- /dev/null
+++ b/DevTools/DomGen/app.config
@@ -0,0 +1,3 @@
+
+
+
diff --git a/DevTools/DomGen/bin/Atf.Core.dll b/DevTools/DomGen/bin/Atf.Core.dll
new file mode 100644
index 00000000..bb34124b
Binary files /dev/null and b/DevTools/DomGen/bin/Atf.Core.dll differ
diff --git a/DevTools/DomGen/bin/DomGen.exe b/DevTools/DomGen/bin/DomGen.exe
new file mode 100644
index 00000000..a46da197
Binary files /dev/null and b/DevTools/DomGen/bin/DomGen.exe differ
diff --git a/DevTools/DomGen/schemas/atgi.xsd b/DevTools/DomGen/schemas/atgi.xsd
new file mode 100644
index 00000000..5cd922fb
--- /dev/null
+++ b/DevTools/DomGen/schemas/atgi.xsd
@@ -0,0 +1,1076 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DevTools/DomGen/schemas/colladaschema_131.xsd b/DevTools/DomGen/schemas/colladaschema_131.xsd
new file mode 100644
index 00000000..358620eb
--- /dev/null
+++ b/DevTools/DomGen/schemas/colladaschema_131.xsd
@@ -0,0 +1,1037 @@
+
+
+
+
+
+ COLLADA Format Schema
+ Version 1.3.1 Draft 1
+ Copyright 2005 Sony Computer Entertainment America
+ All Rights Reserved
+
+
+
+
+
+ xmlns-able
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Finding flow attribute unneccesary in practice. A unnamed parameter is unbound/skipped.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Variable length value element. The indices form the source's output aggregated by the number of inputs.
+
+
+
+
+
+
+
+
+ Joint nodes and their bind matrices.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Primitive element. Every two indices form a line.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Primitive element. The first two indices form a line. Each subsequent index extends the line from the previous index.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Primitive element. All the indices form a polygon.
+
+
+
+
+
+ Contour Separator. Primitives after this each describe a hole.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Primitive element. Every three indices form a triangle.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Primitive element. The 1st three indices form a triangle. Each subsequent index forms an additional triangle reusing the first and previous indices.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Primitive element. The 1st three indices form a triangle. Each subsequent index forms an additional triangle reusing the previous two indices.
+
+
+
+
+
+
+
+
+
+ Mesh or skin vertices.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Look-at transform (PX, PY, PZ, IX, IY, IZ, UPX, UPY, UPZ)
+
+
+
+
+
+
+
+
+
+
+
+
+ Full 4x4 transformation matrix.
+
+
+
+
+
+
+
+
+
+
+
+ Perspective transformation along the Z axis with the given FOV.
+
+
+
+
+
+
+
+
+
+
+
+ Rotate N degrees about the given axis (DX, DY, DZ, N).
+
+
+
+
+
+
+
+
+
+
+
+ Scale transformation (SX, SY, SZ).
+
+
+
+
+
+
+
+
+
+
+
+ Skew N degrees between the given axes (N, DX1, DY1, DZ1, DX2, DY2, DZ2)
+
+
+
+
+
+
+
+
+
+
+
+ Translate transformation (DX, DY, DZ).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A camera's output is defined its imager.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Asset management information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A bag of techniques.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/DevTools/DomGen/schemas/game.xsd b/DevTools/DomGen/schemas/game.xsd
new file mode 100644
index 00000000..4cf8cb51
--- /dev/null
+++ b/DevTools/DomGen/schemas/game.xsd
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ modifiers="private",editor="ogreEditor"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/DevTools/Localization/ATF Localization Guide.doc b/DevTools/Localization/ATF Localization Guide.doc
new file mode 100644
index 00000000..9385458b
Binary files /dev/null and b/DevTools/Localization/ATF Localization Guide.doc differ
diff --git a/DevTools/Localization/ATF.slp b/DevTools/Localization/ATF.slp
new file mode 100644
index 00000000..ae9d57c5
--- /dev/null
+++ b/DevTools/Localization/ATF.slp
@@ -0,0 +1,20470 @@
+
+
+
+
+ - 123456789_12345678901234567890123456789
+ - ConfirmationDialog
+ - label1
+ - Scea.Controls.PropertyEditing.BoolEditor, Scea.Core
+
+
+
+
+ TColorData
+ TFontColorData
+ TPictureData
+ TStringData
+ TXmlData
+
+
+
+
+
+
+ TColorData
+ TStringData
+ TXmlData
+
+ [rsNew,rsInUse,rsChanged]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.0.0.0
+ Atf.Gui.WinForms
+ 1.0.0.0
+ Atf.Gui.WinForms.dll
+ © 2013 Sony Computer Entertainment America LLC
+ Atf.Gui.WinForms.dll
+ Atf.Gui.WinForms
+ 1.0.0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3.0.0.0
+ SCEA
+ CircuitEditor
+ 1.0.0.0
+ CircuitEditor.exe
+ © 2013 Sony Computer Entertainment America LLC
+ CircuitEditor.exe
+ CircuitEditor
+ 1.0.0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Error
+ エラー
+
+
+
+
+
+
+
+
+
+
+ Warning
+ 警告
+
+
+
+
+
+
+
+
+
+
+ The Live Connect Service failed to initialize due to too many advertisers.
+ Live Connect Service は、アドバタイザー数が多すぎるため、初期化に失敗しました。
+
+
+
+
+
+
+
+
+
+
+ The Live Connect Service failed to initialize because Bonjour is either not installed or the Windows service, 'Bonjour Service', is not running.
+ Live Connect Service は、Bonjour がインストールされていないか、Windows サービス「Bonjour Service」が実行していないため、初期化に失敗しました。
+
+
+
+
+
+
+
+
+
+
+ The Live Connect Service failed to initialize for some unknown reason:
+ Live Connect Service は、不明な理由で初期化に失敗しました:
+
+
+
+
+
+
+
+
+
+
+ Replace
+ 置換
+
+
+
+
+
+
+
+
+
+
+ Unknown
+ 不明
+
+
+
+
+
+
+
+
+
+
+ Can't find source directory
+ ソースディレクトリがみつからない
+
+
+
+
+
+
+
+
+
+
+ Can't find source file
+ ソースファイルがみつからない
+
+
+
+
+
+
+
+
+
+
+ Can't overwrite existing file
+ 既存のファイルを上書きできない
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Plugin initialization failure:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Error
+ エラー
+
+
+
+
+
+
+
+
+
+
+ polys
+ ポリゴン
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Auto-load Documents
+ ドキュメントの自動読み込み
+
+
+
+
+
+
+
+
+
+
+ Load previously open documents on application startup
+ アプリケーションの起動時に前回開いていたドキュメントを読み込みます。
+
+
+
+
+
+
+
+
+
+
+ Auto New Document
+ 新しいドキュメントを自動作成
+
+
+
+
+
+
+
+
+
+
+ Create a new empty document on application startup
+ アプリケーションの起動時に新しい空のドキュメントを作成します。
+
+
+
+
+
+
+
+
+
+
+ Documents
+ ドキュメント
+
+
+
+
+
+
+
+
+
+
+ Customize
+ カスタマイズ
+
+
+
+
+
+
+
+
+
+
+ Press F1 for more info
+ 詳細は、F1 キーを押してください。
+
+
+
+
+
+
+
+
+
+
+ Lock UI Layout
+ UI レイアウトをロック
+
+
+
+
+
+
+
+
+
+
+ Unlock UI Layout
+ UI レイアウトのロックを解除
+
+
+
+
+
+
+
+
+
+
+ Activate Window
+ ウィンドウをアクティブにします。
+
+
+
+
+
+
+
+
+
+
+ Close
+ 閉じる
+
+
+
+
+
+
+
+
+
+
+ Closes the current Tab panel
+ 現在のタブパネルを閉じます。
+
+
+
+
+
+
+
+
+
+
+ Close All But This
+ ほかのタブパネルをすべて閉じる
+
+
+
+
+
+
+
+
+
+
+ Closes all but the current Tab panel
+ 現在選択されているタブパネル以外のタブパネルをすべて閉じます。
+
+
+
+
+
+
+
+
+
+
+ Copy Full Path
+ フルパスをコピー
+
+
+
+
+
+
+
+
+
+
+ Copies the file path for the document
+ ドキュメントのファイルパスをコピーします。
+
+
+
+
+
+
+
+
+
+
+ Open Containing Folder
+ ドキュメントを含むディレクトリを開く
+
+
+
+
+
+
+
+
+
+
+ Opens the folder containing the document in Windows Explorer
+ ドキュメントを含むディレクトリを Windows Explorer で開きます。
+
+
+
+
+
+
+
+
+
+
+ Error!
+ エラー!
+
+
+
+
+
+
+
+
+
+
+ Warning
+ 警告
+
+
+
+
+
+
+
+
+
+
+ Info
+ 情報
+
+
+
+
+
+
+
+
+
+
+ Close
+ 閉じる
+
+
+
+
+
+
+
+
+
+
+ &Save
+ 保存(&S)
+
+
+
+
+
+
+
+
+
+
+ &Discard
+ 破棄(&D)
+
+
+
+
+
+
+
+
+
+
+ Grid Property Editor
+ グリッドプロパティエディター
+
+
+
+
+
+
+
+
+
+
+ Edits selected object properties
+ 選択したオブジェクトのプロパティを編集します。
+
+
+
+
+
+
+
+
+
+
+ http://wiki.ship.scea.com/confluence/display/WWSSDKATF/Property+Editing+Programming+Discussion
+ http://wiki.ship.scea.com/confluence/display/WWSSDKATF/Property+Editing+Programming+Discussion
+
+
+
+
+
+
+
+
+
+
+ An application built using the Authoring Tools Framework
+ Authoring Tools Framework (ATF) を使用して構築されたアプリケーション
+
+
+
+
+
+
+
+
+
+
+ About this Application
+ このアプリケーションについて
+
+
+
+
+
+
+
+
+
+
+ Edit Label
+ ラベルを編集
+
+
+
+
+
+
+
+
+
+
+ Tree View
+ ツリービュー
+
+
+
+
+
+
+
+
+
+
+ Layers
+ レイヤー
+
+
+
+
+
+
+
+
+
+
+ Edits document layers
+ ドキュメントレイヤーを編集します。
+
+
+
+
+
+
+
+
+
+
+ Copy items from the document and paste them here to create layers whose visibility can be controlled by clicking on a check box.
+ ドキュメントからアイテムをコピーしてここに貼り付け、レイヤーを作成します。レイヤーの表示はチェックボックスで制御します。
+
+
+
+
+
+
+
+
+
+
+ Show/Hide Layer
+ レイヤーを表示/非表示
+
+
+
+
+
+
+
+
+
+
+ Drag and Drop
+ ドラッグアンドドロップ
+
+
+
+
+
+
+
+
+
+
+ Project Lister
+ プロジェクトリスト
+
+
+
+
+
+
+
+
+
+
+ Lists objects in the current document
+ 現在のドキュメント内のオブジェクトをリストします。
+
+
+
+
+
+
+
+
+
+
+ Prototypes
+ プロトタイプ
+
+
+
+
+
+
+
+
+
+
+ Creates new instances from prototypes
+ プロトタイプから新しいインスタンスを作成します。
+
+
+
+
+
+
+
+
+
+
+ Copy items from the document and paste them here to create prototypes that can be dragged and dropped onto a canvas.
+ ドキュメントからアイテムをコピーしてここに貼り付け、プロトタイプを作成します。プロトタイプはキャンバスにドラッグアンドドロップできます。
+
+
+
+
+
+
+
+
+
+
+ Resources
+ 参考資料
+
+
+
+
+
+
+
+
+
+
+ Lists available resources
+ 使用可能なりソースをリストします。
+
+
+
+
+
+
+
+
+
+
+ Details View
+ 詳細表示
+
+
+
+
+
+
+
+
+
+
+ Switch to details view
+ 詳細表示に切り替えます。
+
+
+
+
+
+
+
+
+
+
+ Thumbnail View
+ サムネイル表示
+
+
+
+
+
+
+
+
+
+
+ Switch to thumbnail view
+ サムネイル表示に切り替えます。
+
+
+
+
+
+
+
+
+
+
+ Target name already exist
+ ターゲット名は既に存在します。
+
+
+
+
+
+
+
+
+
+
+ Target not selected
+ ターゲットが選択されていません。
+
+
+
+
+
+
+
+
+
+
+ Delete target {0}
+ ターゲット {0} を削除
+
+
+
+
+
+
+
+
+
+
+ Edit Target
+ ターゲットを編集
+
+
+
+
+
+
+
+
+
+
+ Add Target
+ ターゲットを追加
+
+
+
+
+
+
+
+
+
+
+ Fill target name
+ ターゲット名を指定
+
+
+
+
+
+
+
+
+
+
+ Fill host name
+ ホスト名を指定
+
+
+
+
+
+
+
+
+
+
+ Invalid port number
+ ポート番号が不正です。
+
+
+
+
+
+
+
+
+
+
+ Targets
+ ターゲット
+
+
+
+
+
+
+
+
+
+
+ Controls for managing targets.
+ ターゲット管理用のコントロール
+
+
+
+
+
+
+
+
+
+
+ UI Settings
+ UI 設定
+
+
+
+
+
+
+
+
+
+
+ Selected Targets
+ 選択されたターゲット
+
+
+
+
+
+
+
+
+
+
+ Target ...
+ ターゲット...
+
+
+
+
+
+
+
+
+
+
+ Edit targets
+ ターゲットを編集
+
+
+
+
+
+
+
+
+
+
+ Copies the OSC address of this property to the clipboard
+ このプロパティの OSC アドレスをクリップボードにコピーします。
+
+
+
+
+
+
+
+
+
+
+ Copy OSC Address
+ OSC アドレスをコピー
+
+
+
+
+
+
+
+
+
+
+ The receiving port number or IP address are not correctly formatted.
+ 受信ポート番号または IP アドレスが正しくフォーマットされていません。
+
+
+
+
+
+
+
+
+
+
+ The destination port number or IP address are not correctly formatted.
+ 送信先ポート番号または IP アドレスが正しくフォーマットされていません。
+
+
+
+
+
+
+
+
+
+
+ Output
+ 出力
+
+
+
+
+
+
+
+
+
+
+ View errors, warnings, and informative messages
+ エラー、警告、情報メッセージを表示。
+
+
+
+
+
+
+
+
+
+
+ Error
+ エラー
+
+
+
+
+
+
+
+
+
+
+ Warning
+ 警告
+
+
+
+
+
+
+
+
+
+
+ Info
+ 情報
+
+
+
+
+
+
+
+
+
+
+ Palette
+ パレット
+
+
+
+
+
+
+
+
+
+
+ Creates new instances
+ 新しいインスタンスを作成します。
+
+
+
+
+
+
+ ExpandedCategories
+ ExpandedCategories
+
+
+
+
+
+
+
+
+
+
+ Performance Monitor
+ パフォーマンスモニター
+
+
+
+
+
+
+
+
+
+
+ Displays performance data on the currently active Control
+ 現在アクティブなコントロールのパフォーマンスデータを表示します。
+
+
+
+
+
+
+
+
+
+
+ Reset Current
+ このプロパティをリセット
+
+
+
+
+
+
+
+
+
+
+ Reset the current property to its default value
+ 選択されているプロパティをデフォルト値にリセットします。
+
+
+
+
+
+
+
+
+
+
+ Reset All
+ すべてのプロパティをリセット
+
+
+
+
+
+
+
+
+
+
+ Reset all properties to their default values
+ オブジェクトのすべてのプロパティの値をデフォルトにリセットします。
+
+
+
+
+
+
+
+
+
+
+ Copy Property
+ プロパティ値をコピー
+
+
+
+
+
+
+
+
+
+
+ Copies this property's value to the clipboard
+ プロパティの値をクリップボードに貼り付けます。
+
+
+
+
+
+
+
+
+
+
+ Paste Property
+ プロパティを貼り付け
+
+
+
+
+
+
+
+
+
+
+ http://www.ship.scea.com/portal/search/search.action?q=PaletteService+or+Palette&context=resource_WIKI%7CWWSSDKATF
+ http://www.ship.scea.com/portal/search/search.action?q=PaletteService+or+Palette&context=resource_WIKI%7CWWSSDKATF
+
+
+
+
+
+
+
+
+
+
+ Pastes the clipboard into this property's value
+ クリップボードの内容をこのプロパティの値に貼り付けます。
+
+
+
+
+
+
+
+
+
+
+ View In Text Editor
+ テキストエディターに表示
+
+
+
+
+
+
+
+
+
+
+ Open the file in the associated text editor
+ ファイルを関連付けられたテキストエディターで開きます。
+
+
+
+
+
+
+
+
+
+
+ Reset Property
+ プロパティをリセット
+
+
+
+
+
+
+
+
+
+
+ Reset All Properties
+ すべてのプロパティをリセット
+
+
+
+
+
+
+
+
+
+
+ Paste Property
+ プロパティを貼り付け
+
+
+
+
+
+
+
+
+
+
+ Property Editor
+ プロパティエディター
+
+
+
+
+
+
+
+
+
+
+ Rename...
+ 名前を変更...
+
+
+
+
+
+
+
+
+
+
+ Rename selected objects
+ 選択したオブジェクトの名前を変更します。
+
+
+
+
+
+
+
+
+
+
+ http://wiki.ship.scea.com/confluence/display/WWSSDKATF/2012/05/18/Scripting+your+app+with+Python
+ http://wiki.ship.scea.com/confluence/display/WWSSDKATF/2012/05/18/Scripting+your+app+with+Python
+
+
+
+
+
+
+
+
+
+
+ Search and Replace
+ 検索および置換
+
+
+
+
+
+
+
+
+
+
+ Search for elements managed within the currently selected subwindow, and optionally replace their values
+ 現在選択されたサブウィンドウ内の管理された要素を検索し、オプションでその値を置き換えます。
+
+
+
+
+
+
+
+
+
+
+ Preferences
+ 基本設定
+
+
+
+
+
+
+
+
+
+
+ Can't load settings
+ 設定を読み込めません
+
+
+
+
+
+
+
+
+
+
+ Preferences...
+ 基本設定...
+
+
+
+
+
+
+
+
+
+
+ Edit user preferences
+ ユーザー設定を編集します。
+
+
+
+
+
+
+
+
+
+
+ Load or Save Settings...
+ @設定を読み込み/保存...
+
+
+
+
+
+
+
+
+
+
+ User can save or load application settings from files
+ アプリケーション設定の、ファイルへの保存またはファイルからの読み込みです。
+
+
+
+
+
+
+
+
+
+
+ Most Recently Used Skin File
+ 直近に使用されたスキンファイル
+
+
+
+
+
+
+
+
+
+
+ Error loading skin file.
+ スキンファイルの読み込みでエラーが発生しました。
+
+
+
+
+
+
+
+
+
+
+ Edit Current Skin...
+ 現在のスキンを編集...
+
+
+
+
+
+
+
+
+
+
+ Edit the current skin file.
+ 現在のスキンファイルを編集します。
+
+
+
+
+
+
+
+
+
+
+ Reset All Preferences
+ すべての設定をリセット
+
+
+
+
+
+
+
+
+
+
+ Reset all preferences to their default values\?
+ Reset all preferences to their default values?
+ すべての設定値をデフォルトにリセットしますか?
+
+
+
+
+
+
+
+
+
+
+ Load Skin...
+ スキンを読み込み...
+
+
+
+
+
+
+
+
+
+
+ Load and apply a skin file.
+ スキンファイルを読み込み、適用します。
+
+
+
+
+
+
+
+
+
+
+ Create New Skin...
+ 新しいスキンを作成...
+
+
+
+
+
+
+
+
+
+
+ Create a new skin file.
+ 新しいスキンファイルを作成します。
+
+
+
+
+
+
+
+
+
+
+ Reset Skin to Default
+ スキンをデフォルトにリセット
+
+
+
+
+
+
+
+
+
+
+ Export settings
+ 設定をエクスポート
+
+
+
+
+
+
+
+
+
+
+ Setting file
+ 設定ファイル
+
+
+
+
+
+
+
+
+
+
+ Import settings
+ 設定をインポート
+
+
+
+
+
+
+
+
+
+
+ Reset active skin to the default skin.
+ アクティブなスキンをデフォルトスキンにリセットします。
+
+
+
+
+
+
+
+
+
+
+ Cut
+ 切り取り
+
+
+
+
+
+
+
+
+
+
+ Delete
+ 削除
+
+
+
+
+
+
+
+
+
+
+ There was a problem opening the file
+ ファイルを開く際に次の問題が発生しました
+
+
+
+
+
+
+
+
+
+
+ There was a problem saving the file
+ ファイルを保存する際に次の問題が発生しました
+
+
+
+
+
+
+
+
+
+
+ File extension not supported
+ サポートされていないファイル拡張子です。
+
+
+
+
+
+
+
+
+
+
+ A file with that name is already open
+ 同名のファイルがすでに開いています。
+
+
+
+
+
+
+
+
+
+
+ Document Saved
+ ドキュメントが保存されました。
+
+
+
+
+
+
+
+
+
+
+ Document Saved As {0}
+ ドキュメントが {0} として保存されました。
+
+
+
+
+
+
+
+
+
+
+ Couldn't save all documents
+ 一部のドキュメントが保存されませんでした。
+
+
+
+
+
+
+
+
+
+
+ All documents saved
+ すべてのドキュメントが保存されました。
+
+
+
+
+
+
+
+
+
+
+ New
+ 新規
+
+
+
+
+
+
+
+
+
+
+ Creates a new {0} document
+ 新しい{0}ドキュメントを作成します。
+
+
+
+
+
+
+
+
+
+
+ Open
+ 開く
+
+
+
+
+
+
+
+
+
+
+ Save {0}?
+ {0} を保存しますか?
+
+
+
+
+
+
+
+
+
+
+ Open an existing {0} document
+ 既存の{0}ドキュメントを開きます。
+
+
+
+
+
+
+
+
+
+
+ Ready
+ 準備完了
+
+
+
+
+
+
+
+
+
+
+ Ready
+ 準備完了
+
+
+
+
+
+
+
+
+
+
+ Source Control/Enable
+ ソース管理/有効化
+
+
+
+
+
+
+
+
+
+
+ Enable source control
+ Enable Source Control
+ ソース管理を有効にする
+
+
+
+
+
+
+
+
+
+
+ Source Control/Open Connection...
+ ソース管理/接続を開く...
+
+
+
+
+
+
+
+
+
+
+ Source control connection
+ ソース管理の接続
+
+
+
+
+
+
+
+
+
+
+ Source Control/Add
+ ソース管理/追加
+
+
+
+
+
+
+
+
+
+
+ Add to source control
+ ソース管理に追加します。
+
+
+
+
+
+
+
+
+
+
+ Source Control/Check In
+ ソース管理/チェックイン
+
+
+
+
+
+
+
+
+
+
+ Check in to source control
+ ソース管理にチェックインします。
+
+
+
+
+
+
+
+
+
+
+ Source Control/Check Out
+ ソース管理/チェックアウト
+
+
+
+
+
+
+
+
+
+
+ New {0}
+ {0}を新規作成
+
+
+
+
+
+
+
+
+
+
+ Check out from source control
+ ソース管理からチェックアウトします。
+
+
+
+
+
+
+
+
+
+
+ Source Control/Get Latest Version
+ ソース管理/最新版を取得
+
+
+
+
+
+
+
+
+
+
+ Open {0}
+ {0}を開く
+
+
+
+
+
+
+
+
+
+
+ Get latest version from source control
+ ソース管理から最新版を取得します。
+
+
+
+
+
+
+
+
+
+
+ Source Control/Revert
+ ソース管理/元に戻す
+
+
+
+
+
+
+
+
+
+
+ Revert add or check out from source control
+ ソース管理への追加またはチェックアウトを元に戻します。
+
+
+
+
+
+
+
+
+
+
+ Source Control/Refresh Status
+ ソース管理/最新の状態に更新
+
+
+
+
+
+
+
+
+
+
+ Refresh status in source control
+ ソース管理の情報を最新の状態に更新します。
+
+
+
+
+
+
+
+
+
+
+ Source Control/Reconcile Offline Work...
+ ソース管理/オフライン作業を調整
+
+
+
+
+
+
+
+
+
+
+ Reconcile Offline Work
+ オフラインで行った作業を調整します。
+
+
+
+
+
+
+
+
+
+
+ Disable Source Control
+ ソース管理を無効にする
+
+
+
+
+
+
+
+
+
+
+ Add document to Version Control
+ ドキュメントをバージョン管理に追加します。
+
+
+
+
+
+
+
+
+
+
+ Check Out File
+ ファイルをチェックアウト
+
+
+
+
+
+
+
+
+
+
+ Online Help
+ オンラインヘルプ
+
+
+
+
+
+
+
+
+
+
+ Opens an online help page for this app
+ このアプリケーションのオンラインヘルプページを開きます。
+
+
+
+
+
+
+
+
+
+
+ Send Feedback
+ フィードバックを送信
+
+
+
+
+
+
+
+
+
+
+ Send Feedback...
+ フィードバックを送信...
+
+
+
+
+
+
+
+
+
+
+ Add
+ Add document {0} to version control?
+ ドキュメントをバージョン管理に追加しますか?
+
+
+
+
+
+
+
+
+
+
+ Report bug or request feature
+ バグ報告または機能要望
+
+
+
+
+
+
+
+
+
+
+ Check out this file to be able to save the changes?
+ 変更を保存できるようにこのファイルをチェックアウトしますか?
+
+
+
+
+
+
+
+
+
+
+ Version Check Failed
+ バージョンチェックに失敗しました。
+
+
+
+
+
+
+
+
+
+
+ All changes will be lost. Do you want to proceed\?
+ All changes will be lost. Do you want to proceed?
+ 変更はすべて失われます。 続行しますか?
+
+
+
+
+
+
+
+
+
+
+ Proceed with Revert?
+ 元に戻して続行しますか?
+
+
+
+
+
+
+
+
+
+
+ Check for update...
+ アップデートを確認...
+
+
+
+
+
+
+
+
+
+
+ Check for product update
+ 製品アップデートを確認
+
+
+
+
+
+
+
+
+
+
+ Check for update at startup
+ 起動時にアップデートを確認
+
+
+
+
+
+
+
+
+
+
+ Check for product update at startup
+ 起動時に製品アップデートを確認
+
+
+
+
+
+
+
+
+
+
+ Application
+ アプリケーション
+
+
+
+
+
+
+
+
+
+
+ There is a newer version of this program available.
+ このプログラムは、新しいバージョンが利用可能です。
+
+
+
+
+
+
+
+
+
+
+ Your version is {0}
+ 使用中のバージョンは、{0} です。
+
+
+
+
+
+
+
+
+
+
+ The most recent version is {0}
+ 最新のバージョンは、{0} です。
+
+
+
+
+
+
+
+
+
+
+ Update
+ アップデート
+
+
+
+
+
+
+
+
+
+
+ Cannot open url:
+ 次の URL を開くことができません:
+
+
+
+
+
+
+
+
+
+
+ Error
+ エラー
+
+
+
+
+
+
+
+
+
+
+ This software is up to date.
+ このソフトウェアは最新版です。
+
+
+
+
+
+
+
+
+
+
+ Updater
+ アップデーター
+
+
+
+
+
+
+
+
+
+
+ Would you like to download the latest version\?
+ Would you like to download the latest version?
+ 最新バージョンをダウンロードしますか?
+
+
+
+
+
+
+
+
+
+
+ Save layout as...
+ レイアウトに名前を付けて保存します。
+
+
+
+
+
+
+
+
+
+
+ Manage layouts...
+ レイアウトを管理します。
+
+
+
+
+
+
+
+
+
+
+ About
+ バージョン情報
+
+
+
+
+
+
+
+
+
+
+ Yellow
+ 黄
+
+
+
+
+
+
+
+
+
+
+ Blue
+ 青
+
+
+
+
+
+
+
+
+
+
+ Green
+ 緑
+
+
+
+
+
+
+
+
+
+
+ Pink
+ ピンク
+
+
+
+
+
+
+
+
+
+
+ Purple
+ 紫
+
+
+
+
+
+
+
+
+
+
+ Gray
+ グレー
+
+
+
+
+
+
+
+
+
+
+ Drag Items
+ アイテムをドラッグ
+
+
+
+
+
+
+
+
+
+
+ Canvas Bounds
+ キャンバスの境界
+
+
+
+
+
+
+
+
+
+
+ Resize Annotation
+ 注釈のサイズ変更
+
+
+
+
+
+
+
+
+
+
+ Edit Annotation
+ 注釈を編集
+
+
+
+
+
+
+
+
+
+
+ Grid
+ グリッド
+
+
+
+
+
+
+
+
+
+
+ Hide Unconnected Pins
+ 接続されていないピンを隠す
+
+
+
+
+
+
+
+
+
+
+ Group
+ グループ
+
+
+
+
+
+
+
+
+
+
+ Ungroup
+ グループ化解除
+
+
+
+
+
+
+
+
+
+
+ Toggle Show Group Pins When Expanded
+ 展開時にグループのピン表示を切り替え
+
+
+
+
+
+
+
+
+
+
+ Reset Group Pin Names
+ グループピン名をリセット
+
+
+
+
+
+
+
+
+
+
+ Add Layer
+ レイヤーを追加
+
+
+
+
+
+
+
+
+
+
+ Creates a new layer folder
+ 新しいレイヤーフォルダーを作成します。
+
+
+
+
+
+
+
+
+
+
+ New Layer
+ 新規レイヤー
+
+
+
+
+
+
+
+
+
+
+ Prototype
+ プロトタイプ
+
+
+
+
+
+
+
+
+
+
+ Drag Edge
+ エッジをドラッグ
+
+
+
+
+
+
+
+
+
+
+ Resize States
+ ステートのサイズ変更
+
+
+
+
+
+
+
+
+
+
+ Undo
+ 元に戻す
+
+
+
+
+
+
+
+
+
+
+ Reset Pin Names on "{0}"
+ {0} 上のピン名をリセット
+
+
+
+
+
+
+
+
+
+
+ Show Expanded Group Pins on \"{0}\"
+ Show Expanded Group Pins on "{0}"
+ {0}上のグループピンを展開表示
+
+
+
+
+
+
+
+
+
+
+ Hide Unconnected Pins
+ Hide Unconnected Pins on "{0}"
+ {0}上の接続されていないピンを隠す
+
+
+
+
+
+
+
+
+
+
+ Redo
+ やり直し
+
+
+
+
+
+
+
+
+
+
+ Cut
+ 切り取り
+
+
+
+
+
+
+
+
+
+
+ Copy
+ コピー
+
+
+
+
+
+
+
+
+
+
+ Paste
+ 貼り付け
+
+
+
+
+
+
+
+
+
+
+ Copy Template
+ テンプレートをコピー
+
+
+
+
+
+
+
+
+
+
+ Edit Tangent
+ 接線を編集
+
+
+
+
+
+
+ Template Copy-On-Edit
+ 編集時のテンプレートコピー
+
+
+
+
+
+
+
+
+
+
+ You are attempting to edit multiple templates in one transaction, not supported yet.
+ 1 回のトランザクションで複数のテンプレートを編集しようとしていますが、これはまだサポートされていません。
+
+
+
+
+
+
+
+
+
+
+ Template Edit Warning
+ テンプレート編集の警告
+
+
+
+
+
+
+
+
+
+
+ You are attempting to edit a Global Template File! This Template may be referenced in other *.mc files and modifying it will affect the animations that reference it. Are you sure you want to do this?#l
+ グローバルテンプレートファイルを編集しようとしています。 このテンプレートはほかの *.mc ファイルで参照されている可能性があり、変更すると参照元のアニメーションに影響が出ます。 編集しますか?
+
+
+
+
+
+
+
+
+
+
+ Template
+ 編集
+
+
+
+
+
+
+
+
+
+
+ Copy Instance
+ コピー
+
+
+
+
+
+
+
+
+
+
+ Global Template Warning
+ グローバルテンプレートの警告
+
+
+
+
+
+
+
+
+
+
+ Show Expanded Group Pins
+ 展開したグループのピンを表示
+
+
+
+
+
+
+
+
+
+
+ Do you wish to edit the Template or a Copy Instance?#l
+ テンプレートを編集しますか? それともコピーしますか?
+
+
+
+
+
+
+ Template / Copy Edit
+ テンプレート / コピー編集
+
+
+
+
+
+
+
+
+
+
+ Unify Tangents
+ 接線を統合
+
+
+
+
+
+
+
+
+
+
+ Break Tangents
+ 接線を分割
+
+
+
+
+
+
+
+
+
+
+ Edit Pre-Infinity
+ プリインフィニティを編集
+
+
+
+
+
+
+
+
+
+
+ Edit Post-Infinity
+ ポストインフィニティを編集
+
+
+
+
+
+
+
+
+
+
+ Snap
+ スナップ
+
+
+
+
+
+
+
+
+
+
+ Move
+ 移動
+
+
+
+
+
+
+
+
+
+
+ Scale
+ 拡大/縮小
+
+
+
+
+
+
+
+
+
+
+ Resize Curve Limit
+ 曲線境界のサイズ変更
+
+
+
+
+
+
+
+
+
+
+ Add Control Point
+ 制御点を追加
+
+
+
+
+
+
+
+
+
+
+ Insert Control Point
+ 制御点を挿入
+
+
+
+
+
+
+
+
+
+
+ Pre-Infinity
+ プリインフィニティ
+
+
+
+
+
+
+
+
+
+
+ Group
+ グループ
+
+
+
+
+
+
+
+
+
+
+ Post-Infinity
+ ポストインフィニティ
+
+
+
+
+
+
+
+
+
+
+ Curve
+ 曲線
+
+
+
+
+
+
+
+
+
+
+ Edit
+ 編集
+
+
+
+
+
+
+
+
+
+
+ Tangents
+ 接線
+
+
+
+
+
+
+
+
+
+
+ In Tangent
+ イン接線
+
+
+
+
+
+
+
+
+
+
+ Out Tangent
+ アウト接線
+
+
+
+
+
+
+
+
+
+
+ Help
+ ヘルプ
+
+
+
+
+
+
+
+
+
+
+ Quick Help...
+ クイックヘルプ...
+
+
+
+
+
+
+
+
+
+
+ Options
+ オプション
+
+
+
+
+
+
+
+
+
+
+ Input Mode
+ Input mode
+ 入力モード
+
+
+
+
+
+
+
+
+
+
+ Basic
+ 基本
+
+
+
+
+
+
+
+
+
+
+ Advanced
+ 詳細
+
+
+
+
+
+
+
+
+
+
+ Flip Y-Axis
+ Y 座標を反転
+
+
+
+
+
+
+
+
+
+
+ Lock Origin
+ Lock origin
+ 原点をロック
+
+
+
+
+
+
+
+
+
+
+ Type
+ 型
+
+
+
+
+
+
+
+
+
+
+ Type of Selected Curve(s)
+ 選択された曲線の種類
+
+
+
+
+
+
+
+
+
+
+ Linear
+ リニア
+
+
+
+
+
+
+
+
+
+
+ Smooth
+ スムーズ
+
+
+
+
+
+
+
+
+
+
+ Stats
+ 制御点の詳細
+
+
+
+
+
+
+
+
+
+
+ Mouse Position
+ マウスの位置
+
+
+
+
+
+
+
+
+
+
+ Add Point
+ 制御点を追加
+
+
+
+
+
+
+
+
+
+
+ Edit Point
+ 制御点を編集
+
+
+
+
+
+
+
+
+
+
+ (Multiple)
+ (複数)
+
+
+
+
+
+
+
+
+
+
+ Curve Editor
+ CurveEditor
+
+
+
+
+
+
+
+
+
+
+ Edits selected object curves
+ 選択したオブジェクトの曲線を編集します。
+
+
+
+
+
+
+
+
+
+
+ Flip Y-axis
+ Y 座標を反転
+
+
+
+
+
+
+
+
+
+
+ These commands currently do not use their default shortcuts:
+ 現在次のコマンドがデフォルトのショートカットを使用していません。[OK] をクリックすると、デフォルトにリセットされます。
+
+
+
+
+
+
+
+
+
+
+ {0} commands currently do not use their default shortcuts.
+ {0} 個のコマンドが、現在デフォルトのショートカットを使用していません。
+
+
+
+
+
+
+
+
+
+
+ New folder
+ 新しいフォルダー
+
+
+
+
+
+
+
+
+
+
+ Computer
+ コンピューター
+
+
+
+
+
+
+ Select a folder
+ フォルダーを選択してください。
+
+
+
+
+
+
+
+
+
+
+ Open
+ 開く
+
+
+
+
+
+
+
+
+
+
+ Add
+ 追加
+
+
+
+
+
+
+
+
+
+
+ Add array element
+ add array element
+ 配列要素を追加
+
+
+
+
+
+
+
+
+
+
+ Up
+ 上へ
+
+
+
+
+
+
+
+
+
+
+ Down
+ 下へ
+
+
+
+
+
+
+
+
+
+
+ Disabled because no elements selected
+ 要素が選択されていないため、無効になりました。
+
+
+
+
+
+
+
+
+
+
+ Move {0} selected elements up
+ 選択された {0} 個の要素を上に移動。
+
+
+
+
+
+
+
+
+
+
+ Can't move up because first element selected
+ 選択されたのは最初の要素であるため、上に移動できません。
+
+
+
+
+
+
+
+
+
+
+ Move {0} selected elements down
+ 選択された {0} 個の要素を下に移動。
+
+
+
+
+
+
+
+
+
+
+ Can't move down because last element selected
+ 選択されたのは最後の要素であるため、下に移動できません。
+
+
+
+
+
+
+
+
+
+
+ Move elements
+ 要素を移動
+
+
+
+
+
+
+
+
+
+
+ Disabled because no array elements selected
+ 配列が選択されていないため、無効になりました。
+
+
+
+
+
+
+
+
+
+
+ Delete {0} selected array elements
+ 選択された {0} 個の配列要素を削除
+
+
+
+
+
+
+
+
+
+
+ Delete selected array element
+ 選択された配列要素を削除
+
+
+
+
+
+
+
+
+
+
+ delete array element
+ 配列要素を削除
+
+
+
+
+
+
+
+
+
+
+ delete array elements
+ 配列要素を削除
+
+
+
+
+
+
+
+
+
+
+ edit array element
+ 配列要素を編集
+
+
+
+
+
+
+ Disabled because no ItemInserters defined
+ Disabled because no ItemInserters defined
+
+
+
+
+
+
+
+
+
+
+ Always disabled
+ 常に無効
+
+
+
+
+
+
+
+
+
+
+ Add {0}
+ {0} を追加
+
+
+
+
+
+
+
+
+
+
+ Redo
+ Reset all commands to the default shortcuts?
+ ショートカットをリセット
+
+
+
+
+
+
+
+
+
+
+ Choose child type to add
+ 追加する子のタイプを選択
+
+
+
+
+
+
+
+
+
+
+ Disabled because no items are selected
+ アイテムが選択されていないため、無効になりました。
+
+
+
+
+
+
+
+
+
+
+ Delete {0} selected items
+ 選択された {0} 個のアイテムを削除
+
+
+
+
+
+
+
+
+
+
+ Move {0} selected items up
+ 選択された {0} 個のアイテムを上に移動。
+
+
+
+
+
+
+
+
+
+
+ Can't move up because first item is selected
+ 選択されたのは最初のアイテムであるため、上に移動できません。
+
+
+
+
+
+
+
+
+
+
+ Move {0} selected items down
+ 選択された {0} 個のアイテムを下に移動。
+
+
+
+
+
+
+
+
+
+
+ Can't move down because last item is selected
+ 選択されたのは最後のアイテムであるため、下に移動できません。
+
+
+
+
+
+
+
+
+
+
+ [{0} items]
+ [{0} 個のアイテム]
+
+
+
+
+
+
+
+
+
+
+ Insert child
+ 子を挿入
+
+
+
+
+
+
+
+
+
+
+ Remove children
+ 子を削除
+
+
+
+
+
+
+
+
+
+
+ Move children
+ 子を移動
+
+
+
+
+
+
+
+
+
+
+ (none)
+ (なし)
+
+
+
+
+
+
+
+
+
+
+ Unsorted
+ 並べ替えなし
+
+
+
+
+
+
+
+
+
+
+ Alphabetical
+ プロパティ名順
+
+
+
+
+
+
+
+
+
+
+ Categorized
+ カテゴリ別
+
+
+
+
+
+
+
+
+
+
+ Categorized Alphabetical Properties
+ プロパティ名>カテゴリ名順
+
+
+
+
+
+
+
+
+
+
+ Alphabetical Categories
+ カテゴリ名順
+
+
+
+
+
+
+
+
+
+
+ Alphabetical Categories And Properties
+ カテゴリ名>プロパティ名順
+
+
+
+
+
+
+
+
+
+
+ Property Show / Hide
+ プロパティ表示/非表示
+
+
+
+
+
+
+
+
+
+
+ Added Collection Item
+ コレクションアイテムを追加しました。
+
+
+
+
+
+
+
+
+
+
+ Removed Collection Item
+ コレクションアイテムを削除しました。
+
+
+
+
+
+
+
+
+
+
+ Moved Collection Item Down
+ コレクションアイテムを下に移動しました。
+
+
+
+
+
+
+
+
+
+
+ Moved Collection Item Up
+ コレクションアイテムを上に移動しました。
+
+
+
+
+
+
+
+
+
+
+ Edit Property
+ プロパティを編集
+
+
+
+
+
+
+
+
+
+
+ Select a directory
+ ディレクトリを選択してください。
+
+
+
+
+
+
+
+
+
+
+ Move Events
+ イベントを移動
+
+
+
+
+
+
+
+
+
+
+ Control's Name: {0}
+ コントロール名: {0}
+
+
+
+
+
+
+
+
+
+
+ Max frames per second: {0}
+ 1 秒あたり最大フレーム数: {0}
+
+
+
+
+
+
+
+
+
+
+ Total frame count: {0}
+ 総フレーム数: {0}
+
+
+
+
+
+
+
+
+
+
+ Managed memory (KB): {0}
+ 管理されたメモリ (KB): {0}
+
+
+
+
+
+
+
+
+
+
+ Unmanaged memory (KB): {0}
+ 管理されていないメモリ (KB): {0}
+
+
+
+
+
+
+
+
+
+
+ Target: {0}
+ ターゲット: {0}
+
+
+
+
+
+
+
+
+
+
+ Number of rendered frames: {0}
+ レンダリングされたフレーム数: {0}
+
+
+
+
+
+
+
+
+
+
+ Mean rendering time: {0}ms or {1} ticks
+ 平均レンダリング時間: {0} ミリ秒または {1} ティック
+
+
+
+
+
+
+
+
+
+
+ Fastest rendering time: {0}ms or {1} ticks
+ 最短レンダリング時間: {0} ミリ秒または {1} ティック
+
+
+
+
+
+
+
+
+
+
+ The performance report is in the clipboard
+ パフォーマンスレポートはクリップボードにあります
+
+
+
+
+
+
+
+
+
+
+ Slowest rendering time: {0}ms or {1} ticks
+ 最長レンダリング時間: {0} ミリ秒または {1} ティック
+
+
+
+
+
+
+ Performance Report, In Clipboard
+ Performance Report, In Clipboard
+
+
+
+
+
+
+
+
+
+
+ Resize Events
+ イベントのサイズ変更
+
+
+
+
+
+
+
+
+
+
+ Select a layout
+ レイアウトを選択してください。
+
+
+
+
+
+
+
+
+
+
+ DOM Explorer
+ DOM Explorer
+
+
+
+
+
+
+
+
+
+
+ Generic View of DOM
+ DOM の一般的なビュー
+
+
+
+
+
+
+
+
+
+
+ Copy All
+ すべてをコピー
+
+
+
+
+
+
+
+
+
+
+ Clear
+ クリア
+
+
+
+
+
+
+
+
+
+
+ Deep Analysis
+ 詳細解析
+
+
+
+
+
+
+
+
+
+
+ DOM Recorder
+ DOM Recorder
+
+
+
+
+
+
+
+
+
+
+ Records DOM events on the active context and displays them
+ アクティブなコンテキスト上の DOM イベントを記録し、表示します。
+
+
+
+
+
+
+
+
+
+
+ Templates
+ テンプレート
+
+
+
+
+
+
+
+
+
+
+ Reference subgraphs from templates
+ サブグラフをテンプレートから参照します。
+
+
+
+
+
+
+
+
+
+
+ Add Template Folder
+ テンプレートフォルダーを追加
+
+
+
+
+
+
+
+
+
+
+ Creates a new template folder
+ 新しいテンプレートフォルダーを作成します。
+
+
+
+
+
+
+
+
+
+
+ New Template Folder
+ 新しいテンプレートフォルダー
+
+
+
+
+
+
+
+
+
+
+ Promote To Template Library
+ テンプレートライブラリにレベル上げ
+
+
+
+
+
+
+
+
+
+
+ Demote To Copy Instance
+ コピーインスタンスにレベル下げ
+
+
+
+
+
+
+
+
+
+
+ Property Organization
+ プロパティを整理
+
+
+
+
+
+
+
+
+
+
+ http://www.ship.scea.com/portal/search/search.action?q=DomRecorder+OR+%22DOM+Recorder%22&context=resource_WIKI%7CWWSSDKATFhttp://www.ship.scea.com/portal/search/search.action?q=DomRecorder+OR+%22DOM+Recorder%22&context=resource_WIKI%7CWWSSDKATF
+ http://www.ship.scea.com/portal/search/search.action?q=DomRecorder+OR+%22DOM+Recorder%22&context=resource_WIKI%7CWWSSDKATFhttp://www.ship.scea.com/portal/search/search.action?q=DomRecorder+OR+%22DOM+Recorder%22&context=resource_WIKI%7CWWSSDKATF
+
+
+
+
+
+
+
+
+
+
+ Search
+ 検索
+
+
+
+
+
+
+
+
+
+
+ Clear Search
+ 検索結果をクリア
+
+
+
+
+
+
+
+
+
+
+ Navigate back to parent of selected object
+ 選択したオブジェクトの親に戻ります。
+
+
+
+
+
+
+
+
+
+
+ Add Global Template Folder
+ グローバルテンプレートフォルダーを追加
+
+
+
+
+
+
+
+
+
+
+ Creates a Global Template folder based off of a pre-existing .mcc
+ 既存の .mcc を基に、グローバルテンプレートフォルダーを作成します。
+
+
+
+
+
+
+
+
+
+
+ Add External Template Folder
+ 外部テンプレートフォルダーを追加
+
+
+
+
+
+
+
+
+
+
+ Trans.##
+ トランザクション番号
+
+
+
+
+
+
+
+
+
+
+ Description
+ 説明
+
+
+
+
+
+
+
+
+
+
+ Analysis
+ 解析
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Activate Control
+ アクティブなコントロール
+
+
+
+
+
+
+
+
+
+
+ Could not load window layout
+ ウィンドウレイアウトを読み込めません。
+
+
+
+
+
+
+
+
+
+
+ Show/Hide
+ 表示/非表示
+
+
+
+
+
+
+
+
+
+
+ Rename
+ 名前を変更
+
+
+
+
+
+
+
+
+
+
+ About
+ バージョン情報
+
+
+
+
+
+
+
+
+
+
+ Help
+ ヘルプ
+
+
+
+
+
+
+
+
+
+
+ Show Context Help
+ コンテキストヘルプを表示
+
+
+
+
+
+
+
+
+
+
+ Uncheck this to hide help commands in context menus
+ コンテキストメニューにヘルプコマンドを表示しない場合は選択を解除します。
+
+
+
+
+
+
+
+
+
+
+ _Contents
+ コンテンツ(_C)
+
+
+
+
+
+
+
+
+
+
+ Help Contents
+ ヘルプコンテンツ
+
+
+
+
+
+
+
+
+
+
+ _About
+ バージョン情報(_A)
+
+
+
+
+
+
+
+
+
+
+ Shows Information About Application
+ アプリケーションの情報を表示します。
+
+
+
+
+
+
+
+
+
+
+ _File
+ ファイル(_F)
+
+
+
+
+
+
+
+
+
+
+ File Commands
+ ファイルコマンド
+
+
+
+
+
+
+
+
+
+
+ _Edit
+ 編集(_E)
+
+
+
+
+
+
+
+
+
+
+ Editing Commands
+ 編集コマンド
+
+
+
+
+
+
+
+
+
+
+ _View
+ 表示(_V)
+
+
+
+
+
+
+
+
+
+
+ View Commands
+ 表示コマンド
+
+
+
+
+
+
+
+
+
+
+ Modify
+ 変更
+
+
+
+
+
+
+
+
+
+
+ Modify Commands
+ 変更コマンド
+
+
+
+
+
+
+
+
+
+
+ _Format
+ フォーマット(_F)
+
+
+
+
+
+
+
+
+
+
+ Formatting Commands
+ フォーマットコマンド
+
+
+
+
+
+
+
+
+
+
+ _Window
+ ウィンドウ(_W)
+
+
+
+
+
+
+
+
+
+
+ Window Management Commands
+ ウィンドウ管理コマンド
+
+
+
+
+
+
+
+
+
+
+ _Help
+ ヘルプ(_H)
+
+
+
+
+
+
+
+
+
+
+ Help Commands
+ ヘルプコマンド
+
+
+
+
+
+
+
+
+
+
+ Output
+ 出力
+
+
+
+
+
+
+
+
+
+
+ View errors, warnings, and informative messages
+ エラー、警告、情報メッセージを表示。
+
+
+
+
+
+
+
+
+
+
+ Ready
+ 準備完了
+
+
+
+
+
+
+
+
+
+
+ Drag and Drop
+ ドラッグアンドドロップ
+
+
+
+
+
+
+
+
+
+
+ Edit Property
+ プロパティを編集
+
+
+
+
+
+
+
+
+
+
+ Unhandled Exception
+ 未処理例外
+
+
+
+
+
+
+
+
+
+
+ Error
+ エラー
+
+
+
+
+
+
+
+
+
+
+ Please wait...
+ お待ちください...
+
+
+
+
+
+
+
+
+
+
+ Progress
+ 進行状況
+
+
+
+
+
+
+
+
+
+
+ Edit Label
+ ラベルを編集
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Keyboard Shortcuts
+ キーボードショートカット
+
+
+
+
+
+
+
+
+
+
+ Command Icon Size
+ コマンドアイコンのサイズ
+
+
+
+
+
+
+
+
+
+
+ Size of icons on Toolbar buttons
+ ツールバーボタンのアイコンのサイズ。
+
+
+
+
+
+
+
+
+
+
+ Application
+ アプリケーション
+
+
+
+
+
+
+
+
+
+
+ Customize keyboard shortcuts
+ キーボードショートカットをカスタマイズします。
+
+
+
+
+
+
+
+
+
+
+ The format for an IP end point is like \"192.168.0.120:9000\"
+ The format for an IP end point is like "192.168.0.120:9000"
+ IP エンドポイントの形式は、「192.168.0.120:9000」のようになります。
+
+
+
+
+
+
+
+
+
+
+ OSC Receiving Port Number
+ ポート番号を受診する OSC
+
+
+
+
+
+
+
+
+
+
+ The IP Port number that this app listens to for receiving Open Sound Control messages
+ このアプリケーションが Open Sound Control メッセージを受信するためにリッスンする IP ポート番号
+
+
+
+
+
+
+
+
+
+
+ Primary Destination IP Endpoint
+ プライマリの接続先の IP エンドポイント
+
+
+
+
+
+
+
+
+
+
+ The primary IP address and port number that this app sends Open Sound Control messages to. Additional destinations can be added due to auto-configuration
+ このアプリケーションからの Open Sound Control メッセージ送信先のプライマリ IP アドレスおよびポート番号。 自動構成であるため、追加の送信先が追加可能です。
+
+
+
+
+
+
+
+
+
+
+ Preferred Receiving IP Address
+ 優先される受信 IP アドレス
+
+
+
+
+
+
+
+
+
+
+ The preferred IP address that this app listens to for receiving Open Sound Control messages
+ このアプリケーションが Open Sound Control メッセージを受信するために優先的にリッスンする IP アドレス。
+
+
+
+
+
+
+
+
+
+
+ Vita Target
+ Vita ターゲット
+
+
+
+
+
+
+
+
+
+
+ Edit Vita Target in Neighborhood
+ Neighborhood で Vita ターゲットを編集。
+
+
+
+
+
+
+
+
+
+
+ Add New
+ 新規追加
+
+
+
+
+
+
+
+
+
+
+ Creates a new target
+ 新しいターゲットを作成します。
+
+
+
+
+
+
+
+
+
+
+ Remove
+ 削除
+
+
+
+
+
+
+
+
+
+
+ Remove selected target
+ 選択したターゲットを削除します。
+
+
+
+
+
+
+
+
+
+
+ The scope type is unknown
+ スコープの種類が不明です。
+
+
+
+
+
+
+
+
+
+
+ The name must not be empty or all whitespace
+ 名前を空のままにしたり、空白文字のみにすることはできません。
+
+
+
+
+
+
+
+
+
+
+ The property name is unknown:
+ プロパティ名が不明です。
+
+
+
+
+
+
+
+
+
+
+ The IP address format should be like \"192.168.0.1:12345\" or \"2001:740:8deb:0::1:12345\"
+ The IP address format should be like "192.168.0.1:12345" or "2001:740:8deb:0::1:12345"
+ IP アドレスの形式は、「192.168.0.1:12345」または「2001:740:8deb:0::1:12345」のようになります。
+
+
+
+
+
+
+
+
+
+
+ TCP Target
+ TCP ターゲット
+
+
+
+
+
+
+
+
+
+
+ Targets
+ ターゲット
+
+
+
+
+
+
+
+
+
+
+ X86 Target
+ X86 ターゲット
+
+
+
+
+
+
+
+
+
+
+ PS3 Target
+ PS3 ターゲット
+
+
+
+
+
+
+
+
+
+
+ PS4 Target
+ PS4 ターゲット
+
+
+
+
+
+
+
+
+
+
+ Undo {0}
+ 「{0}」を元に戻す
+
+
+
+
+
+
+
+
+
+
+ Redo {0}
+ 「{0}」をやり直す
+
+
+
+
+
+
+
+
+
+
+ Untitled
+ 無題
+
+
+
+
+
+
+
+
+
+
+ Recent Files Count
+ 最近使用したファイルの数
+
+
+
+
+
+
+
+
+
+
+ Number of recent files to display in File Menu
+ [ファイル] > [最近使用したファイル] メニューに表示するファイルの数。
+
+
+
+
+
+
+
+
+
+
+ Documents
+ ドキュメント
+
+
+
+
+
+
+
+
+
+
+ Pin file
+ ファイルをピン留め
+
+
+
+
+
+
+
+
+
+
+ Pin active file to the recent files list
+ アクティブなファイルを最近使用したファイルのリストに常に含めます。
+
+
+
+
+
+
+
+
+
+
+ Recent Files
+ 最近使用したファイル
+
+
+
+
+
+
+
+
+
+
+ empty
+ なし
+
+
+
+
+
+
+
+
+
+
+ No entries in recent files list
+ 最近使用したファイルはありません。
+
+
+
+
+
+
+
+
+
+
+ Must be between 1 and 32
+ 1~32 の間である必要があります。
+
+
+
+
+
+
+
+
+
+
+ Pin active document
+ アクティブなドキュメントをピン留め
+
+
+
+
+
+
+
+
+
+
+ Pin {0}
+ {0} をピン留め
+
+
+
+
+
+
+
+
+
+
+ Unpin {0}
+ {0} のピン留めを解除
+
+
+
+
+
+
+
+
+
+
+ Open a recently used file
+ 最近使用されたファイルを開きます。
+
+
+
+
+
+
+
+
+
+
+ Layouts
+ レイアウト
+
+
+
+
+
+
+
+
+
+
+ Save Layout As...
+ レイアウトに名前を付けて保存...
+
+
+
+
+
+
+
+
+
+
+ Manage Layouts...
+ レイアウトを管理...
+
+
+
+
+
+
+
+
+
+
+ (none)
+ (なし)
+
+
+
+
+
+
+
+
+
+
+ Unknown error code
+ 未知のエラーコード
+
+
+
+
+
+
+
+
+
+
+ Misc
+ その他
+
+
+
+
+
+
+
+
+
+
+ Back
+ 裏面
+
+
+
+
+
+
+
+
+
+
+ Bottom
+ 下部
+
+
+
+
+
+
+
+
+
+
+ Front
+ 前面
+
+
+
+
+
+
+
+
+
+
+ Left
+ 左
+
+
+
+
+
+
+
+
+
+
+ Right
+ 右
+
+
+
+
+
+
+
+
+
+
+ Top
+ 上部
+
+
+
+
+
+
+
+
+
+
+ {0} files
+ {0}ファイル
+
+
+
+
+
+
+
+
+
+
+ All
+ All files
+ すべてのファイル
+
+
+
+
+
+
+
+
+
+
+ All
+ すべての
+
+
+
+
+
+
+
+
+
+
+ Perspective
+ 3D 投影
+
+
+
+
+
+
+
+
+
+
+ Save
+ 保存
+
+
+
+
+
+
+
+
+
+
+ Save the active file
+ アクティブなファイルを保存します。
+
+
+
+
+
+
+
+
+
+
+ http://wiki.ship.scea.com/confluence/display/WWSSDKATF/Using+Standard+Command+Components
+ http://wiki.ship.scea.com/confluence/display/WWSSDKATF/Using+Standard+Command+Components
+
+
+
+
+
+
+
+
+
+
+ Save As ...
+ 名前を付けて保存...
+
+
+
+
+
+
+
+
+
+
+ Save the active file under a new name
+ アクティブなファイルに名前を付けて保存します。
+
+
+
+
+
+
+
+
+
+
+ Save All
+ すべて保存
+
+
+
+
+
+
+
+
+
+
+ Save all open files
+ 開いているファイルをすべて保存します。
+
+
+
+
+
+
+
+
+
+
+ Close
+ 閉じる
+
+
+
+
+
+
+
+
+
+
+ Close the active file
+ アクティブなファイルを閉じます。
+
+
+
+
+
+
+
+
+
+
+ Print...
+ 印刷...
+
+
+
+
+
+
+
+
+
+
+ Print the active document
+ アクティブなドキュメントを印刷します。
+
+
+
+
+
+
+
+
+
+
+ Page Setup...
+ ページ設定...
+
+
+
+
+
+
+
+
+
+
+ Set up page for printing
+ 印刷のためのページ設定をします。
+
+
+
+
+
+
+
+
+
+
+ Print Preview...
+ 印刷プレビュー...
+
+
+
+
+
+
+
+
+
+
+ Show a print preview of the active document
+ アクティブなドキュメントの印刷プレビューを表示します。
+
+
+
+
+
+
+
+
+
+
+ Exit
+ 終了
+
+
+
+
+
+
+
+
+
+
+ Exit Application
+ アプリケーションを終了します。
+
+
+
+
+
+
+
+
+
+
+ Undo
+ 元に戻す
+
+
+
+
+
+
+
+
+
+
+ Undo the last change
+ 直前の変更を元に戻します。
+
+
+
+
+
+
+
+
+
+
+ Redo
+ やり直し
+
+
+
+
+
+
+
+
+
+
+ Redo the last edit
+ 直前の編集をやり直します。
+
+
+
+
+
+
+
+
+
+
+ Cut
+ 切り取り
+
+
+
+
+
+
+
+
+
+
+ Cut the selection and place it on the clipboard
+ 選択部分を切り取り、クリップボードに配置します。
+
+
+
+
+
+
+
+
+
+
+ Copy
+ コピー
+
+
+
+
+
+
+
+
+
+
+ Copy the selection and place it on the clipboard
+ 選択部分をクリップボードにコピーします。
+
+
+
+
+
+
+
+
+
+
+ Paste
+ 貼り付け
+
+
+
+
+
+
+
+
+
+
+ Paste the contents of the clipboard and make that the new selection
+ クリップボードの内容を貼り付け、貼り付けた内容を選択します。
+
+
+
+
+
+
+
+
+
+
+ Delete
+ 削除
+
+
+
+
+
+
+
+
+
+
+ Delete the selection
+ 選択部分を削除します。
+
+
+
+
+
+
+
+
+
+
+ Select All
+ すべて選択
+
+
+
+
+
+
+
+
+
+
+ Select all items
+ すべてのアイテムを選択します。
+
+
+
+
+
+
+
+
+
+
+ Deselect All
+ すべて選択解除
+
+
+
+
+
+
+
+
+
+
+ Deselect all items
+ アイテムの選択をすべて解除します。
+
+
+
+
+
+
+
+
+
+
+ Invert Selection
+ 選択を切り替え
+
+
+
+
+
+
+
+
+
+
+ Select unselected items and deselect selected items
+ 選択されていないアイテムを選択し、選択されているアイテムの選択を解除します。
+
+
+
+
+
+
+
+
+
+
+ Lock
+ ロック
+
+
+
+
+
+
+
+
+
+
+ Lock the selection to disable editing
+ 選択部分が編集できないようにロックします。
+
+
+
+
+
+
+
+
+
+
+ Unlock
+ ロックを解除
+
+
+
+
+
+
+
+
+
+
+ Unlock the selection to enable editing
+ 選択部分が編集できるようにロックを解除します。
+
+
+
+
+
+
+
+
+
+
+ Lock UI Layout
+ UI レイアウトをロック
+
+
+
+
+
+
+
+
+
+
+ Group
+ グループ
+
+
+
+
+
+
+
+
+
+
+ Group the selection into a single item
+ 選択部分をグループとして 1 つにまとめます。
+
+
+
+
+
+
+
+
+
+
+ Ungroup
+ グループ化解除
+
+
+
+
+
+
+
+
+
+
+ Ungroup any selected groups
+ 選択されたグループのグループ化を解除します。
+
+
+
+
+
+
+
+
+
+
+ Hide
+ 隠す
+
+
+
+
+
+
+
+
+
+
+ Hide all selected objects
+ 選択したオブジェクトすべてを隠します。
+
+
+
+
+
+
+
+
+
+
+ Show
+ 表示
+
+
+
+
+
+
+
+
+
+
+ Show all selected objects
+ 選択したオブジェクトすべてを表示します。
+
+
+
+
+
+
+
+
+
+
+ Show Last Hidden
+ 直前に隠したオブジェクトを表示
+
+
+
+
+
+
+
+
+
+
+ Show the last hidden object
+ 直前に隠したオブジェクトを表示します。
+
+
+
+
+
+
+
+
+
+
+ Show All
+ すべて表示
+
+
+
+
+
+
+
+
+
+
+ Show all hidden objects
+ 隠したオブジェクトすべてを表示します。
+
+
+
+
+
+
+
+
+
+
+ Isolate
+ 選択的表示
+
+
+
+
+
+
+
+
+
+
+ Show only the selected objects and hide all others
+ 選択したオブジェクトのみを表示し、ほかのすべてを隠します。
+
+
+
+
+
+
+
+
+
+
+ Frame Selection
+ 選択範囲を最大表示
+
+
+
+
+
+
+
+
+
+
+ Frames all selected objects in the current view
+ 選択したオブジェクトすべてが現在のビューに収まるように表示します。
+
+
+
+
+
+
+
+
+
+
+ Frame All
+ 全体を最大表示
+
+
+
+
+
+
+
+
+
+
+ Frames all objects in the current view
+ すべてのオブジェクトが現在のビューに収まるように表示します。
+
+
+
+
+
+
+
+
+
+
+ Zoom In
+ 拡大
+
+
+
+
+
+
+
+
+
+
+ Zoom In
+ 拡大
+
+
+
+
+
+
+
+
+
+
+ Zoom Out
+ 縮小
+
+
+
+
+
+
+
+
+
+
+ Zoom Out
+ 縮小
+
+
+
+
+
+
+
+
+
+
+ Zoom Reset
+ リセット
+
+
+
+
+
+
+
+
+
+
+ Zoom Reset
+ リセット
+
+
+
+
+
+
+
+
+
+
+ Fit In Active View
+ 現在のビューに表示
+
+
+
+
+
+
+
+
+
+
+ Pan and Zoom to center selection
+ パンおよびズームで選択部分が中央に表示されるようにします。
+
+
+
+
+
+
+
+
+
+
+ Align/Lefts
+ 整列/左揃え
+
+
+
+
+
+
+
+
+
+
+ Align left sides of selected items
+ 選択したアイテムの左端を揃えます。
+
+
+
+
+
+
+
+
+
+
+ Align/Rights
+ 整列/右揃え
+
+
+
+
+
+
+
+
+
+
+ Align right sides of selected items
+ 選択したアイテムの右端を揃えます。
+
+
+
+
+
+
+
+
+
+
+ Align/Centers
+ 整列/中央揃え
+
+
+
+
+
+
+
+
+
+
+ Align centers of selected items
+ 選択したアイテムの中央を揃えます。
+
+
+
+
+
+
+
+
+
+
+ Align/Tops
+ 整列/上揃え
+
+
+
+
+
+
+
+
+
+
+ Align tops of selected items
+ 選択したアイテムの上端を揃えます。
+
+
+
+
+
+
+
+
+
+
+ Align/Bottoms
+ 整列/下揃え
+
+
+
+
+
+
+
+
+
+
+ Align bottoms of selected items
+ 選択したアイテムの下端を揃えます。
+
+
+
+
+
+
+
+
+
+
+ Align/Middles
+ 整列/上下中央揃え
+
+
+
+
+
+
+
+
+
+
+ Align middles of selected items
+ 選択したアイテムの上下の中央を揃えます。
+
+
+
+
+
+
+
+
+
+
+ Align/To Grid
+ 整列/グリッド
+
+
+
+
+
+
+
+
+
+
+ Align selected items to x/y grid
+ 選択したアイテムを、X/Y グリッドに揃えます。
+
+
+
+
+
+
+
+
+
+
+ Size/Make Equal
+ サイズ/等しくする
+
+
+
+
+
+
+
+
+
+
+ Make selected items have the same size
+ 選択したアイテムのサイズを等しくします。
+
+
+
+
+
+
+
+
+
+
+ Size/Make Widths Equal
+ サイズ/幅を等しくする
+
+
+
+
+
+
+
+
+
+
+ Make selected items have the same width
+ 選択したアイテムの幅を等しくします。
+
+
+
+
+
+
+
+
+
+
+ Size/Make Heights Equal
+ サイズ/高さを等しくする
+
+
+
+
+
+
+
+
+
+
+ Make selected items have the same height
+ 選択したアイテムの高さを等しくします。
+
+
+
+
+
+
+
+
+
+
+ Size/Size to Grid
+ サイズ/グリッド
+
+
+
+
+
+
+
+
+
+
+ Make selected items sizes align to x/y grid
+ 選択したアイテムのサイズを、X/Y グリッドに揃えます。
+
+
+
+
+
+
+
+
+
+
+ Split Horizontal
+ 左右に分割
+
+
+
+
+
+
+
+
+
+
+ Split the window horizontally
+ ウィンドウを左右に分割します。
+
+
+
+
+
+
+
+
+
+
+ Split Vertical
+ 上下に分割
+
+
+
+
+
+
+
+
+
+
+ Split the window vertically
+ ウィンドウを上下に分割します。
+
+
+
+
+
+
+
+
+
+
+ Remove Split
+ 分割を解除
+
+
+
+
+
+
+
+
+
+
+ Remove the split
+ 分割を解除します。
+
+
+
+
+
+
+
+
+
+
+ Tile Horizontal
+ 左右に並べて表示
+
+
+
+
+
+
+
+
+
+
+ Tile the documents, as separate visible items, horizontally
+ 複数のドキュメントを左右に並べて表示します。
+
+
+
+
+
+
+
+
+
+
+ Tile Vertical
+ 上下に並べて表示
+
+
+
+
+
+
+
+
+
+
+ Tile the documents, as separate visible items, vertically
+ 複数のドキュメントを上下に並べて表示します。
+
+
+
+
+
+
+
+
+
+
+ Tile Overlapping
+ 重ねて表示
+
+
+
+
+
+
+
+
+
+
+ Tile the documents, all together as tabbed items, in the central region of the application
+ ドキュメントにタブを付け、アプリケーションの中央部分に重ねて表示します。
+
+
+
+
+
+
+
+
+
+
+ &About
+ バージョン情報(&A)
+
+
+
+
+
+
+
+
+
+
+ Get information about application
+ アプリケーションの情報を表示します。
+
+
+
+
+
+
+
+
+
+
+ File
+ ファイル
+
+
+
+
+
+
+
+
+
+
+ File Commands
+ ファイルコマンド
+
+
+
+
+
+
+
+
+
+
+ Edit
+ 編集
+
+
+
+
+
+
+
+
+
+
+ Editing Commands
+ 編集コマンド
+
+
+
+
+
+
+
+
+
+
+ View
+ 表示
+
+
+
+
+
+
+
+
+
+
+ View Commands
+ 表示コマンド
+
+
+
+
+
+
+
+
+
+
+ Modify
+ 変更
+
+
+
+
+
+
+
+
+
+
+ Modify Commands
+ 変更コマンド
+
+
+
+
+
+
+
+
+
+
+ Format
+ フォーマット
+
+
+
+
+
+
+
+
+
+
+ Formatting Commands
+ フォーマットコマンド
+
+
+
+
+
+
+
+
+
+
+ Window
+ ウィンドウ
+
+
+
+
+
+
+
+
+
+
+ Window Management Commands
+ ウィンドウ管理コマンド
+
+
+
+
+
+
+
+
+
+
+ Help
+ ヘルプ
+
+
+
+
+
+
+
+
+
+
+ Help Commands
+ ヘルプコマンド
+
+
+
+
+
+
+
+
+
+
+ Set Selection
+ 選択範囲を設定
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cut
+ 切り取り
+
+
+
+
+
+
+
+
+
+
+ Delete
+ 削除
+
+
+
+
+
+
+
+
+
+
+ Paste
+ 貼り付け
+
+
+
+
+
+
+
+
+
+
+ Undock
+ ドッキング解除
+
+
+
+
+
+
+
+
+
+ Undocks active tab in central group
+
+
+
+
+
+
+
+
+ Redock/All
+
+
+
+
+
+
+
+
+
+ Redocks all undocked windows
+ ドッキングされてないウィンドウをすべて再ドッキングします
+
+
+
+
+
+
+
+
+
+
+ Activate Window
+ ウィンドウをアクティブにします。
+
+
+
+
+
+
+
+
+
+
+ Activate Control
+ アクティブなコントロール
+
+
+
+
+
+
+
+
+
+
+ Redock
+ 再ドッキング
+
+
+
+
+
+
+
+
+
+
+ Redocks the undocked window
+ ドッキングされてないウィンドウを再ドッキングします
+
+
+
+
+
+
+
+
+
+
+ Untitled
+ 無題
+
+
+
+
+
+
+
+
+
+
+ Edit Label
+ ラベルを編集
+
+
+
+
+
+
+
+
+
+
+ Layers
+ レイヤー
+
+
+
+
+
+
+
+
+
+
+ Edits document layers
+ ドキュメントレイヤーを編集します。
+
+
+
+
+
+
+
+
+
+ Add/Layer
+
+
+
+
+
+
+
+
+
+ Add Layer
+ レイヤーを追加
+
+
+
+
+
+
+
+
+
+
+ Add Layer
+ レイヤーを追加
+
+
+
+
+
+
+
+
+
+
+ Palette
+ パレット
+
+
+
+
+
+
+
+
+
+
+ Creates new instances
+ 新しいインスタンスを作成します。
+
+
+
+
+
+
+
+
+
+
+ (none)
+ (なし)
+
+
+
+
+
+
+
+
+
+
+ Misc
+ その他
+
+
+
+
+
+
+
+
+
+
+ Error
+ エラー
+
+
+
+
+
+
+
+
+
+
+ Property Organization
+ プロパティを整理
+
+
+
+
+
+
+
+
+
+
+ Unsorted
+ 並べ替えなし
+
+
+
+
+
+
+
+
+
+
+ Alphabetical
+ プロパティ名順
+
+
+
+
+
+
+
+
+
+
+ Categorized
+ カテゴリ別
+
+
+
+
+
+
+
+
+
+ Categorized, Alphabetical Properties
+
+
+
+
+
+
+
+
+
+ Alphabetical Categories
+ カテゴリ名順
+
+
+
+
+
+
+
+
+
+ Alphabetical Categories and Properties
+
+
+
+
+
+
+
+
+
+ Property Editor
+ プロパティエディター
+
+
+
+
+
+
+
+
+
+
+ Edits selected object properties
+ 選択したオブジェクトのプロパティを編集します。
+
+
+
+
+
+
+
+
+
+ Data conversion error:
+
+
+
+
+
+
+
+
+
+ Drag and Drop
+ ドラッグアンドドロップ
+
+
+
+
+
+
+
+
+
+
+ Drag and Drop
+ ドラッグアンドドロップ
+
+
+
+
+
+
+
+
+
+
+ Set Selection
+ 選択範囲を設定
+
+
+
+
+
+
+
+
+
+
+ Grid X
+ X軸のステップ幅
+
+
+
+
+
+
+
+
+
+ Grid's vertical step size
+
+
+
+
+
+
+
+
+
+ Grid Y
+ Y軸
+
+
+
+
+
+
+
+
+
+ Grid's horizontal step size
+
+
+
+
+
+
+
+
+
+ Formatting Commands
+ フォーマットコマンド
+
+
+
+
+
+
+
+
+
+ Align Left Sides
+
+
+
+
+
+
+
+
+ Align Tops
+
+
+
+
+
+
+
+
+ Align Right Sides
+
+
+
+
+
+
+
+
+ Align Bottoms
+
+
+
+
+
+
+
+
+ Align Centers
+
+
+
+
+
+
+
+
+ Align Middles
+
+
+
+
+
+
+
+
+ Align Middles
+
+
+
+
+
+
+
+
+
+ Make Sizes Equal
+ サイズを同じにする
+
+
+
+
+
+
+
+
+
+
+ Make Widths Equal
+ 幅を同じにする
+
+
+
+
+
+
+
+
+
+
+ Make Heights Equal
+ 高さを同じにする
+
+
+
+
+
+
+
+
+
+ Size to Grid
+
+
+
+
+
+
+
+
+ Do you want to delete this shortcut\?
+
+
+
+
+
+
+
+
+
+ Property Organization
+ プロパティを整理
+
+
+
+
+
+
+
+
+
+
+ Unsorted
+ 並べ替えなし
+
+
+
+
+
+
+
+
+
+
+ Alphabetical
+ プロパティ名順
+
+
+
+
+
+
+
+
+
+
+ Categorized
+ カテゴリ別
+
+
+
+
+
+
+
+
+
+ Categorized, Alphabetical
+
+
+
+
+
+
+
+
+
+ Alphabetical Categories
+ カテゴリ名順
+
+
+
+
+
+
+
+
+
+ Alphabetical Categories and Properties
+
+
+
+
+
+
+
+
+
+ Grid Property Editor
+ グリッドプロパティエディター
+
+
+
+
+
+
+
+
+
+
+ Edits selected object properties
+ 選択したオブジェクトのプロパティを編集します。
+
+
+
+
+
+
+
+
+
+
+ (none)
+ (なし)
+
+
+
+
+
+
+
+
+
+
+ Lock Selection
+ 選択をロック
+
+
+
+
+
+
+
+
+
+
+ Unlock Selection
+ 選択のロック解除
+
+
+
+
+
+
+
+
+
+ Command Keyboard Shortcuts
+
+
+
+
+
+
+
+
+
+ Command Icon Size
+ コマンドアイコンのサイズ
+
+
+
+
+
+
+
+
+
+
+ Size of icons on Toolbar buttons
+ ツールバーボタンのアイコンのサイズ。
+
+
+
+
+
+
+
+
+
+
+ Application
+ アプリケーション
+
+
+
+
+
+
+
+
+
+
+ Keyboard Shortcuts
+ キーボードショートカット
+
+
+
+
+
+
+
+
+
+
+ Customize keyboard shortcuts
+ キーボードショートカットをカスタマイズします。
+
+
+
+
+
+
+
+
+
+
+ File
+ ファイル
+
+
+
+
+
+
+
+
+
+
+ File Commands
+ ファイルコマンド
+
+
+
+
+
+
+
+
+
+
+ Edit
+ 編集
+
+
+
+
+
+
+
+
+
+
+ Editing Commands
+ 編集コマンド
+
+
+
+
+
+
+
+
+
+
+ View
+ 表示
+
+
+
+
+
+
+
+
+
+
+ View Commands
+ 表示コマンド
+
+
+
+
+
+
+
+
+
+
+ Format
+ フォーマット
+
+
+
+
+
+
+
+
+
+
+ Formatting Commands
+ フォーマットコマンド
+
+
+
+
+
+
+
+
+
+
+ Window
+ ウィンドウ
+
+
+
+
+
+
+
+
+
+
+ Window Management Commands
+ ウィンドウ管理コマンド
+
+
+
+
+
+
+
+
+
+
+ Help
+ ヘルプ
+
+
+
+
+
+
+
+
+
+
+ Help Commands
+ ヘルプコマンド
+
+
+
+
+
+
+
+
+
+
+ Customize
+ カスタマイズ
+
+
+
+
+
+
+
+
+
+
+ Document Saved
+ ドキュメントが保存されました。
+
+
+
+
+
+
+
+
+
+
+ Document Saved As
+ Document Saved As
+
+
+
+
+
+
+
+
+
+
+ Couldn't save all documents
+ 一部のドキュメントが保存されませんでした。
+
+
+
+
+
+
+
+
+
+
+ All documents saved
+ すべてのドキュメントが保存されました。
+
+
+
+
+
+
+
+
+
+
+ New
+ 新規
+
+
+
+
+
+
+
+
+
+
+ Creates a new {0} document
+ 新しい{0}ドキュメントを作成します。
+
+
+
+
+
+
+
+
+
+
+ User Roles
+ ユーザのロール
+
+
+
+
+
+
+
+
+
+
+ Services
+ サービス
+
+
+
+
+
+
+
+
+
+ Roles permitted to current user
+
+
+
+
+
+
+
+
+
+ Preferences
+ 基本設定
+
+
+
+
+
+
+
+
+
+
+ Can't load settings
+ 設定を読み込めません
+
+
+
+
+
+
+
+
+
+
+ File
+ ファイル
+
+
+
+
+
+
+
+
+
+
+ File Commands
+ ファイルコマンド
+
+
+
+
+
+
+
+
+
+
+ Edit
+ 編集
+
+
+
+
+
+
+
+
+
+
+ Editing Commands
+ 編集コマンド
+
+
+
+
+
+
+
+
+
+
+ View
+ 表示
+
+
+
+
+
+
+
+
+
+
+ View Commands
+ 表示コマンド
+
+
+
+
+
+
+
+
+
+
+ Format
+ フォーマット
+
+
+
+
+
+
+
+
+
+
+ Formatting Commands
+ フォーマットコマンド
+
+
+
+
+
+
+
+
+
+
+ Window
+ ウィンドウ
+
+
+
+
+
+
+
+
+
+
+ Window Management Commands
+ ウィンドウ管理コマンド
+
+
+
+
+
+
+
+
+
+
+ Help
+ ヘルプ
+
+
+
+
+
+
+
+
+
+
+ Help Commands
+ ヘルプコマンド
+
+
+
+
+
+
+
+
+
+
+ Exit
+ 終了
+
+
+
+
+
+
+
+
+
+
+ Exit Application
+ アプリケーションを終了します。
+
+
+
+
+
+
+
+
+
+
+ Preferences
+ 基本設定
+
+
+
+
+
+
+
+
+
+
+ Edit user preferences
+ ユーザー設定を編集します。
+
+
+
+
+
+
+
+
+
+ Import-Export Settings
+
+
+
+
+
+
+
+
+ Edit import-export settings
+
+
+
+
+
+
+
+
+
+ Plugins
+ プラグイン
+
+
+
+
+
+
+
+
+
+ Edit plugin list
+
+
+
+
+
+
+
+
+
+ Main Form Bounds
+ メインフォームの境界線
+
+
+
+
+
+
+
+
+
+
+ Misc
+ その他
+
+
+
+
+
+
+
+
+
+ Main Form Size and Location
+
+
+
+
+
+
+
+
+ Main Form State
+
+
+
+
+
+
+
+
+
+ Misc
+ その他
+
+
+
+
+
+
+
+
+
+ Main Form Window state
+
+
+
+
+
+
+
+
+
+ Prototypes
+ プロトタイプ
+
+
+
+
+
+
+
+
+
+
+ Creates new instances from prototypes
+ プロトタイプから新しいインスタンスを作成します。
+
+
+
+
+
+
+
+
+
+
+ Close
+ 閉じる
+
+
+
+
+
+
+
+
+
+ Could not find plugin:
+
+
+
+
+
+
+
+
+ DomExplorer
+
+
+
+
+
+
+
+
+ Generic View of Dom
+
+
+
+
+
+
+
+
+
+ Edit Property
+ プロパティを編集
+
+
+
+
+
+
+
+
+
+
+ Edit Property
+ プロパティを編集
+
+
+
+
+
+
+
+
+
+
+ Recent Files Count
+ 最近使用したファイルの数
+
+
+
+
+
+
+
+
+
+
+ Number of recent files to display in File Menu
+ [ファイル] > [最近使用したファイル] メニューに表示するファイルの数。
+
+
+
+
+
+
+
+
+
+
+ Auto New Document
+ 新しいドキュメントを自動作成
+
+
+
+
+
+
+
+
+
+
+ Create a new empty document on application startup
+ アプリケーションの起動時に新しい空のドキュメントを作成します。
+
+
+
+
+
+
+
+
+
+
+ File Commands
+ ファイルコマンド
+
+
+
+
+
+
+
+
+
+ File Extension Not Supported
+
+
+
+
+
+
+
+
+
+ A file with that name is already open
+ 同名のファイルがすでに開いています。
+
+
+
+
+
+
+
+
+
+
+ Save
+ 保存
+
+
+
+
+
+
+
+
+
+
+ There was a problem opening the file
+ ファイルを開く際に次の問題が発生しました
+
+
+
+
+
+
+
+
+
+
+ Error
+ エラー
+
+
+
+
+
+
+
+
+
+
+ There was a problem opening the file
+ ファイルを開く際に次の問題が発生しました
+
+
+
+
+
+
+
+
+
+
+ There was a problem saving the file
+ ファイルを保存する際に次の問題が発生しました
+
+
+
+
+
+
+
+
+
+
+ Error
+ エラー
+
+
+
+
+
+
+
+
+
+
+ Recent Files
+ 最近使用したファイル
+
+
+
+
+
+
+
+
+
+ Opens a recently used file
+
+
+
+
+
+
+
+
+
+ Reset Current
+ このプロパティをリセット
+
+
+
+
+
+
+
+
+
+
+ Reset the current property to its default value
+ 選択されているプロパティをデフォルト値にリセットします。
+
+
+
+
+
+
+
+
+
+
+ Reset All
+ すべてのプロパティをリセット
+
+
+
+
+
+
+
+
+
+
+ Reset all properties to their default values
+ オブジェクトのすべてのプロパティの値をデフォルトにリセットします。
+
+
+
+
+
+
+
+
+
+
+ Save
+ 保存
+
+
+
+
+
+
+
+
+
+ Saves the active file
+
+
+
+
+
+
+
+
+
+ Save As ...
+ 名前を付けて保存...
+
+
+
+
+
+
+
+
+
+ Saves the active file under a new name
+
+
+
+
+
+
+
+
+
+ Save All
+ すべて保存
+
+
+
+
+
+
+
+
+
+ Saves all open files
+
+
+
+
+
+
+
+
+
+ Close
+ 閉じる
+
+
+
+
+
+
+
+
+
+ Closes the active file
+
+
+
+
+
+
+
+
+
+ Print...
+ 印刷...
+
+
+
+
+
+
+
+
+
+ Prints the active document
+
+
+
+
+
+
+
+
+
+ Page Setup...
+ ページ設定...
+
+
+
+
+
+
+
+
+
+ Configures printing
+
+
+
+
+
+
+
+
+
+ Print Preview...
+ 印刷プレビュー...
+
+
+
+
+
+
+
+
+
+ Shows a print preview of the active document
+
+
+
+
+
+
+
+
+
+ Undo
+ 元に戻す
+
+
+
+
+
+
+
+
+
+ Undoes the last edit
+
+
+
+
+
+
+
+
+
+ Redo
+ やり直し
+
+
+
+
+
+
+
+
+
+ Redoes the last edit
+
+
+
+
+
+
+
+
+
+ Cut
+ 切り取り
+
+
+
+
+
+
+
+
+
+ Cuts the selection and places it on the clipboard
+
+
+
+
+
+
+
+
+
+ Copy
+ コピー
+
+
+
+
+
+
+
+
+
+ Copies the selection and places it on the clipboard
+
+
+
+
+
+
+
+
+
+ Paste
+ 貼り付け
+
+
+
+
+
+
+
+
+
+
+ Delete
+ 削除
+
+
+
+
+
+
+
+
+
+ Deletes the selection
+
+
+
+
+
+
+
+
+
+ Select All
+ すべて選択
+
+
+
+
+
+
+
+
+
+ Selects all
+
+
+
+
+
+
+
+
+
+ Deselect All
+ すべて選択解除
+
+
+
+
+
+
+
+
+
+ Deselects all
+
+
+
+
+
+
+
+
+
+ Invert Selection
+ 選択を切り替え
+
+
+
+
+
+
+
+
+
+ Inverts the selection
+
+
+
+
+
+
+
+
+
+ Lock
+ ロック
+
+
+
+
+
+
+
+
+
+ Locks the selection to disable editing
+
+
+
+
+
+
+
+
+
+ Unlock
+ ロックを解除
+
+
+
+
+
+
+
+
+
+ Unlocks the selection to enable editing
+
+
+
+
+
+
+
+
+
+ Group
+ グループ
+
+
+
+
+
+
+
+
+
+ Groups the selection
+
+
+
+
+
+
+
+
+
+ Ungroup
+ グループ化解除
+
+
+
+
+
+
+
+
+
+ Ungroups any selected groups
+
+
+
+
+
+
+
+
+
+ Align/Lefts
+ 整列/左揃え
+
+
+
+
+
+
+
+
+
+
+ Align left sides of selected items
+ 選択したアイテムの左端を揃えます。
+
+
+
+
+
+
+
+
+
+
+ Align/Rights
+ 整列/右揃え
+
+
+
+
+
+
+
+
+
+
+ Align right sides of selected items
+ 選択したアイテムの右端を揃えます。
+
+
+
+
+
+
+
+
+
+
+ Align/Centers
+ 整列/中央揃え
+
+
+
+
+
+
+
+
+
+
+ Align centers of selected items
+ 選択したアイテムの中央を揃えます。
+
+
+
+
+
+
+
+
+
+
+ Align/Tops
+ 整列/上揃え
+
+
+
+
+
+
+
+
+
+
+ Align tops of selected items
+ 選択したアイテムの上端を揃えます。
+
+
+
+
+
+
+
+
+
+
+ Align/Bottoms
+ 整列/下揃え
+
+
+
+
+
+
+
+
+
+
+ Align bottoms of selected items
+ 選択したアイテムの下端を揃えます。
+
+
+
+
+
+
+
+
+
+
+ Align/Middles
+ 整列/上下中央揃え
+
+
+
+
+
+
+
+
+
+
+ Align middles of selected items
+ 選択したアイテムの上下の中央を揃えます。
+
+
+
+
+
+
+
+
+
+
+ Align/To Grid
+ 整列/グリッド
+
+
+
+
+
+
+
+
+
+
+ Align selected items to x/y grid
+ 選択したアイテムを、X/Y グリッドに揃えます。
+
+
+
+
+
+
+
+
+
+
+ Size/Make Equal
+ サイズ/等しくする
+
+
+
+
+
+
+
+
+
+
+ Make selected items have the same size
+ 選択したアイテムのサイズを等しくします。
+
+
+
+
+
+
+
+
+
+
+ Size/Make Widths Equal
+ サイズ/幅を等しくする
+
+
+
+
+
+
+
+
+
+
+ Make selected items have the same width
+ 選択したアイテムの幅を等しくします。
+
+
+
+
+
+
+
+
+
+
+ Size/Make Heights Equal
+ サイズ/高さを等しくする
+
+
+
+
+
+
+
+
+
+
+ Make selected items have the same height
+ 選択したアイテムの高さを等しくします。
+
+
+
+
+
+
+
+
+
+
+ Size/Size to Grid
+ サイズ/グリッド
+
+
+
+
+
+
+
+
+
+
+ Make selected items sizes align to x/y grid
+ 選択したアイテムのサイズを、X/Y グリッドに揃えます。
+
+
+
+
+
+
+
+
+
+
+ Ready
+ 準備完了
+
+
+
+
+
+
+
+
+
+
+ Defaults
+ デフォルト
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ For user {0} with workspace {1} on server {2}.
+ ユーザー {0}、ワークスペース {1}、サーバー {2}
+
+
+
+
+
+
+
+
+
+
+ Perforce Connection History
+ Perforce の接続履歴
+
+
+
+
+
+
+
+
+
+
+ Perforce Default Connection
+ Perforce のデフォルト接続
+
+
+
+
+
+
+
+
+
+
+ Enable or Disable Perforce Service
+ Perforce サービスを有効または無効にする
+
+
+
+
+
+
+
+
+
+
+ File Status Cache Timeout
+ ファイル状態キャッシュのタイムアウト
+
+
+
+
+
+
+
+
+
+
+ Rate at which cached Perforce file records are updated
+ キャッシュされた Perforce ファイルレコードの更新レート
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Circuit Editor Sample
+ CircuitEditor サンプル
+
+
+
+
+
+
+
+
+
+
+ Master
+ マスター
+
+
+
+
+
+
+
+
+
+
+ Unmaster
+ マスター解除
+
+
+
+
+
+
+
+
+
+
+ Creates a custom module type from the selection
+ 選択部分から、カスタムのモジュールタイプを作成します。
+
+
+
+
+
+
+
+
+
+
+ Expands the last selected custom module
+ 直前に選択したカスタムモジュールを展開します。
+
+
+
+
+
+
+
+
+
+
+ Can't remove connectors from sub-circuits
+ サブ回路からはコネクタを削除できません。
+
+
+
+
+
+
+
+
+
+
+ Can't use a sub-circuit inside itself
+ サブ回路はそれ自身の内部では使用できません。
+
+
+
+
+
+
+
+
+
+
+ Overwrite the existing "{0}" Template with "{1}", or Add new one?#l
+ 既存のテンプレート「{0}」を「{1}」で上書きしますか? それとも新規に追加しますか?
+
+
+
+
+
+
+
+
+
+
+ Overwrite / Add
+ 上書き / 追加
+
+
+
+
+
+
+
+
+
+
+ Overwrite
+ 上書き
+
+
+
+
+
+
+
+
+
+
+ Add
+ 追加
+
+
+
+
+
+
+
+
+
+
+ Circuit Template File (*.circuit)|*.circuit
+ 回路テンプレートファイル (*.circuit)|*.circuit
+
+
+
+
+
+
+
+
+
+
+ Input Files
+ 入力ファイル
+
+
+
+
+
+
+
+
+
+
+ first
+ ファイル 1
+
+
+
+
+
+
+
+
+
+
+ second
+ ファイル 2
+
+
+
+
+
+
+
+
+
+
+ structure
+ 構造
+
+
+
+
+
+
+
+
+
+
+ sub-stream 0
+ サブストリーム 0
+
+
+
+
+
+
+
+
+
+
+ Create Circuit Programmatically
+ 回路をプログラムで作成
+
+
+
+
+
+
+ Edge Style
+ エッジスタイル
+
+
+
+
+
+
+
+
+
+
+ subStream0
+ サブストリーム 0
+
+
+
+
+
+
+
+
+
+
+ Circuit Editor
+ CircuitEditor
+
+
+
+
+
+
+
+
+
+
+ Default Edge Style
+ デフォルトのエッジスタイルです。
+
+
+
+
+
+
+
+
+
+
+ Show Expanded Group Pins
+ 展開したグループのピンを表示
+
+
+
+
+
+
+
+
+
+
+ Wire Style
+ ワイヤーの種類
+
+
+
+
+
+
+
+
+
+
+ Show group pins when a group is expanded
+ グループの展開時に、グループピンを表示します。
+
+
+
+
+
+
+
+
+
+
+ Show Virtual links
+ 仮想リンクを表示
+
+
+
+
+
+
+
+
+
+
+ Show virtual links between group pin and its associated subnodes when a group is expanded
+ グループの展開時に、グループピンと、それに関連するサブノード間の仮想リンクを表示します。
+
+
+
+
+
+
+
+
+
+
+ http://wiki.ship.scea.com/confluence/display/WWSSDKATF/Adaptable+Controls
+ http://wiki.ship.scea.com/confluence/display/WWSSDKATF/Adaptable+Controls
+
+
+
+
+
+
+
+
+
+
+ Circuit
+ 回路
+
+
+
+
+
+
+
+
+
+
+ Circuits
+ 回路
+
+
+
+
+
+
+
+
+
+
+ Comment
+ コメント
+
+
+
+
+
+
+ Comment on state machine
+ ステートマシン上のコメント
+
+
+
+
+
+
+
+
+
+
+ Text
+ テキスト
+
+
+
+
+
+
+
+
+
+
+ Comment Text
+ コメントのテキストです。
+
+
+
+
+
+
+
+
+
+
+ Create a moveable resizable comment on the circuit canvas
+ 回路キャンバス上に、移動およびサイズ変更が可能なコメントを作成します。
+
+
+
+
+
+
+
+
+
+
+ Comment Color
+ コメントの背景色
+
+
+
+
+
+
+
+
+
+
+ Comment background color
+ コメントの背景色です。
+
+
+
+
+
+
+
+
+
+
+ Button
+ ボタン
+
+
+
+
+
+
+
+
+
+
+ On/Off Button
+ オン/オフボタン
+
+
+
+
+
+
+
+
+
+
+ Out
+ 出力
+
+
+
+
+
+
+
+
+
+
+ Light
+ ライト
+
+
+
+
+
+
+
+
+
+
+ Light source
+ 光源
+
+
+
+
+
+
+
+
+
+
+ In
+ 入力
+
+
+
+
+
+
+
+
+
+
+ Speaker
+ スピーカー
+
+
+
+
+
+
+
+
+
+
+ And
+ AND
+
+
+
+
+
+
+
+
+
+
+ Logical AND
+ 論理積
+
+
+
+
+
+
+
+
+
+
+ In1
+ 入力1
+
+
+
+
+
+
+
+
+
+
+ In2
+ 入力2
+
+
+
+
+
+
+
+
+
+
+ Or
+ OR
+
+
+
+
+
+
+
+
+
+
+ Logical OR
+ 論理和
+
+
+
+
+
+
+
+
+
+
+ Sound
+ サウンド
+
+
+
+
+
+
+
+
+
+
+ Sound Player
+ サウンドプレーヤー
+
+
+
+
+
+
+
+
+
+
+ On
+ オン
+
+
+
+
+
+
+
+
+
+
+ Reset
+ リセット
+
+
+
+
+
+
+
+
+
+
+ Pause
+ 一時停止
+
+
+
+
+
+
+
+
+
+
+ Name
+ 名前
+
+
+
+
+
+
+
+
+
+
+ Module name
+ モジュールの名前です。
+
+
+
+
+
+
+
+
+
+
+ ID
+ ID
+
+
+
+
+
+
+
+
+
+
+ Unique ID
+ 一意の ID
+
+
+
+
+
+
+
+
+
+
+ Layer name
+ レイヤー名
+
+
+
+
+
+
+
+
+
+
+ Prototype folder name
+ プロトタイプフォルダー名
+
+
+
+
+
+
+
+
+
+
+ http://wiki.ship.scea.com/confluence/display/WWSSDKATF/ATF+Circuit+Editor+Sample
+ http://wiki.ship.scea.com/confluence/display/WWSSDKATF/ATF+Circuit+Editor+Sample_j
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Timeline Editor Sample
+ TimelineEditor サンプル
+
+
+
+
+
+
+
+
+
+
+ http://wiki.ship.scea.com/confluence/display/WWSSDKATF/ATF+Timeline+Editor+Sample
+ http://wiki.ship.scea.com/confluence/display/WWSSDKATF/ATF+Timeline+Editor+Sample
+
+
+
+
+
+
+
+
+
+
+ Drag and Drop
+ ドラッグアンドドロップ
+
+
+
+
+
+
+
+
+
+
+ Timeline
+ タイムライン
+
+
+
+
+
+
+
+
+
+
+ The file above was changed outside the editor.
+ 上記のファイルは、エディターを使用せずに変更されています。
+
+
+
+
+
+
+
+
+
+
+ Reload, and lose all changes made in the editor\?
+ Reload, and lose all changes made in the editor?
+ 読み込み直して、エディターでの変更をすべて放棄しますか?
+
+
+
+
+
+
+
+
+
+
+ File Changed, Reload\?
+ File Changed, Reload?
+ ファイルが変更されました。読み込み直しますか?
+
+
+
+
+
+
+
+
+
+
+ Timeline events must have a positive integer start time
+ タイムラインイベントの開始時間は正の整数値である必要があります。
+
+
+
+
+
+
+
+
+
+
+ Timeline intervals must have an integer length
+ タイムラインの間隔は、整数である必要があります。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Assets
+ アセット
+
+
+ Behaviors
+ ビヘイビア
+
+
+ Bookmarks
+ ブックマーク
+
+
+ Can't remove game or any of its folders
+ ゲームまたはゲームのフォルダを削除できません
+
+
+ Document
+ ゲーム
+
+
+ Game
+ ゲーム
+
+
+ Game Objects
+ ゲームオブジェクト
+
+
+ Grid
+ グリッド
+
+
+ Height
+ 高さ
+
+
+ Height of grid
+ グリッドの高さ
+
+
+ Invalid Game Object name
+ 不正なゲームオブジェクト名
+
+
+ Layers
+ レイヤー
+
+
+ Level Editor
+ Level Editor
+
+
+ Locator
+ ロケータ
+
+
+ Number of grid subdivisions
+ グリッドの分割数
+
+
+ Pivots
+ 軸
+
+
+ Prefabs
+ プレハブ
+
+
+ Prototypes
+ プロトタイプ
+
+
+ Rotate Pivot
+ 軸の回転
+
+ Origin of Rotation transform relative to Game Object Translation
+
+ Rotation
+ ゲームオブジェクトの回転
+
+ Rotation of Game Object along X, Y, and Z axes, in Degrees
+
+ Scale
+ 拡大/縮小
+
+ Scale of Game Object along X, Y, and Z axes
+
+ Scale Pivot
+ 軸の拡大縮小
+
+ Origin of Scale transform relative to Game Object Translation
+
+ Size
+ サイズ
+
+
+ Size of grid step
+ グリッドステップのサイズ
+
+
+ Snap
+ スナップ
+
+
+ Subdivisions
+ 分割数
+
+
+ Whether to snap to grid
+ グリッドにスナップするかどうかの指定
+
+
+ Transform
+ 変換
+
+
+ Translation
+ ゲームオブジェクトの変換
+
+ Translation of Game Object along X, Y, and Z axes
+
+ Untitled
+ 無題
+
+
+
+
+
+
+
+ 2.4.0.0
+
+ LevelEditor
+ LevelEditor
+
+ 1.0.0.0
+
+ LevelEditor.exe
+ LevelEditor.exe
+
+
+ Copyright © 2006
+ Copyright © 2006
+
+
+ LevelEditor.exe
+ LevelEditor.exe
+
+
+ LevelEditor
+ LevelEditor
+
+ 1.0.0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Drag Connection
+ Drag States
+
+ Move Events
+ イベントを移動
+
+
+ Move Group
+ グループの移動
+
+
+ Move Track
+ トラックの移動
+
+
+ Resize Events
+ イベントのサイズ変更
+
+ Resize State
+ Resize Statechart
+
+
+
+
+
+
+ 1.0.0.0
+
+ Scea.Controls
+ Scea.Controls
+
+ 1.0.0.0
+
+ Scea.Controls.dll
+ Scea.Controls.dll
+
+
+ Copyright © 2006
+ Copyright © 2006
+
+
+ Scea.Controls.dll
+ Scea.Controls.dll
+
+
+ Scea.Controls
+ Scea.Controls
+
+ 1.0.0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ &About
+ バージョン情報(&A)
+
+
+ Activate control
+ コントロールの有効化
+
+
+ Activate window
+ ウィンドウの有効化
+
+
+ Align
+ 揃える
+
+
+ All
+ すべての
+
+
+ Alphabetical
+ プロパティ名順
+
+
+ Alphabetical Categories
+ カテゴリ名順
+
+ Alphabetical Categories and Properties
+
+ Application
+ アプリケーション
+
+
+ Assemblies
+ アセンブリ
+
+
+ Assembly List
+ アセンブリの一覧
+
+
+ Bottoms
+ 下部を揃える
+
+
+ Cannot open url:
+ 次の URL を開くことができません:
+
+
+ Categorized
+ カテゴリ別
+
+ Categorized, Alphabetical Properties
+
+ Centers
+ 横の中心を揃える
+
+
+ Check for product update
+ 製品アップデートを確認
+
+
+ Check for product update at startup
+ 起動時に製品アップデートを確認
+
+
+ Check for Update...
+ アップデートを確認
+
+
+ Check for update at startup
+ 起動時にアップデートを確認
+
+
+ Close
+ 閉じる
+
+
+ Close document
+ ドキュメントを閉じる
+
+
+ Command Shortcuts
+ コマンドショートカット
+
+
+ &Copy
+ コピー
+
+
+ Copy the selection onto the clipboard
+ 選択をクリップボードにコピー
+
+
+ Current User's Roles
+ 現在のユーザのロール
+
+
+ Customize
+ カスタマイズ
+
+
+ Cu&t
+ 切り取り
+
+
+ Cut the selection and put it on the clipboard
+ 選択項目を切り取りしてクリップボードに保存する
+
+
+ Defaults
+ デフォルト
+
+
+ Delete
+ 削除
+
+
+ Are you sure you want to delete the shortcut?
+ ショートカットを削除してもよろしいですか?
+
+
+ Deselect All
+ すべて選択解除
+
+
+ Deselect all items
+ アイテムの選択をすべて解除します。
+
+
+ Document Preferences
+ ドキュメントのプリファレンス...
+
+
+ Would you like to download the latest version?
+ 最新バージョンをダウンロードしますか?
+
+
+ &Edit
+ 編集
+
+
+ Edit document preferences
+ ドキュメントのプリファレンスの編集
+
+
+ Editing Commands
+ 編集コマンド
+
+
+ Edit keyboard shortcuts
+ キーボードショートカットの編集
+
+
+ Edit Property
+ プロパティを編集
+
+
+ Edit Targets
+ ターゲットの編集
+
+
+ Edit user preferences
+ ユーザー設定を編集します。
+
+
+ Error
+ エラー
+
+
+ E&xit
+ 終了
+
+
+ Exit application
+ アプリケーションを終了
+
+
+ &File
+ ファイル
+
+
+ File Commands
+ ファイルコマンド
+
+ Find or replace {0}
+
+ Fit in Active View
+ アクティブウィンドウに合わせる
+
+
+ Format
+ フォーマット
+
+
+ Formatting Commands
+ フォーマットコマンド
+
+
+ Get information about application
+ アプリケーションの情報を表示します。
+
+
+ Group
+ グループ
+
+
+ Group the selection
+ 選択項目をグループ化
+
+
+ &Help
+ ヘルプ
+
+
+ Help Commands
+ ヘルプコマンド
+
+
+ Image size
+ 画像サイズ
+
+
+ Import and export settings
+ インポートとエクスポートの設定
+
+
+ Invert Selection
+ 選択を切り替え
+
+
+ Keyboard
+ キーボード...
+
+
+ Lefts
+ 左部を揃える
+
+
+ Lock
+ ロック
+
+
+ Lock the selection
+ 選択のロック
+
+
+ Main Form Bounds
+ メインフォームの境界線
+
+
+ Main Form Window State
+ ウィンドウのサイズ
+
+
+ Make Heights Equal
+ 高さを同じにする
+
+
+ Make Sizes Equal
+ サイズを同じにする
+
+
+ Make Widths Equal
+ 幅を同じにする
+
+
+ Middles
+ 縦の中心を揃える
+
+
+ Misc
+ その他
+
+
+ &Modify
+ 修正
+
+
+ Commands for choosing manipulators or manipulator options
+ マニピュレータまたはマニピュレータオプションの選択のためのコマンド
+
+
+ none
+ なし
+
+
+ Open recently used document
+ 最近使用したドキュメントを開く
+
+ Opens a recently used file
+
+ Output
+ 出力
+
+
+ Page Setup...
+ ページ設定...
+
+
+ Pan and Zoom to center selection
+ パンおよびズームで選択部分が中央に表示されるようにします。
+
+
+ &Paste
+ 貼り付け
+
+
+ Paste the clipboard into the document
+ クリップボードの内容をドキュメントに貼り付け
+
+
+ Plugins
+ プラグイン
+
+
+ Preferences
+ 基本設定
+
+ &Print...
+ Print Pre&view...
+
+ Problem opening
+ {0} のオープンに問題が生じました
+
+
+ Problem saving
+ 保存に失敗しました
+
+
+ PropertyGrid Control
+ プロパティグリッドの制御
+
+
+ Property Organization
+ プロパティを整理
+
+
+ Ready
+ 準備完了
+
+
+ Recent Files
+ 最近使用したファイル
+
+
+ Recent Files Count
+ 最近使用したファイルの数
+
+ Number of recent file names that are saved
+
+ &Redo
+ やり直し
+
+
+ Redock
+ 再ドッキング
+
+
+ Redocks all undocked windows
+ ドッキングされてないウィンドウをすべて再ドッキングします
+
+
+ Redocks the undocked window
+ ドッキングされてないウィンドウを再ドッキングします
+
+
+ Remove Split
+ 分割を解除
+
+
+ Remove the split
+ 分割を解除します。
+
+
+ Report bug or request feature
+ バグ報告または機能要望
+
+
+ Are you sure you want to reset all settings to their default values?
+ 設定をすべてデフォルト値に戻してもよろしいですか?
+
+
+ Rights
+ 右部を揃える
+
+
+ &Save
+ 保存(&S)
+
+
+ Save All...
+ すべて保存...
+
+
+ Save all open documents
+ 開いているドキュメントをすべて保存
+
+
+ Save &As...
+ 別名で保存...
+
+
+ Save document
+ ドキュメントの保存
+
+
+ Save document under another name
+ ドキュメントを別名で保存します
+
+
+ Save new document?
+ 新規ドキュメントを保存しますか?
+
+
+ Select &All
+ すべて選択
+
+
+ Select all currently de-selected items
+ 現在選択されていない項目をすべて選択
+
+
+ Select all items
+ すべてのアイテムを選択します。
+
+
+ Delete the selection
+ 選択部分を削除します。
+
+
+ Send Feedback
+ フィードバックを送信
+
+
+ Services
+ サービス
+
+
+ Settings
+ 設定
+
+
+ Size
+ サイズ
+
+
+ Split Horizontal
+ 左右に分割
+
+
+ Split the window horizontally
+ ウィンドウを左右に分割します。
+
+
+ Split the window vertically
+ ウィンドウを上下に分割します。
+
+
+ Split Vertical
+ 上下に分割
+
+
+ Target
+ ターゲット
+
+
+ Targets
+ ターゲット
+
+
+ The most recent version is {0}
+ 最新のバージョンは、{0} です。
+
+
+ There is a newer version of this program available#c#l
+ より新しいバージョンのプログラムが入手可能です。#n
+
+
+ There was a problem opening#c#l{1}
+ {1}#nを開くのに失敗しました。
+
+
+ There was a problem opening the file#c#l
+ ファイルを開く際に次の問題が発生しました#n
+
+
+ There was a problem saving#c#l{1}
+ {1}#nを保存するのに失敗しました。
+
+
+ This software is up to date.
+ このソフトウェアは最新版です。
+
+
+ To Grid
+ 項目をグリッドに整列
+
+
+ Toolbar image size
+ ツールバーの画像サイズ
+
+
+ ToolStripContainerSettings
+ ツールストリップコンテナの設定
+
+
+ Tops
+ 上部を揃える
+
+
+ Uncaught exception
+ キャッチされなかった例外
+
+
+ &Undo
+ 取り消し
+
+
+ Undock
+ ドッキング解除
+
+
+ Undocks window from central tabbed area
+ ウィンドウを中央のタブ領域からドッキング解除
+
+
+ Ungroup
+ グループ化解除
+
+
+ Ungroup the selection
+ 選択項目のグループ化を解除
+
+ After saving your work you should close the application and then restart it.
+
+ A problem has occurred in this application.
+ このアプリケーションで問題が発生しました。
+
+
+ Would you like to continue the application so that you can save your work?
+ 作業を保存するために、アプリケーションを継続しますか?
+
+
+ Unexpected Error
+ 予期せぬエラー
+
+
+ Unlock
+ ロックを解除
+
+
+ Unlock the selection
+ 選択項目のロックを解除
+
+
+ Unsorted
+ 並べ替えなし
+
+
+ Untitled
+ 無題
+
+
+ Update
+ アップデート
+
+
+ Updater
+ アップデーター
+
+
+ User Roles
+ ユーザのロール
+
+
+ Version check failed#c#lError:
+ バージョンの確認に失敗しました#n?ー
+
+
+ &View
+ 表示
+
+
+ View Commands
+ 表示コマンド
+
+
+ &Window
+ ウィンドウ
+
+
+ Window Commands
+ ウィンドウコマンド
+
+
+ Your version is {0}
+ 使用中のバージョンは、{0} です。
+
+
+ Zoom In
+ 拡大
+
+
+ Zoom Out
+ 縮小
+
+
+
+
+
+
+
+ 1.0.0.0
+
+ Scea.Core
+ Scea.Core
+
+ 1.0.0.0
+
+ Scea.Core.dll
+ Scea.Core.dll
+
+
+ Copyright © 2006
+ Copyright © 2006
+
+
+ Scea.Core.dll
+ Scea.Core.dll
+
+
+ Scea.Core
+ Scea.Core
+
+ 1.0.0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Add
+ 追加
+
+
+ Add an asset
+ アセットの追加
+
+
+ Add to Source Control
+ ソース管理に追加
+
+
+ A file with that name is already open
+ 同名のファイルがすでに開いています。
+
+
+ Alignment
+ 揃え
+
+
+ All Documents saved
+ すべでのドキュメントが保存されました
+
+
+ All files
+ すべてのファイル
+
+
+ Asset
+ 資産
+
+
+ Assets
+ アセット
+
+ Auto Backup
+ Auto Load Document
+ Load previously Open Documents
+
+ Auto New Document
+ 新しいドキュメントを自動作成
+
+ Create a New Document if no Documents are Loaded
+ Backup Directory
+ Directory where file backups are automatically saved
+ Backup Enabled
+ Enables or disables automatic backup
+ Backup Interval
+ Time to wait before creating automatic backup, in seconds
+ Backup to Same Directory
+ Determines whether backup files are stored in the same directory as the original
+
+ Check In
+ チェックイン
+
+
+ Check Out
+ チェックアウトの取り消し
+
+ Choose Asset Dialog
+
+ Copy Selection
+ 選択をコピー
+
+
+ Couldn't save all documents
+ 一部のドキュメントが保存されませんでした。
+
+
+ Create new {0}
+ 新規の{0}を作成
+
+
+ Create Reference
+ 参照の作成
+
+
+ Cut Selection
+ 選択を切り取り
+
+
+ Delete Selection
+ 選択を削除
+
+
+ Dereference
+ 参照を解除
+
+
+ Deselect all
+ すべて選択しない
+
+
+ Details View
+ 詳細表示
+
+ Asset Details View with sortable columns
+
+ Document saved
+ ドキュメントが保存されました
+
+
+ Document saved as
+ という名前を付けてドキュメントを保存しました
+
+
+ Drag and Drop
+ ドラッグアンドドロップ
+
+
+ Drag and Drop Error
+ ドラッグ&ドロップエラー:
+
+
+ Edit Label
+ ラベルを編集
+
+
+ Editors
+ ゲームエディタ
+
+
+ Edit Properties
+ プロパティの編集
+
+
+ Edit Property
+ プロパティを編集
+
+
+ Edit Reference
+ リファレンスを編集
+
+
+ Error
+ エラー
+
+
+ Existing Asset
+ 既存のアセット
+
+
+ Export
+ エクスポート...
+
+
+ File Commands
+ ファイルコマンド
+
+
+ File extension not supported
+ サポートされていないファイル拡張子です。
+
+
+ Format Commands
+ 書式設定コマンド
+
+
+ Get Latest Vesrion
+ 最新バージョンの取得
+
+
+ Grid X
+ X軸のステップ幅
+
+
+ Grid Y
+ Y軸
+
+
+ has been modified. Save Changes?
+ は変更されています。変更を保存しますか?
+
+
+ Horizontal grid step size
+ 水平グリッドの間隔
+
+
+ Indentation
+ インデント
+
+ Indentation of tree nodes, relative to parent
+
+ Invert selection
+ 選択を反転
+
+
+ Layer
+ レイヤー
+
+
+ Layers
+ レイヤー
+
+
+ Lock Selection
+ 選択をロック
+
+
+ Lua Script
+ Luaスクリプト
+
+ Maximum Copies
+ Maximum number of backup copies that can be created for a document
+
+ Misc
+ その他
+
+
+ &New
+ 新規
+
+
+ New Asset Folder
+ 新規アセットフォルダ
+
+
+ &Open
+ 開く
+
+
+ Open an existing {0}
+ 既存の{0}を開く
+
+
+ Palette
+ パレット
+
+
+ Paste Clipboard
+ クリップボードの貼り付け
+
+
+ Proceed with Revert
+ 復帰の確認
+
+
+ Project
+ ビュー
+
+
+ Properties
+ プロパティ
+
+
+ Property Grid Editor
+ プロパティグリッドコントロール
+
+
+ Prototypes
+ プロトタイプ
+
+
+ Python Script
+ Pythonスクリプト
+
+
+ Redo
+ やり直し
+
+
+ Refresh Status
+ ステータスの更新
+
+
+ Reload Asset
+ アセットの再ロード
+
+
+ Reset All
+ すべてのプロパティをリセット
+
+
+ Reset All Properties
+ すべてのプロパティをリセット
+
+
+ Reset Current
+ このプロパティをリセット
+
+
+ Reset Current Property
+ カレントプロパティをリセット
+
+
+ Reset Property
+ プロパティをリセット
+
+
+ Resolve Reference
+ 参照の解決
+
+
+ Revert
+ 復帰
+
+
+ Revert Add or Check Out
+ 追加したものを復帰またはチェックアウト
+
+
+ All Changes will be lost. Do you want to proceed?
+ 変更はすべて失われます。続行しますか?
+
+
+ &Save
+ 保存(&S)
+
+
+ Save Changes
+ 変更を保存
+
+
+ Select all
+ すべて選択
+
+
+ Select By Expression
+ 式で選択
+
+
+ Set Attribute
+ 属性の設定
+
+
+ Set Value
+ 値の設定
+
+
+ Sizing
+ サイズ
+
+
+ Source Control
+ ソースコントロールへチェックイン
+
+ Subdocument
+
+ Sync
+ 同期
+
+
+ Text File
+ テキストファイル
+
+
+ There was a problem opening a file#c#l
+ ファイルを開くのに失敗しました#n
+
+
+ There was a problem saving a file.#c#l
+ ファイルの保存で問題が生じました。#n
+
+
+ Thumbnail View
+ サムネイル表示
+
+
+ Undo
+ 元に戻す
+
+
+ Unload Unused Assets
+ 未使用アセットのロード解除
+
+
+ Unlock Selection
+ 選択のロック解除
+
+
+ Unresolve Reference
+ 参照の解決解除
+
+
+ Unsupported Extension
+ 拡張子に対応していません。
+
+
+ Untitled
+ 無題
+
+
+ Vertical grid step size
+ 垂直グリッドのステップサイズ
+
+
+ Vertical Scroll Speed
+ 垂直方向のスクロール速度
+
+
+ Vertical Scroll Speed of tree control
+ ツリーコントロールの縦スクロール速度
+
+
+ Would you like to create a reference to this document?
+ このドキュメントへの参照を作成しますか?
+
+
+ XML File
+ XMLファイル
+
+
+
+
+
+ 1.0.0.0
+
+ Scea.Dom
+ Scea.Dom
+
+ 1.0.0.0
+
+ Scea.Dom.dll
+ Scea.Dom.dll
+
+
+ Copyright © 2006
+ Copyright © 2006
+
+
+ Scea.Dom.dll
+ Scea.Dom.dll
+
+
+ Scea.Dom
+ Scea.Dom
+
+ 1.0.0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Error
+ エラー
+
+
+
+
+
+ 1.0.0.0
+
+ Scea.DomRendering
+ Scea.DomRendering
+
+ 1.0.0.0
+
+ Scea.Dom.Rendering.dll
+ Scea.Dom.Rendering.dll
+
+
+ Copyright © 2006
+ Copyright © 2006
+
+
+ Scea.Dom.Rendering.dll
+ Scea.Dom.Rendering.dll
+
+
+ Scea.DomRendering
+ Scea.DomRendering
+
+ 1.0.0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Activate Custom Manipulator
+ カスタムマニピュレータを起動
+
+
+ Activate Move Manipulator
+ 移動マニピュレータを有効にする
+
+
+ Activate Move-Pivot Manipulator
+ 軸移動マニピュレータを有効にする
+
+
+ Activate Rotation Manipulator
+ 回転マニピュレータを有効にする
+
+
+ Activate Scale Manipulator
+ 拡大縮小マニピュレータを有効にする
+
+
+ Activate Selection Manipulator
+ 選択マニピュレータを有効にする
+
+
+ Add
+ 追加
+
+ Align...
+ Aligns selected objects
+ Align Selection Error
+ , and {0} more
+
+ Any Object
+ 任意のオブジェクト
+
+
+ Arcball
+ アークボール
+
+
+ BackFace
+ バックフェース
+
+ Background Color
+
+ Bookmark
+ ブックマーク
+
+
+ Bookmarks
+ ブックマーク
+
+
+ Bottom Center
+ 底の中心にスナップ
+
+
+ Camera/Arcball
+ カメラ/アークボール
+
+ Camera Far Plane
+
+ Camera/Fly
+ カメラ/飛行
+
+
+ Camera/Maya
+ カメラ/Maya
+
+ Camera Near Plane
+
+ Camera/Walk
+ カメラ/歩行
+
+ Cancel Pick
+
+ Error: Can't drop
+ エラー: ドロップできません
+
+
+ Can't drop asset - unsupported asset format
+ アセットをドロップできません - アセットの形式が未サポートです
+
+
+ Can't read collection
+ コレクションを読めません
+
+
+ Center Pivot
+ 軸を中央に移動
+
+
+ Pan and zoom to center selection
+ 選択されたものを中心にするためのパンニングとズーミング
+
+
+ Control Scheme
+ コントロール方式
+
+
+ How the mouse and keyboard control the camera and selection behavior.
+ どの様にマウスとキーボードは、カメラと選択されたものの行動をコントロールするのか
+
+ Copy and Move Selection
+ Copy and Paste Selection
+
+ Custom Manipulator
+ カスタムマニピュレータ
+
+
+ Cycle Render Mode
+ すべてのシェーディングモードを順に切り替える
+
+
+ Design View
+ デザインビュー
+
+ Captions On Selection
+ Display captions only on selected objects that have captions enabled.
+
+ Display Grid
+ 表示/グリッド
+
+
+ Display Rendering Statistics
+ レンダリングの統計を表示
+
+
+ Drag and Drop
+ ドラッグアンドドロップ
+
+
+ Dual Horizontal View
+ デュアル水平ビューに切り替え
+
+
+ Dual Vertical View
+ デュアル垂直ビューに切り替え
+
+
+ Edit Label
+ ラベルを編集
+
+
+ Edit Linear
+ リニアの編集
+
+
+ Editors
+ ゲームエディタ
+
+
+ Edit Tangent
+ 接線を編集
+
+ There must be exactly one target object chosen.
+ Expand All
+ Projectlist expand all children nodes
+
+ Fit
+ フィット
+
+
+ FitAll
+ すべてをフィット
+
+
+ Fit in Active View
+ アクティブウィンドウに合わせる
+
+
+ Fit in All Views
+ すべてのビューにフィット
+
+
+ Fly: WASD + Middle Mouse navigation, mouse-wheel to adjust speed
+ 飛行:WASD+マウス中ボタン操作、速度調整:マウスホイール
+
+
+ Front
+ 前面
+
+
+ Front View
+ 前面ビュー
+
+
+ Game Object
+ ゲームオブジェクト
+
+
+ Grid
+ グリッド
+
+
+ Group
+ グループ
+
+
+ Hide
+ 隠す
+
+
+ Hide Selection
+ 選択された物を隠す
+
+
+ Insert Point
+ ポイントを挿入
+
+
+ Isolate
+ 選択的表示
+
+
+ Layouts
+ レイアウト
+
+
+ Left
+ 左
+
+
+ Lighting
+ ライティング
+
+
+ Loading Asset
+ アセットの読み込み
+
+ Move: Local
+ Lock View From Rotating
+ In a plan view (side, top, or left), should the user be prevented from rotating the camera?
+
+ Maya style Trackball
+ Maya方式のトラックボール
+
+
+ Misc
+ その他
+
+
+ Move
+ 移動
+
+
+ Move Pivot
+ 軸の平行移動
+
+ {0} has no pivot point available.
+
+ none
+ なし
+
+ {0} has no surface point available.
+
+ Origin
+ Origin
+
+
+ Outlined
+ アウトライン
+
+
+ Perspective
+ 3D 投影
+
+
+ Perspective View
+ パースペクティブビュー
+
+ Pick Target
+ Select the target.
+
+ Pivot
+ ピボット
+
+
+ Point
+ 点
+
+ Press the Apply button.
+
+ Projection
+ ビュー
+
+
+ Quad View
+ クワッドビュー
+
+
+ Render Back Faces
+ 裏の面をレンダー
+
+
+ Rendering Statistics
+ レンダリングの統計
+
+
+ Display rendering statistics from the Design View
+ デザイン表示からレンダリングの統計を表示
+
+
+ Rotate
+ 回転
+
+ Rotate On Snap
+ When snapping to another object, rotate to be aligned to the target surface.
+
+ Scale
+ 拡大/縮小
+
+
+ Select
+ 選択
+
+ Select objects to align.
+ Press the Pick Target button and select target.
+
+ Show
+ 表示
+
+
+ Show All
+ すべて表示
+
+
+ Show Last Hidden
+ 直前に隠したオブジェクトを表示
+
+ Show Selection
+
+ Side
+ 側面
+
+
+ Side View
+ サイドビュー
+
+
+ Single View
+ シングルビューに切り替え
+
+
+ Smooth
+ スムーズ
+
+
+ Smooth shading
+ スムーズシェーディング
+
+
+ Smooth shading with wireframe outline
+ ワイヤフレームアウトライン付きのスムースシェーディング
+
+ Snap Angle
+ The rotation increment, in degrees. Set to zero to turn off rotation snapping.
+
+ Snap to grid point instead of just the grid plane. Hold down ctrl.
+ グリッド面でなく、グリッドポイントにスナップする。Ctrlキーを押し続ける。
+
+
+ Snap To Grid Point
+ グリッドポイントにスナップ
+
+
+ Snap To Vertex
+ 頂点にスナップ
+
+
+ Snap to another object's vertex instead of just its surface. Hold down shift.
+ 別のオブジェクトの面でなく、頂点にスナップする。Shiftキーを押し続ける。
+
+
+ Switch to {0}
+ {0}に切り替える
+
+
+ Textured
+ テクスチャを適用
+
+
+ Textured rendering
+ テクスチャレンダリング
+
+
+ Tool Tips
+ ツールのヒント
+
+
+ Top
+ 上部
+
+
+ Top View
+ トップビュー
+
+
+ Transform Node
+ ノードの変換
+
+
+ Ungroup
+ グループ化解除
+
+
+ Up Axis
+ 上軸
+
+
+ View
+ 表示
+
+ Walk: WASD + Middle Mouse, press Alt+MiddleMouse for height, mouse wheel to adjust walk speed
+
+ Wireframe
+ ワイヤフレーム
+
+
+ Wireframe rendering
+ ワイヤフレームレンダリング
+
+ Move: World
+
+
+
+
+ 1.0.0.0
+
+ Scea.Games
+ Scea.Games
+
+ 1.0.0.0
+
+ Scea.Games.dll
+ Scea.Games.dll
+
+
+ Copyright © 2006
+ Copyright © 2006
+
+
+ Scea.Games.dll
+ Scea.Games.dll
+
+
+ Scea.Games
+ Scea.Games
+
+ 1.0.0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ polys
+ ポリゴン
+
+ state changes
+
+ verts
+ 頂点
+
+
+ Back
+ 裏面
+
+
+ Bottom
+ 下部
+
+
+ Front
+ 前面
+
+
+ Left
+ 左
+
+
+ Perspective
+ 3D 投影
+
+
+ Right
+ 右
+
+
+ Top
+ 上部
+
+
+
+
+
+ 1.0.0.0
+
+ Scea.Graphics
+ Scea.Graphics
+
+ 1.0.0.0
+
+ Scea.Graphics.dll
+ Scea.Graphics.dll
+
+
+ Copyright © 2006
+ Copyright © 2006
+
+
+ Scea.Graphics.dll
+ Scea.Graphics.dll
+
+
+ Scea.Graphics
+ Scea.Graphics
+
+ 1.0.0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Asset Folder
+ アセットフォルダ
+
+
+
+
+
+
+
+
+ Name
+ 名前
+
+
+
+ Unique name of Asset
+
+
+
+ General
+ 一般
+
+
+
+
+
+
+
+
+ Location
+ 位置
+
+
+
+ File name of Asset
+
+
+
+
+
+
+
+
+
+ Type
+ 型
+
+
+
+ Content type of Asset
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name
+ 名前
+
+
+
+ Unique name of Game Object
+
+
+
+ General
+ 一般
+
+
+
+
+
+
+
+
+ Visibility
+ 可視状態
+
+
+
+ Whether item is visible in Design View
+
+
+
+ Display
+ 表示
+
+
+
+ Scea.Controls.PropertyEditing.BoolEditor, Scea.Core
+
+
+
+
+
+
+
+
+
+
+
+
+
+ General
+ 一般
+
+
+
+
+ Locked
+ ロック
+
+
+
+ Whether item is locked against edits
+
+
+ Scea.Controls.PropertyEditing.BoolEditor, Scea.Core
+
+
+
+
+
+
+
+ Display
+ 表示
+
+
+
+
+ Display Properties
+ プロパティの表示
+
+
+
+ Visibility of optional features in Design View
+
+
+
+ Scea.Dom.Editors.Internal.FlagsEditor:box,caption,pivot
+ Scea.Dom.Editors.Internal.FlagsEditor:ボックス,キャプション,軸
+
+
+
+
+ Scea.Dom.Editors.Internal.FlagsConverter:box,caption,pivot
+ Scea.Dom.Editors.Internal.FlagsConverter:ボックス,キャプション,軸
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Level Tools
+ レベルツール
+
+
+
+
+
+
+ Game Object Group
+ ゲームオブジェクトグループ
+
+
+
+
+ Game Object Group
+ ゲームオブジェクトグループ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Asset Folder
+ アセットフォルダ
+
+
+
+
+ Asset Folder
+ アセットフォルダ
+
+
+
+
+
+
+
+
+
+
+ Name
+ 名前
+
+
+
+ Unique name of Asset Folder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reference
+ 参照
+
+
+
+
+ Reference
+ 参照
+
+
+
+
+
+
+
+
+
+
+ Visibility
+ 可視状態
+
+
+
+ Whether item is visible in Design View
+
+
+
+ Display
+ 表示
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name
+ 名前
+
+
+
+ Unique name of folder
+
+
+
+
+
+
+
+ Reference
+ 参照
+
+
+
+ File name of folder reference
+
+
+
+ Scea.Dom.Editors.Internal.FileUriEditor
+ Scea.Dom.Editors.Internal.FileUriEditor
+
+
+
+
+
+
+
+
+ Display
+ 表示
+
+
+
+
+ Display Properties
+ プロパティの表示
+
+
+
+ Visibility of optional features in Design View
+
+
+
+ Scea.Dom.Editors.Internal.FlagsEditor:box,caption
+ Scea.Dom.Editors.Internal.FlagsEditor:ボックス,キャプション
+
+
+
+
+ Scea.Dom.Editors.Internal.FlagsConverter:box,caption
+ Scea.Dom.Editors.Internal.FlagsConverter:ボックス,キャプション
+
+
+
+
+
+
+
+
+ Locked
+ ロック
+
+
+
+ Whether item is locked against edits
+
+
+
+
+
+
+
+ Tags
+ タグ
+
+
+
+
+ Semantic tags
+ セマンティックのタグ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Game Object Folder
+ ゲームオブジェクトフォルダ
+
+
+
+
+ Game Object Folder
+ ゲームオブジェクトフォルダ
+
+
+
+
+ Level Tools
+ レベルツール
+
+
+
+
+
+
+
+
+
+
+ Name
+ 名前
+
+
+
+
+ Unique Name of Game Object Folder
+ ゲームオブジェクトフォルダ名
+
+
+
+
+ General
+ 一般
+
+
+
+
+
+
+
+
+ Visibility
+ 可視状態
+
+
+
+ Whether item is visible in Design View
+
+
+
+ Display
+ 表示
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Locked
+ ロック
+
+
+
+ Whether item is locked against edits
+
+
+
+
+
+
+
+ Display
+ 表示
+
+
+
+
+ Display Properties
+ プロパティの表示
+
+
+
+ Visibility of optional features in Design View
+
+
+
+ Scea.Dom.Editors.Internal.FlagsEditor:box,caption
+ Scea.Dom.Editors.Internal.FlagsEditor:ボックス,キャプション
+
+
+
+
+ Scea.Dom.Editors.Internal.FlagsConverter:box,caption
+ Scea.Dom.Editors.Internal.FlagsConverter:ボックス,キャプション
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Prototype Category
+ プロトタイプのカテゴリ
+
+
+
+
+ Prototype Category
+ プロトタイプのカテゴリ
+
+
+
+
+
+
+
+
+ Name
+ 名前
+
+
+
+ Unique name of prototype category
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Prefab Folder
+ プレファブフォルダ
+
+
+
+
+ Prefab Folder
+ プレファブフォルダ
+
+
+
+
+
+
+
+
+
+
+ Name
+ 名前
+
+
+
+ Unique name of prefab folder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Prefab Instance
+ プレファブインスタンス
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Layer
+ レイヤー
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Position
+ 位置
+
+
+
+
+ Position
+ 位置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ param
+ パラメータ
+
+
+
+
+ Constraint paramater
+ 制約パラメータ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Position
+ 位置
+
+
+
+
+ Position
+ 位置
+
+
+
+
+
+
+
+
+
+
+
+ AutoCalcTangent
+
+
+ Whether or not to automatically calculate tangent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Level Tools
+ レベルツール
+
+
+
+
+ Instancers/Uniform
+ インスタンサ/ユニフォーム
+
+
+
+
+
+
+ Uniform Instancer
+ ユニフォームインスタンサ
+
+
+
+
+
+
+
+
+ Instance Info
+ インスタンス情報
+
+
+
+
+ Num Instances
+ インスタンス数
+
+
+
+
+ Number of Instances
+ インスタンス数
+
+
+
+
+
+
+
+
+ Instance Info
+ インスタンス情報
+
+
+
+ Orient On Linear
+
+
+ Whether to orient Instance on linear
+
+
+
+
+
+
+
+ Project
+ ビュー
+
+
+
+ Bi-directional Projection
+
+
+ Whether to do Bi-directional Projection
+
+
+
+
+
+
+
+ Project
+ ビュー
+
+
+
+
+ Projection Direction
+ 投影の方向
+
+
+
+ Direction of projection
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Level Tools
+ レベルツール
+
+
+
+
+ Instancers/Interval
+ インスタンサ/インターバル
+
+
+
+
+
+
+ Interval Instancer
+ 間隔のインスタンサ
+
+
+
+
+
+
+
+
+ Instance Info
+ インスタンス情報
+
+
+
+
+ Interval
+ 間隔
+
+
+
+ Length of interval between instances
+
+
+
+
+
+
+
+ Instance Info
+ インスタンス情報
+
+
+
+
+ Orient On Linear
+ リニア方向
+
+
+
+ Whether to orient Instance on linear
+
+
+
+
+
+
+
+ Project
+ ビュー
+
+
+
+
+ Bi-directional Projection
+ 双方向投影
+
+
+
+ Whether to do bi-directional Projection
+
+
+
+
+
+
+
+ Project
+ ビュー
+
+
+
+
+ Projection Direction
+ 投影の方向
+
+
+
+ Direction of projection
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Level Tools
+ レベルツール
+
+
+
+
+ Instancers/Random Aerial
+ インスタンサ/ランダムエアリアル
+
+
+
+
+
+
+ Random Aerial Instancer
+ ランダムエアリアルインスタンサ
+
+
+
+
+
+
+
+
+ Instance Info
+ インスタンス情報
+
+
+
+
+ Num Instances
+ インスタンス数
+
+
+
+
+ Number of Instances along linear
+ インスタンス数
+
+
+
+
+
+
+
+
+ Project
+ ビュー
+
+
+
+
+ Bi-directional Projection
+ 双方向投影
+
+
+
+ Whether to do bi-directional Projection
+
+
+
+
+
+
+
+ Project
+ ビュー
+
+
+
+
+ Projection Direction
+ 投影の方向
+
+
+
+ Direction of projection
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Level Tools
+ レベルツール
+
+
+
+
+ Game Objects/Polyline
+ ゲームオブジェクト/ポリライン
+
+
+
+
+
+
+ Polyline
+ ポリライン
+
+
+
+
+
+
+
+
+ Level Tools
+ レベルツール
+
+
+
+
+ Is Closed
+ 閉じている
+
+
+
+ Whether polyline has extra edge connection first and last points
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Level Tools
+ レベルツール
+
+
+
+
+ Game Objects/Curve
+ ゲームオブジェクト/曲線
+
+
+
+
+
+
+ Curve
+ 曲線
+
+
+
+
+
+
+
+
+ Level Tools
+ レベルツール
+
+
+
+
+ Is Closed
+ 閉じている
+
+
+
+ Whether curve has final segment connecting first and last points
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Game
+ ゲーム
+
+
+
+
+ Game
+ ゲーム
+
+
+
+
+
+
+
+
+ Name
+ 名前
+
+
+
+ Unique name of Game
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Level Tools
+ レベルツール
+
+
+
+
+ Game Objects/Locator
+ ゲームオブジェクト/ロケータ
+
+
+
+
+
+
+ Locator
+ ロケータ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Examples
+ サンプル
+
+
+
+
+ Game Objects/Ogre
+ ゲームオブジェクト/オウガ
+
+
+
+
+ Ogre example
+ オウガの例
+
+
+
+
+
+
+
+
+ Name
+ 名前
+
+
+
+ Unique name of Ogre
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Weight
+ 重さ
+
+
+
+
+ Weight of Ogre (kg)
+ オウガの重さ (kg)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Examples
+ サンプル
+
+
+
+
+ Prefabs/PrefabExample1
+ 事前作成のゲームオブジェクト・第1の例
+
+
+
+
+ PrefabExample1
+ 第1の例
+
+
+
+
+
+
+
+
+ Name
+ 名前
+
+
+
+
+ Name
+ 名前
+
+
+
+
+
+
+
+
+ Strength
+ 体力度
+
+
+
+
+ Strength
+ 体力度
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Velocity
+ 速度
+
+
+
+
+ Velocity
+ 速度
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Examples
+ サンプル
+
+
+
+
+ Prefabs/PrefabExample2
+ 事前作成のゲームオブジェクト・第2の例
+
+
+
+
+ PrefabExample2
+ 第2の例
+
+
+
+
+
+
+
+
+ Name
+ 名前
+
+
+
+
+ Name
+ 名前
+
+
+
+
+
+
+
+
+ Weight
+ 重さ
+
+
+
+
+ Weight
+ 重さ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Examples
+ サンプル
+
+
+
+
+ Game Objects/Orc
+ ゲームオブジェクト/オーク
+
+
+
+
+ Orc example
+ オークのサンプル
+
+
+
+
+
+
+
+
+ Name
+ 名前
+
+
+
+ Name of Orc
+
+
+
+
+
+
+
+ Weight
+ 重さ
+
+
+
+ Weight of Orc (kg)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Proxies
+ プロキシ
+
+
+
+
+ Game Objects/CubeTest
+ ゲームオブジェクト/テスト立方体
+
+
+
+
+ Test Cube
+ テスト立方体
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Proxies
+ プロキシ
+
+
+
+
+ Game Objects/SphereTest
+ ゲームオブジェクト/テスト球体
+
+
+
+
+ Test Sphere
+ テスト球体
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Proxies
+ プロキシ
+
+
+
+
+ Game Objects/ConeTest
+ ゲームオブジェクト/テスト円錐
+
+
+
+
+ Test Cone
+ 円錐のテスト
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Proxies
+ プロキシ
+
+
+
+
+ Game Objects/CylinderTest
+ ゲームオブジェクト/テスト円筒
+
+
+
+
+ Test Cylinder
+ テスト円筒
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Proxies
+ プロキシ
+
+
+
+
+ Game Objects/BillboardTest
+ ゲームオブジェクト/テストビルボード
+
+
+
+
+ Test Billboard
+ テストビルボード
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/DevTools/Localization/AssembliesToLocalize.txt b/DevTools/Localization/AssembliesToLocalize.txt
new file mode 100644
index 00000000..a3f8ebf0
--- /dev/null
+++ b/DevTools/Localization/AssembliesToLocalize.txt
@@ -0,0 +1,16 @@
+# Put the filenames of assemblies to be localized here.
+# The paths are in pairs, giving the source *.dll or *.exe and the destination xml file.
+# The two paths must be separated by a single space.
+# Each filename needs to be a relative path to the root ATF directory.
+# The root of the ATF directory is found by searching from LocalizableStringExtractor's starting
+# directory and going up the directory hierarchy until a directory name containing "atf" is
+# found.
+# Paths with spaces in them need double quotes around the path.
+..\..\bin\wws_atf\Debug.vs2010\Atf.Core.dll Framework\Atf.Core\Resources\Localization.xml
+"..\..\bin\wws_atf\Debug.vs2010\Atf.Gui.dll" "Framework\Atf.Gui\Resources\Localization.xml"
+"..\..\bin\wws_atf\Debug.vs2010\Atf.Gui.OpenGL.dll" "Framework\Atf.Gui.OpenGL\Resources\Localization.xml"
+"..\..\bin\wws_atf\Debug.vs2010\Atf.Gui.WinForms.dll" "Framework\Atf.Gui.WinForms\Resources\Localization.xml"
+"..\..\bin\wws_atf\Debug.vs2010\Atf.Gui.Wpf.dll" "Framework\Atf.Gui.Wpf\Resources\Localization.xml"
+"..\..\bin\wws_atf\Debug.vs2010\Atf.Perforce.dll" "Framework\Atf.Perforce\Resources\Localization.xml"
+"..\..\bin\wws_atf\Debug.vs2010\CircuitEditor.exe" "Samples\CircuitEditor\Resources\Localization.xml"
+"..\..\bin\wws_atf\Debug.vs2010\TimelineEditor.exe" "Samples\TimelineEditor\Resources\Localization.xml"
diff --git a/DevTools/Localization/LocalizableStringExtractor/App.xaml b/DevTools/Localization/LocalizableStringExtractor/App.xaml
new file mode 100644
index 00000000..d7b6b92e
--- /dev/null
+++ b/DevTools/Localization/LocalizableStringExtractor/App.xaml
@@ -0,0 +1,8 @@
+
+
+
+
+
diff --git a/DevTools/Localization/LocalizableStringExtractor/App.xaml.cs b/DevTools/Localization/LocalizableStringExtractor/App.xaml.cs
new file mode 100644
index 00000000..c14cffde
--- /dev/null
+++ b/DevTools/Localization/LocalizableStringExtractor/App.xaml.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Data;
+using System.Linq;
+using System.Windows;
+
+namespace LocalizableStringExtractor
+{
+ ///
+ /// Interaction logic for App.xaml
+ ///
+ public partial class App : Application
+ {
+ }
+}
diff --git a/DevTools/Localization/LocalizableStringExtractor/Extractor.cs b/DevTools/Localization/LocalizableStringExtractor/Extractor.cs
new file mode 100644
index 00000000..55226310
--- /dev/null
+++ b/DevTools/Localization/LocalizableStringExtractor/Extractor.cs
@@ -0,0 +1,373 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Windows;
+using System.Xml;
+using Microsoft.Win32;
+
+using PathUtilities = Atf.Utilities.PathUtilities;
+
+namespace LocalizableStringExtractor
+{
+ ///
+ /// Utility class that uses a settings file and extracts strings that need to be localized from the ATF
+ /// assemblies.
+ public class Extractor
+ {
+ ///
+ /// Extracts all localizable strings whose paths are in the settings file and creates
+ /// xml files according to the settings' output filenames.
+ public void ExtractAll()
+ {
+ s_log.Clear();
+ ReadSettings();
+ foreach (SourceTargetPair rule in m_assemblies)
+ {
+ ExtractLocalizableStrings(rule.Source,rule.Target);
+ }
+ ShowLog();
+ }
+
+ public void OpenSettingsFile()
+ {
+ Process.Start(GetSettingsPath());
+ }
+
+ ///
+ /// Extracts localizable strings from the given assembly and outputs them to the given xml file.
+ /// the fully qualified path of the Atf-based managed *.exe or *.dll
+ /// the fully qualified path of the xml file that is to be created and
+ /// populated with localizable string data. If this file exists already, it will be deleted.
+ public static void ExtractLocalizableStrings(string assembly, string xmlFile)
+ {
+ s_log.AppendLine("=================== STARTING ==================");
+ s_log.AppendLine("Disassembling: " + assembly);
+ string[] ilLines = Disassemble(assembly);
+
+ if (ilLines.Length == 0)
+ {
+ s_log.AppendLine("Error: no MSIL lines were found! Bad path?");
+ return;
+ }
+
+ s_log.AppendLine("Extracting localized strings from: " + assembly);
+ IEnumerable stringData = ExtractFromIl(ilLines);
+
+ s_log.AppendLine("Writing: " + xmlFile);
+ WriteLocalizationFile(xmlFile, stringData);
+
+ s_log.AppendLine("=================== FINISHED ==================");
+ }
+
+ ///
+ /// Disassembles the given managed .Net assembly (dll or exe) into an array of strings
+ /// of intermediate language (IL) code.
+ /// fully qualified path of the assembly file
+ /// an array of strings for each line of the intermediate language version
+ public static string[] Disassemble(string assembly)
+ {
+ string[] ilLines = new string[0];
+
+ // Determine the temporary directory (in case there are many resource files) and temporary file name.
+ string assemblyDir = Path.GetDirectoryName(assembly);
+ string tempDir = Path.Combine(assemblyDir, "TempDisassemblerFiles");
+ string ilPath = Path.Combine(tempDir, "output.il");
+ Directory.CreateDirectory(tempDir);
+
+ try
+ {
+ // Run the disassembler, create a temporary *.il file, read it in.
+ string disassembler = GetDisassemblerPath();
+ string arguments = string.Format("\"{0}\" /output=\"{1}\"", assembly, ilPath);
+ Process process = Process.Start(disassembler, arguments);
+ process.WaitForExit();
+ ilLines = File.ReadAllLines(ilPath);
+ }
+ finally
+ {
+ PathUtilities.DeleteDirectory(tempDir);
+ }
+
+ return ilLines;
+ }
+
+ ///
+ /// Extracts all of the localizable strings from the Microsoft intermediate language text.
+ ///
+ ///
+ public static IEnumerable ExtractFromIl(string[] ilLines)
+ {
+ for (int i = 0; i < ilLines.Length; i++)
+ {
+ // This is the overload that takes just one string, the string to be localized.
+ // In MSIL:
+ // IL_0018: ldstr "Error"
+ // IL_001d: call string Sce.Atf.Localizer::Localize(string)
+ if (ilLines[i].Contains("Sce.Atf.Localizer::Localize(string)"))
+ {
+ int beginningLineOfQuote;
+ string text = GetStringFromIl(ilLines, i - 1, out beginningLineOfQuote);
+ if (text.Length != 0)
+ yield return new LocalizableString(text, string.Empty);
+ }
+
+ // This is the overload that takes two string parameters: text and context.
+ // In C#:
+ // return "Back".Localize("One of the camera's views of a scene.");
+ // In MSIL:
+ // IL_002c: ldstr "Back"
+ // IL_0031: ldstr "One of the camera's views of a scene."
+ // IL_0036: call string [Sce.Atf]Sce.Atf.Localizer::Localize(string,
+ // string)
+ else if (ilLines[i].Contains("Sce.Atf.Localizer::Localize(string,"))
+ {
+ int beginningLineOfQuote; //long string literals are broken up over multiple lines of MSIL.
+ string context = GetStringFromIl(ilLines, i - 1, out beginningLineOfQuote);
+ if (context.Length != 0)
+ {
+ string text = GetStringFromIl(ilLines, beginningLineOfQuote - 1, out beginningLineOfQuote);
+ if (text.Length != 0)
+ yield return new LocalizableString(text, context);
+ }
+ }
+ }
+ }
+
+ ///
+ /// Creates an XML file with the given name and writes the given string data to that file.
+ /// the name and path of the XML file to be created
+ /// the localizable string data to write to the XML file
+ public static void WriteLocalizationFile(string outputFile, IEnumerable stringData)
+ {
+ XmlDocument xmlDoc = new XmlDocument();
+ xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0",System.Text.Encoding.UTF8.WebName, "yes"));
+
+ XmlElement root = xmlDoc.CreateElement("StringLocalizationTable");
+ xmlDoc.AppendChild(root);
+
+ var sisulizer = new SisulizerWorkaround();
+
+ foreach (LocalizableString stringItem in stringData)
+ {
+ XmlElement stringElement = xmlDoc.CreateElement("StringItem");
+ root.AppendChild(stringElement);
+
+ string workaroundContext;
+ sisulizer.FixContext(stringItem.Text, stringItem.Context, out workaroundContext);
+
+ // id -- the English string that is used as a key at run-time to look-up the translation.
+ stringElement.SetAttribute("id", stringItem.Text);
+
+ // context -- will be read by some other means and given to translation company.
+ stringElement.SetAttribute("context", workaroundContext);
+
+ // translation -- starts out as English but will be replaced by actual translation
+ // by Sisulizer, for example.
+ stringElement.SetAttribute("translation", stringItem.Text);
+ }
+
+ using (XmlTextWriter writer = new XmlTextWriter(outputFile, Encoding.UTF8))
+ {
+ writer.Formatting = Formatting.Indented;
+ xmlDoc.WriteTo(writer);
+ writer.Flush();
+ }
+ }
+
+ // This works around a bug in Sisulizer 1.6 where if an id (original string) has
+ // "{0}" (or most likely any "{n}") and a non-empty context, then the context must
+ // be unique, apparently, or it gets ignored.
+ private class SisulizerWorkaround
+ {
+ public void FixContext(string id, string context, out string workaroundContext)
+ {
+ workaroundContext = context;
+ if (!string.IsNullOrEmpty(context) && id.Contains("{0}"))
+ {
+ // Just add spaces until it's unique? This might be the least confusing to a translator.
+ // There should be very few duplicates like this.
+ while (!m_uniqueContexts.Add(workaroundContext))
+ {
+ workaroundContext += ' ';
+ s_log.AppendLine("Warning: this id will have its context modified" +
+ " to make it unique to work around a Sisulizer bug: " + id);
+ }
+ }
+ }
+
+ private readonly HashSet m_uniqueContexts = new HashSet();
+ }
+
+ ///
+ /// Finds where the Microsoft Intermediate Language Disassembler, ildasm.exe, was installed.
+ /// the fully qualified path for ildasm.exe
+ public static string GetDisassemblerPath()
+ {
+ string toolDir = (string)Registry.GetValue(
+ @"HKEY_CURRENT_USER\Software\Microsoft\Microsoft SDKs\Windows",
+ "CurrentInstallFolder",
+ null);
+
+ string toolFileName = toolDir + @"bin\ildasm.exe";
+
+ if (!File.Exists(toolFileName))
+ throw new InvalidOperationException(string.Format("Could not find 'ildasm.exe' at {0}", toolFileName));
+
+ return toolFileName;
+ }
+
+ ///
+ /// Gets the path for the root directory of the ATF installation, ending with a '\'. For example:
+ /// "C:\sceadev\wws_shared\sdk\trunk\components\wws_atf\"
+ ///
+ public static string GetAtfRoot()
+ {
+ string dir = Directory.GetCurrentDirectory();
+ string[] dirElements = PathUtilities.GetPathElements(dir);
+
+ int atfIndex = dirElements.Length - 1;
+ for (; atfIndex >= 0; atfIndex--)
+ {
+ if (dirElements[atfIndex].ToLower().Contains("atf"))
+ break;
+ }
+ if (atfIndex < 0)
+ throw new InvalidOperationException("Could not find root of ATF installation, like 'wws_atf'");
+
+ return PathUtilities.CreatePath(dirElements, 0, atfIndex, true);
+ }
+
+ ///
+ /// Parses one (or more) lines of Microsoft intermediate language text for a single string literal.
+ /// An array of lines of text to parse
+ /// The index in ilLines that contains the end of the string literal. It may contain the
+ /// beginning of the string literal, too, but long text strings are broken up over many lines of MSIL.
+ /// The resulting index in ilLines that contains the beginning of the string
+ /// literal. If the string literal fit on one line, then this will be the same as 'endLineOfQuote'.
+ /// the string literal or the empty string, if none was found
+ /// There are some potentially tricky issues with line breaks, non-ASCII characters,
+ /// and reserved characters which need to be escaped. 'bytearray' is not supported at the moment, for example.
+ /// http://stackoverflow.com/questions/9113440/where-can-i-find-a-list-of-escaped-characters-in-msil-string-constants
+ ///
+ public static string GetStringFromIl(string[] ilLines, int endLineOfQuote, out int startLineOfQuote)
+ {
+ startLineOfQuote = endLineOfQuote;
+ if (!ilLines[endLineOfQuote].Contains("\""))
+ {
+ s_log.AppendLine(
+ "Error: This intermediate language (IL) line was expected to contain a string literal.");
+ s_log.AppendLine(
+ "Localize() can only ever be used on string literals, and non-ASCII characters currently aren't supported.");
+ for (int i = endLineOfQuote - 10; i < endLineOfQuote + 10; i++)
+ {
+ if (i >= 0 && i < ilLines.Length)
+ {
+ if (i == endLineOfQuote)
+ s_log.Append("error ==> ");
+ s_log.AppendLine(ilLines[i]);
+ }
+ }
+ return string.Empty;
+ }
+
+ // Back up until we see a "ldstr". If we get an out-of-bounds exception, then the input was bad!
+ while (!ilLines[startLineOfQuote].Contains("ldstr"))
+ startLineOfQuote--;
+
+ var result = new StringBuilder();
+ int currentLineOfQuote = startLineOfQuote;
+ while (currentLineOfQuote <= endLineOfQuote)
+ {
+ int beginQuote = ilLines[currentLineOfQuote].IndexOf('\"');
+ int endQuote = ilLines[currentLineOfQuote].LastIndexOf('\"');
+ result.Append(ilLines[currentLineOfQuote].Substring(beginQuote + 1, endQuote - beginQuote - 1));
+ currentLineOfQuote++;
+ }
+
+ // handle MSIL-specific escapes
+ result.Replace("\\?", "?");
+ result.Replace("\\\"", "\"");
+ result.Replace("\\t", "\t");
+ result.Replace("\\n", "\n");
+ result.Replace("\\r", "\r");
+
+ // to-do: octals, end-of-line-seperators, bytearray
+
+ return result.ToString();
+ }
+
+ ///
+ /// A pair of fully qualified paths. The source is the assembly (*.exe or *.dll) path
+ /// and the target is the name of the output xml file.
+ public class SourceTargetPair
+ {
+ public SourceTargetPair(string source, string target)
+ {
+ Source = source;
+ Target = target;
+ }
+ public readonly string Source;
+ public readonly string Target;
+ }
+
+ private static string GetSettingsPath()
+ {
+ string atfRootDir = GetAtfRoot();
+ string settingsPath = Path.Combine(atfRootDir, @"DevTools\Localization\AssembliesToLocalize.txt");
+ return settingsPath;
+ }
+
+ ///
+ /// Parses the \Localization\AssembliesToLocalize.txt file which contains the paths of the
+ /// assemblies that should be examined for localizable strings.
+ /// the fully qualified paths of the assemblies to look at
+ private void ReadSettings()
+ {
+ string atfRootDir = GetAtfRoot();
+ string[] lines = File.ReadAllLines(GetSettingsPath());
+ m_assemblies = new List();
+
+ foreach (string line in lines)
+ {
+ if (line.Length == 0 || line[0] == '#')
+ continue;
+
+ //break these:
+ // ..\..\bin\wws_atf\Debug.vs2010\Atf.Core.dll "Framework\Atf.Core\Resources\Sce.Atf.Localization.xml"
+ // "..\..\bin\wws_atf\Debug.vs2010\Atf.Gui.dll" Framework\Atf.Gui\Resources\Sce.Atf.Applications.Localization.xml
+ //into the separate source and target paths and combine with the ATF root directory.
+
+ // "[^"]+"|[^ ]+ matches anything in quotes or anything without spaces.
+ MatchCollection paths = Regex.Matches(line, "\"[^\"]+\"|[^ ]+");
+ if (paths.Count != 2)
+ throw new InvalidOperationException(string.Format("bad settings line:{0}", line));
+
+ string source = paths[0].ToString();
+ source = source.Trim('\"');
+ source = Path.Combine(atfRootDir, source);
+
+ string target = paths[1].ToString();
+ target = target.Trim('\"');
+ target = Path.Combine(atfRootDir, target);
+
+ m_assemblies.Add(new SourceTargetPair(source, target));
+ }
+ }
+
+ private static void ShowLog()
+ {
+ if (s_log.Length == 0)
+ return;
+
+ Clipboard.SetText(s_log.ToString());
+ MessageBox.Show("A log report was pasted into the clipboard");
+ }
+
+ private List m_assemblies;
+ private static readonly StringBuilder s_log = new StringBuilder();
+ }
+}
diff --git a/DevTools/Localization/LocalizableStringExtractor/LocalizableString.cs b/DevTools/Localization/LocalizableStringExtractor/LocalizableString.cs
new file mode 100644
index 00000000..dd5ec037
--- /dev/null
+++ b/DevTools/Localization/LocalizableStringExtractor/LocalizableString.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace LocalizableStringExtractor
+{
+ ///
+ /// Contains the data for each English word or phrase that is to be translated.
+ public class LocalizableString
+ {
+ public LocalizableString(string text, string context)
+ {
+ Text = text;
+ Context = context;
+ }
+ public readonly string Text;
+ public readonly string Context;
+ }
+}
diff --git a/DevTools/Localization/LocalizableStringExtractor/LocalizableStringExtractor.csproj b/DevTools/Localization/LocalizableStringExtractor/LocalizableStringExtractor.csproj
new file mode 100644
index 00000000..0a8e536f
--- /dev/null
+++ b/DevTools/Localization/LocalizableStringExtractor/LocalizableStringExtractor.csproj
@@ -0,0 +1,109 @@
+
+
+
+ Debug
+ AnyCPU
+ 9.0.21022
+ 2.0
+ {DE007657-9550-426E-B276-3DE94D956EF9}
+ WinExe
+ Properties
+ LocalizableStringExtractor
+ LocalizableStringExtractor
+ v4.0
+ 512
+ {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ 4
+
+
+
+ true
+ full
+ false
+ bin\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\
+ TRACE
+ prompt
+ 4
+
+
+
+
+ 3.5
+
+
+
+ 3.5
+
+
+ 3.5
+
+
+
+
+
+
+
+
+
+ MSBuild:Compile
+ Designer
+
+
+ MSBuild:Compile
+ Designer
+
+
+ App.xaml
+ Code
+
+
+ Window1.xaml
+ Code
+
+
+
+
+
+
+
+ Code
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ Settings.settings
+ True
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DevTools/Localization/LocalizableStringExtractor/LocalizableStringExtractor.sln b/DevTools/Localization/LocalizableStringExtractor/LocalizableStringExtractor.sln
new file mode 100644
index 00000000..3f9ba183
--- /dev/null
+++ b/DevTools/Localization/LocalizableStringExtractor/LocalizableStringExtractor.sln
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LocalizableStringExtractor", "LocalizableStringExtractor.csproj", "{DE007657-9550-426E-B276-3DE94D956EF9}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {DE007657-9550-426E-B276-3DE94D956EF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DE007657-9550-426E-B276-3DE94D956EF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DE007657-9550-426E-B276-3DE94D956EF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DE007657-9550-426E-B276-3DE94D956EF9}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/DevTools/Localization/LocalizableStringExtractor/MSSCCPRJ.SCC b/DevTools/Localization/LocalizableStringExtractor/MSSCCPRJ.SCC
new file mode 100644
index 00000000..2f78ee8d
--- /dev/null
+++ b/DevTools/Localization/LocalizableStringExtractor/MSSCCPRJ.SCC
@@ -0,0 +1,5 @@
+SCC = This is a source code control file
+
+[LocalizableStringExtractor.csproj]
+SCC_Aux_Path = "P4SCC#perforce1.ship.scea.com:1666##bbudge##FC-BBUDGE-LP"
+SCC_Project_Name = Perforce Project
diff --git a/DevTools/Localization/LocalizableStringExtractor/PathUtilities.cs b/DevTools/Localization/LocalizableStringExtractor/PathUtilities.cs
new file mode 100644
index 00000000..a9bfe2c4
--- /dev/null
+++ b/DevTools/Localization/LocalizableStringExtractor/PathUtilities.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+
+namespace Atf.Utilities
+{
+ public static class PathUtilities
+ {
+ ///
+ /// Decomposes a path into an array of volume, directory and file name 'elements', without
+ /// any of the directory separator characters. Makes searching up and down the hierarchy
+ /// easier.
+ /// e.g., @"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin"
+ /// e.g., {"C:", "Program Files", "Microsoft SDKs", "Windows", "v6.0A", "bin"}
+ public static string[] GetPathElements(string path)
+ {
+ return path.Split(DirectorySeparatorChars, StringSplitOptions.RemoveEmptyEntries);
+ }
+
+ ///
+ /// Turns an array of volume, directory, and file name elements representing a path
+ /// into a path string. A directory separator, '\', is placed at the end of the result
+ /// if the last element is truncated, otherwise, a trailing separator is not placed.
+ ///
+ /// e.g., {"C:", "Program Files", "Microsoft SDKs", "Windows", "v6.0A", "bin"}
+ /// index of first element
+ /// index of last element
+ ///
+ /// e.g., if 'first' is 0 and 'last' is 5, @"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin"
+ public static string CreatePath(string[] elements, int first, int last, bool isDirectory)
+ {
+ StringBuilder sb = new StringBuilder();
+
+ bool placeTrailingSeparator = isDirectory || (last < elements.Length - 1);
+
+ for(int i = first; i <= last; i++)
+ {
+ sb.Append(elements[i]);
+ if (i < last || placeTrailingSeparator)
+ {
+ sb.Append('\\');
+ }
+ }
+
+ return sb.ToString();
+ }
+
+ ///
+ /// Does what Directory.Delete() should do -- deletes the directory and everything in it.
+ /// path to the directory to delete
+ public static void DeleteDirectory(string path)
+ {
+ if (Directory.Exists(path))
+ {
+ foreach (string filePath in Directory.GetFiles(path, "*", SearchOption.AllDirectories))
+ {
+ File.Delete(filePath);
+ }
+ Directory.Delete(path, true);
+ }
+ }
+
+ public static readonly char[] DirectorySeparatorChars = { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar };
+ }
+}
\ No newline at end of file
diff --git a/DevTools/Localization/LocalizableStringExtractor/Properties/AssemblyInfo.cs b/DevTools/Localization/LocalizableStringExtractor/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..1569f40a
--- /dev/null
+++ b/DevTools/Localization/LocalizableStringExtractor/Properties/AssemblyInfo.cs
@@ -0,0 +1,55 @@
+using System.Reflection;
+using System.Resources;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Windows;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("LocalizableStringExtractor")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Sony")]
+[assembly: AssemblyProduct("LocalizableStringExtractor")]
+[assembly: AssemblyCopyright("Copyright © Sony 2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+//In order to begin building localizable applications, set
+//CultureYouAreCodingWith in your .csproj file
+//inside a . For example, if you are using US english
+//in your source files, set the to en-US. Then uncomment
+//the NeutralResourceLanguage attribute below. Update the "en-US" in
+//the line below to match the UICulture setting in the project file.
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
+ //(used if a resource is not found in the page,
+ // or application resource dictionaries)
+ ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
+ //(used if a resource is not found in the page,
+ // app, or any theme specific resource dictionaries)
+)]
+
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/DevTools/Localization/LocalizableStringExtractor/Properties/Resources.Designer.cs b/DevTools/Localization/LocalizableStringExtractor/Properties/Resources.Designer.cs
new file mode 100644
index 00000000..410251c0
--- /dev/null
+++ b/DevTools/Localization/LocalizableStringExtractor/Properties/Resources.Designer.cs
@@ -0,0 +1,63 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.18213
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace LocalizableStringExtractor.Properties {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LocalizableStringExtractor.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/DevTools/Localization/LocalizableStringExtractor/Properties/Resources.resx b/DevTools/Localization/LocalizableStringExtractor/Properties/Resources.resx
new file mode 100644
index 00000000..af7dbebb
--- /dev/null
+++ b/DevTools/Localization/LocalizableStringExtractor/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/DevTools/Localization/LocalizableStringExtractor/Properties/Settings.Designer.cs b/DevTools/Localization/LocalizableStringExtractor/Properties/Settings.Designer.cs
new file mode 100644
index 00000000..15812746
--- /dev/null
+++ b/DevTools/Localization/LocalizableStringExtractor/Properties/Settings.Designer.cs
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.18213
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace LocalizableStringExtractor.Properties {
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default {
+ get {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/DevTools/Localization/LocalizableStringExtractor/Properties/Settings.settings b/DevTools/Localization/LocalizableStringExtractor/Properties/Settings.settings
new file mode 100644
index 00000000..033d7a5e
--- /dev/null
+++ b/DevTools/Localization/LocalizableStringExtractor/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DevTools/Localization/LocalizableStringExtractor/Window1.xaml b/DevTools/Localization/LocalizableStringExtractor/Window1.xaml
new file mode 100644
index 00000000..d051bfdd
--- /dev/null
+++ b/DevTools/Localization/LocalizableStringExtractor/Window1.xaml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
diff --git a/DevTools/Localization/LocalizableStringExtractor/Window1.xaml.cs b/DevTools/Localization/LocalizableStringExtractor/Window1.xaml.cs
new file mode 100644
index 00000000..49a8ba79
--- /dev/null
+++ b/DevTools/Localization/LocalizableStringExtractor/Window1.xaml.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace LocalizableStringExtractor
+{
+ ///
+ /// Interaction logic
+ public partial class Window1 : Window
+ {
+ public Window1()
+ {
+ InitializeComponent();
+ }
+
+ private void StartBtn_Click(object sender, RoutedEventArgs e)
+ {
+ m_extractor.ExtractAll();
+ Close();
+ }
+
+ private void CancelBtn_Click(object sender, RoutedEventArgs e)
+ {
+ Close();
+ }
+
+ private void AssembliesBtn_Click(object sender, RoutedEventArgs e)
+ {
+ m_extractor.OpenSettingsFile();
+ }
+
+ private Extractor m_extractor = new Extractor();
+ }
+}
diff --git a/Docs/ATF Qt Comparison.pdf b/Docs/ATF Qt Comparison.pdf
new file mode 100644
index 00000000..0c271d1e
Binary files /dev/null and b/Docs/ATF Qt Comparison.pdf differ
diff --git a/Docs/ATF_DOM-Programmer_Guide.pdf b/Docs/ATF_DOM-Programmer_Guide.pdf
new file mode 100644
index 00000000..90ed85a2
Binary files /dev/null and b/Docs/ATF_DOM-Programmer_Guide.pdf differ
diff --git a/Docs/ATF_Programmer_Guide__exported_from_wiki.pdf b/Docs/ATF_Programmer_Guide__exported_from_wiki.pdf
new file mode 100644
index 00000000..89f3683b
Binary files /dev/null and b/Docs/ATF_Programmer_Guide__exported_from_wiki.pdf differ
diff --git a/Docs/Atf-CurveEditor-User_Prog_Guide.pdf b/Docs/Atf-CurveEditor-User_Prog_Guide.pdf
new file mode 100644
index 00000000..9a5d59b2
Binary files /dev/null and b/Docs/Atf-CurveEditor-User_Prog_Guide.pdf differ
diff --git a/Docs/Atf-GettingStarted.pdf b/Docs/Atf-GettingStarted.pdf
new file mode 100644
index 00000000..1b99b141
Binary files /dev/null and b/Docs/Atf-GettingStarted.pdf differ
diff --git a/Framework/Atf.Atgi/Anim.cs b/Framework/Atf.Atgi/Anim.cs
new file mode 100644
index 00000000..9c70bdce
--- /dev/null
+++ b/Framework/Atf.Atgi/Anim.cs
@@ -0,0 +1,53 @@
+//Copyright 2014 Sony Computer Entertainment America LLC. See License.txt.
+
+using System.Collections.Generic;
+
+using Sce.Atf.Dom;
+using Sce.Atf.Rendering;
+
+namespace Sce.Atf.Atgi
+{
+ ///
+ /// ATGI Anim
+ public class Anim : DomNodeAdapter, IAnim
+ {
+ ///
+ /// Gets and sets the Anim name
+ public string Name
+ {
+ get { return GetAttribute(Schema.animType.nameAttribute); }
+ set { SetAttribute(Schema.animType.nameAttribute, value); }
+ }
+
+ ///
+ /// Gets and sets the Anim target
+ public string Target
+ {
+ get { return GetAttribute(Schema.animType.targetAttribute); }
+ set { SetAttribute(Schema.animType.targetAttribute, value); }
+ }
+
+ #region IAnim Members
+
+ ///
+ /// Gets the child AnimChannel list
+ public IList Channels
+ {
+ get { return GetChildList(Schema.animType.animChannelChild); }
+ }
+
+ ///
+ /// Gets a list of IAnim children
+ public IList Animations
+ {
+ get
+ {
+ List list = new List();
+ return list;
+ }
+ }
+
+ #endregion
+ }
+}
+
diff --git a/Framework/Atf.Atgi/AnimChannel.cs b/Framework/Atf.Atgi/AnimChannel.cs
new file mode 100644
index 00000000..eeb214dd
--- /dev/null
+++ b/Framework/Atf.Atgi/AnimChannel.cs
@@ -0,0 +1,161 @@
+//Copyright 2014 Sony Computer Entertainment America LLC. See License.txt.
+
+using System;
+
+using Sce.Atf.Dom;
+using Sce.Atf.Rendering;
+
+namespace Sce.Atf.Atgi
+{
+ ///
+ /// ATGI Anim attribute data
+ public class AnimData : DomNodeAdapter, IAnimData
+ {
+ ///
+ /// Gets or sets the number of keys
+ public int NumKeys
+ {
+ get { return GetAttribute(Schema.animChannelType_animData.numKeysAttribute); }
+ set { SetAttribute(Schema.animChannelType_animData.numKeysAttribute, value); }
+ }
+
+ ///
+ /// Gets or sets the key stride
+ public int KeyStride
+ {
+ get { return GetAttribute(Schema.animChannelType_animData.keyStrideAttribute); }
+ set { SetAttribute(Schema.animChannelType_animData.keyStrideAttribute, value); }
+ }
+
+ ///
+ /// Gets or sets the time offset
+ public float TimeOffset
+ {
+ get { return GetAttribute(Schema.animChannelType_animData.timeOffsetAttribute); }
+ set { SetAttribute(Schema.animChannelType_animData.timeOffsetAttribute, value); }
+ }
+
+ ///
+ /// Gets or sets the duration
+ public float Duration
+ {
+ get { return GetAttribute(Schema.animChannelType_animData.durationAttribute); }
+ set { SetAttribute(Schema.animChannelType_animData.durationAttribute, value); }
+ }
+
+ ///
+ /// Gets the child AnimData list
+ public float[] KeyValues
+ {
+ get { return GetAttribute(Schema.animChannelType_animData.keyValuesAttribute); }
+ set { SetAttribute(Schema.animChannelType_animData.keyValuesAttribute, value); }
+ }
+
+ ///
+ /// Gets or sets the key time array
+ public float[] KeyTimes
+ {
+ get { return GetAttribute(Schema.animChannelType_animData.keyTimesAttribute); }
+ set { SetAttribute(Schema.animChannelType_animData.keyTimesAttribute, value); }
+ }
+
+ ///
+ /// Get the entire array of tangents
+ public float[] Tangents
+ {
+ get { return GetAttribute(Schema.animChannelType_animData.tangentsAttribute); }
+ set { SetAttribute(Schema.animChannelType_animData.tangentsAttribute, value); }
+ }
+
+ ///
+ /// Gets or sets the interpolation type string
+ public string InterpolationType
+ {
+ get { return GetAttribute(Schema.animChannelType_animData.interpAttribute); }
+ set { SetAttribute(Schema.animChannelType_animData.interpAttribute, value); }
+ }
+ };
+
+ ///
+ /// ATGI animation channel
+ public class AnimChannel : DomNodeAdapter, IAnimChannel //, IHierarchical, IListable
+ {
+ ///
+ /// Gets and sets the AnimChannel name
+ public string Name
+ {
+ get { return GetAttribute(Schema.animChannelType.nameAttribute); }
+ set { SetAttribute(Schema.animChannelType.nameAttribute, value); }
+ }
+
+ ///
+ /// Gets the child AnimData object - there is only one
+ public IAnimData Data
+ {
+ get { return GetChild(Schema.animChannelType.animDataChild); }
+ }
+
+ ///
+ /// Gets or sets the channel name
+ public string Channel
+ {
+ get { return GetAttribute(Schema.animChannelType.channelAttribute); }
+ set { SetAttribute(Schema.animChannelType.channelAttribute, value); }
+ }
+
+ ///
+ /// Gets the input object name
+ public string InputObject
+ {
+ get { return GetAttribute(Schema.animChannelType.inputObjectAttribute); }
+ set { SetAttribute(Schema.animChannelType.inputObjectAttribute, value); }
+ }
+
+ ///
+ /// Gets the input channel name
+ public string InputChannel
+ {
+ get { return GetAttribute(Schema.animChannelType.inputChannelAttribute); }
+ set { SetAttribute(Schema.animChannelType.inputChannelAttribute, value); }
+ }
+
+ ///
+ /// Gets or sets the target DOM object
+ public object Target
+ {
+ get
+ {
+ throw new NotImplementedException();
+ }
+ set
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ ///
+ /// Gets or sets the value index
+ public int ValueIndex
+ {
+ get
+ {
+ throw new NotImplementedException();
+ }
+ set
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ ///
+ /// Gets or sets this animation to be enabled or disabled
+ public bool Enabled
+ {
+ get { return m_enabled; }
+ set { m_enabled = value; }
+ }
+
+ private bool m_enabled;
+ }
+}
+
diff --git a/Framework/Atf.Atgi/AnimClip.cs b/Framework/Atf.Atgi/AnimClip.cs
new file mode 100644
index 00000000..954483f8
--- /dev/null
+++ b/Framework/Atf.Atgi/AnimClip.cs
@@ -0,0 +1,30 @@
+//Copyright 2014 Sony Computer Entertainment America LLC. See License.txt.
+
+using System.Collections.Generic;
+
+using Sce.Atf.Dom;
+using Sce.Atf.Rendering;
+
+namespace Sce.Atf.Atgi
+{
+ ///
+ /// ATGI animation clip
+ public class AnimClip : DomNodeAdapter, IAnimClip
+ {
+ ///
+ /// Gets and sets the AnimClip name
+ public string Name
+ {
+ get { return GetAttribute(Schema.animclipType.nameAttribute); }
+ set { SetAttribute(Schema.animclipType.nameAttribute, value); }
+ }
+
+ ///
+ /// Gets the list of Anims held by this clip
+ public IList Anims
+ {
+ get { return GetChildList(Schema.animclipType.animChild); }
+ }
+ }
+}
+
diff --git a/Framework/Atf.Atgi/Atf.Atgi.vs2010.csproj b/Framework/Atf.Atgi/Atf.Atgi.vs2010.csproj
new file mode 100644
index 00000000..628a0600
--- /dev/null
+++ b/Framework/Atf.Atgi/Atf.Atgi.vs2010.csproj
@@ -0,0 +1,131 @@
+
+
+
+ Debug
+ AnyCPU
+ 9.0.30729
+ 2.0
+ {D1FA9A85-9359-4725-A50F-8A67A77D700C}
+ Library
+ Properties
+ Atf.Atgi
+ Atf.Atgi
+ OnBuildSuccess
+
+
+
+
+ 2.0
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ true
+ 0
+ 1.0.0.%2a
+ false
+ false
+ v4.0
+
+
+
+ true
+ full
+ false
+ ..\..\lib\anycpu_dotnet_clr4_debug\
+ obj\Debug.vs2010\
+ TRACE;DEBUG;CS_4
+ prompt
+ 4
+ AnyCPU
+ true
+
+
+ pdbonly
+ true
+ ..\..\lib\anycpu_dotnet_clr4_release\
+ obj\Release.vs2010\
+ TRACE;CS_4
+ prompt
+ 4
+ AnyCPU
+ true
+
+
+
+
+
+ 3.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {9D1835B6-D1C2-44BA-BAE1-05C6EC442D2F}
+ Atf.Core
+
+
+ {52D35323-1AA1-4205-A1B0-26C5E5E8D543}
+ Atf.Gui.OpenGL
+
+
+ {4765C2A7-F989-40DB-BC12-FCD67025B93F}
+ Atf.Gui
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Framework/Atf.Atgi/AtgiResolver.cs b/Framework/Atf.Atgi/AtgiResolver.cs
new file mode 100644
index 00000000..483b9b9b
--- /dev/null
+++ b/Framework/Atf.Atgi/AtgiResolver.cs
@@ -0,0 +1,86 @@
+//Copyright © 2014 Sony Computer Entertainment America LLC. See License.txt.
+
+using System;
+using System.ComponentModel.Composition;
+using System.IO;
+using System.Reflection;
+
+using Sce.Atf.Adaptation;
+using Sce.Atf.Dom;
+
+namespace Sce.Atf.Atgi
+{
+ ///
+ /// Resource resolver for ATGI files. This class should be multi-thread safe after initialization has
+ /// occurred.
+ /// The thumbnail generator uses this class on a separate thread, so the Resolve() method needs
+ /// to be multi-thread safe.
+ [Export(typeof(AtgiResolver))]
+ [Export(typeof(IInitializable))]
+ [Export(typeof(IResourceResolver))]
+ [PartCreationPolicy(CreationPolicy.Shared)]
+ public class AtgiResolver : IInitializable, IResourceResolver
+ {
+ #region IInitializable Members
+
+ public void Initialize()
+ {
+ if (m_initialized)
+ return;
+
+ m_initialized = true;
+
+ Assembly assembly = Assembly.GetExecutingAssembly();
+ m_loader.SchemaResolver = new ResourceStreamResolver(assembly, assembly.GetName().Name + "/schemas");
+ m_loader.Load("atgi.xsd");
+ }
+
+ #endregion
+
+ #region IResourceResolver Members
+
+ ///
+ /// Attempts to resolve (e.g., load from a file) the resource associated with the given URI
+ /// Resource URI
+ /// The resolved resource or null if there was a failure of some kind
+ public IResource Resolve(Uri uri)
+ {
+ DomNode domNode = null;
+ try
+ {
+ string fileName;
+ if (uri.IsAbsoluteUri)
+ fileName = PathUtil.GetCanonicalPath(uri);
+ else
+ fileName = uri.OriginalString;
+
+ if (!fileName.EndsWith(".atgi"))
+ return null; // unable to resolve this asset
+
+ using (Stream stream = File.OpenRead(fileName))
+ {
+ if (stream != null)
+ {
+ var persister = new AtgiXmlPersister(m_loader);
+ domNode = persister.Read(stream, uri);
+ }
+ }
+ }
+ catch (System.IO.IOException e)
+ {
+ Outputs.WriteLine(OutputMessageType.Warning, "Could not load resource: " + e.Message);
+ }
+
+ IResource resource = Adapters.As(domNode);
+ if (resource != null)
+ resource.Uri = uri;
+
+ return resource;
+ }
+
+ #endregion
+
+ private bool m_initialized;
+ private AtgiSchemaTypeLoader m_loader = new AtgiSchemaTypeLoader();
+ }
+}
diff --git a/Framework/Atf.Atgi/AtgiSchemaTypeLoader.cs b/Framework/Atf.Atgi/AtgiSchemaTypeLoader.cs
new file mode 100644
index 00000000..949ea9ef
--- /dev/null
+++ b/Framework/Atf.Atgi/AtgiSchemaTypeLoader.cs
@@ -0,0 +1,86 @@
+//Copyright 2014 Sony Computer Entertainment America LLC. See License.txt.
+
+using System.Xml.Schema;
+
+using Sce.Atf.Dom;
+
+namespace Sce.Atf.Atgi
+{
+ ///
+ /// Universal ATGI plug-in that registers a resolver and persister for ATGI files. Can read
+ /// any version of an ATGI file as if its namespace matched the atgi.xsd namespace.
+ public class AtgiSchemaTypeLoader : XmlSchemaTypeLoader
+ {
+ ///
+ /// Gets the namespace of the version of ATGI that is in use
+ public string Namespace
+ {
+ get { return m_namespace; }
+ }
+
+ ///
+ /// Gets the collection containing ATGI node types
+ public XmlSchemaTypeCollection TypeCollection
+ {
+ get { return m_typeCollection; }
+ }
+
+ ///
+ /// Method called after the schema set has been loaded and the DomNodeTypes have been created, but
+ /// before the DomNodeTypes have been frozen. This means that DomNodeType.SetIdAttribute, for example, has
+ /// not been called on the DomNodeTypes. Is called shortly before OnDomNodeTypesFrozen.
+ /// XML schema sets being loaded
+ protected override void OnSchemaSetLoaded(XmlSchemaSet schemaSet)
+ {
+ foreach (XmlSchemaTypeCollection typeCollection in GetTypeCollections())
+ {
+ if (typeCollection.TargetNamespace.EndsWith("atgi"))
+ {
+ m_namespace = typeCollection.TargetNamespace;
+ m_typeCollection = typeCollection;
+ Schema.Initialize(typeCollection);
+
+ // "name" is the standard id attribute in ATGI files
+ foreach (DomNodeType nodeType in typeCollection.GetNodeTypes())
+ nodeType.SetIdAttribute("name");
+
+ // Register base interfaces
+ Schema.animType.Type.Define(new ExtensionInfo());
+ Schema.animChannelType.Type.Define(new ExtensionInfo());
+ Schema.animChannelType_animData.Type.Define(new ExtensionInfo());
+ Schema.animclipType.Type.Define(new ExtensionInfo());
+ Schema.customDataType.Type.Define(new ExtensionInfo());
+ Schema.customDataAttributeType.Type.Define(new ExtensionInfo());
+ Schema.vertexArray_array.Type.Define(new ExtensionInfo());
+ Schema.instanceType.Type.Define(new ExtensionInfo());
+ Schema.jointType.Type.Define(new ExtensionInfo());
+ Schema.lodgroupType.Type.Define(new ExtensionInfo());
+ Schema.materialType.Type.Define(new ExtensionInfo());
+ Schema.materialType_binding.Type.Define(new ExtensionInfo());
+ Schema.meshType.Type.Define(new ExtensionInfo());
+ Schema.nodeType.Type.Define(new ExtensionInfo());
+ Schema.poseType.Type.Define(new ExtensionInfo());
+ Schema.poseType_element.Type.Define(new ExtensionInfo());
+ Schema.vertexArray_array.Type.Define(new ExtensionInfo());
+ Schema.vertexArray_primitives.Type.Define(new ExtensionInfo());
+ Schema.sceneType.Type.Define(new ExtensionInfo());
+ Schema.shaderType.Type.Define(new ExtensionInfo());
+ Schema.shaderType_binding.Type.Define(new ExtensionInfo());
+ Schema.textureType.Type.Define(new ExtensionInfo());
+ Schema.worldType.Type.Define(new ExtensionInfo());
+ Schema.worldType.Type.Define(new ExtensionInfo());
+
+ // Register adapter for node property editing
+ // I had to comment out the line below, because adding the AdapterCreator freezes the types
+ // which makes it impossible to add constraints (e.g. BoundingBox & Transform constraint) later.
+ //Schema.nodeType.Type.AddAdapterCreator(new AdapterCreator());
+
+ break;
+ }
+ }
+ }
+
+ private string m_namespace;
+ private XmlSchemaTypeCollection m_typeCollection;
+ }
+}
diff --git a/Framework/Atf.Atgi/AtgiXmlPersister.cs b/Framework/Atf.Atgi/AtgiXmlPersister.cs
new file mode 100644
index 00000000..5b9de2d8
--- /dev/null
+++ b/Framework/Atf.Atgi/AtgiXmlPersister.cs
@@ -0,0 +1,159 @@
+//Copyright 2014 Sony Computer Entertainment America LLC. See License.txt.
+
+using System;
+using System.Xml;
+
+using Sce.Atf.Dom;
+
+namespace Sce.Atf.Atgi
+{
+ ///
+ /// ATGI XML file reader support.
+ /// In order to pretend to match the version of the ATGI universal schema file (atgi.xsd)
+ /// to any ATGI XML file, we need to override the Read method of the DomXmlPersister.
+ /// By doing this, the universal ATGI plug-in can read any ATGI file using the atgi.xsd
+ /// schema, even if the namespaces do not match.
+ public class AtgiXmlPersister : DomXmlReader
+ {
+ ///
+ /// Constructor
+ /// Type loader to translate element names to DOM node types
+ public AtgiXmlPersister(XmlSchemaTypeLoader loader)
+ : base(loader)
+ {
+ }
+
+ ///
+ /// Gets the root element metadata for the reader's current XML node
+ /// XML reader
+ /// URI of XML data
+ /// Root element metadata for the reader's current XML node
+ protected override ChildInfo CreateRootElement(XmlReader reader, Uri rootUri)
+ {
+ string fileNameForm = reader.GetAttribute("filenameform");
+ if (fileNameForm != null)
+ {
+ m_relativeFilePaths = (fileNameForm == "atgrootrelative");
+ }
+
+ // ignore the ATGI version in the document, and use the loaded ATGI schema instead
+ AtgiSchemaTypeLoader atgiSchemaTypeLoader = TypeLoader as AtgiSchemaTypeLoader;
+ if (atgiSchemaTypeLoader != null)
+ {
+ XmlQualifiedName rootElementName =
+ new XmlQualifiedName(reader.LocalName, atgiSchemaTypeLoader.Namespace);
+ ChildInfo rootElement = TypeLoader.GetRootElement(rootElementName.ToString());
+ // ID passed to TypeLoader.GetRootElement must be same format as in XmlSchemaTypeLoader.Load(XmlSchemaSet)
+ // In XmlSchemaTypeLoader.cs look for "string name = element.QualifiedName.ToString();"
+ return rootElement;
+ }
+ else
+ {
+ return base.CreateRootElement(reader, rootUri);
+ }
+ }
+
+ ///
+ /// Determines if attribute is a reference
+ /// Attribute
+ /// True iff attribute is reference
+ protected override bool IsReferenceAttribute(Sce.Atf.Dom.AttributeInfo attributeInfo)
+ {
+ return base.IsReferenceAttribute(attributeInfo) || attributeInfo.Type.Name.EndsWith("aifPathType");
+ }
+
+ //protected override string ConvertToLocalForm(AttributeInfo attributeInfo, string uriString, Uri rootUri)
+ //{
+ // if (m_relativeFilePaths)
+ // {
+ // if (attributeInfo == Schema.textureType.uriAttribute)
+ // {
+ // string prefix = Path.GetDirectoryName(rootUri.LocalPath);
+ // return prefix + "/" + uriString;
+ // }
+ // }
+ // return uriString;
+ //}
+
+ //protected override string ConvertToPersistentForm(AttributeInfo attributeInfo, string uriString, Uri rootUri)
+ //{
+ // if (m_relativeFilePaths)
+ // {
+ // if (attributeInfo == Schema.textureType.uriAttribute)
+ // {
+ // string prefix = Path.GetDirectoryName(rootUri.LocalPath);
+ // return uriString.Remove(0, prefix.Length + 1);
+ // }
+ // }
+ // return uriString;
+ //}
+
+ /////
+ ///// Fix up node tree after reading
+ ///// Root node
+ ///// URI of XML
+ //protected override void OnAfterRead(DomNode root, Uri uri)
+ //{
+ // // ATGI uses strings for some internal references, rather than xs:anyURI
+
+ // // build the id-to-node map
+ // Multimap idToNodeMap = new Multimap();
+ // foreach (DomNode node in root.Subtree)
+ // {
+ // // add node to map if it has an id
+ // if (node.Type.IdAttribute != null)
+ // {
+ // string id = node.GetId();
+ // if (!string.IsNullOrEmpty(id))
+ // idToNodeMap.Add(id, node); // binding ids aren't necessarily unique
+ // }
+ // }
+
+ // // attempt to resolve all references
+ // List> references = new List>();
+ // foreach (DomNode node in root.Subtree)
+ // {
+ // if (node.Type == Schema.primitives_binding.Type)
+ // {
+ // // primitive set bindings to datasets are local to the parent mesh
+ // DomNode meshNode = node.Parent.Parent; // Mesh->Primitives->Binding
+ // string sourceId = node.GetAttribute(Schema.primitives_binding.sourceAttribute).ToString();
+ // foreach (DomNode sourceNode in idToNodeMap.Find(sourceId))
+ // {
+ // if (sourceNode.Parent == meshNode)
+ // {
+ // node.SetAttribute(Schema.primitives_binding.sourceAttribute, sourceNode);
+ // break;
+ // }
+ // }
+ // }
+ // else if (node.Type == Schema.shaderType_binding.Type)
+ // {
+ // Resolve(node, Schema.shaderType_binding.sourceAttribute, idToNodeMap);
+ // }
+ // else if (node.Type == Schema.materialType_binding.Type)
+ // {
+ // Resolve(node, Schema.materialType_binding.sourceAttribute, idToNodeMap);
+ // }
+ // else if (node.Type == Schema.vertexArray_primitives.Type)
+ // {
+ // Resolve(node, Schema.vertexArray_primitives.shaderAttribute, idToNodeMap);
+ // }
+ // }
+ //}
+
+ //private bool Resolve(DomNode node, AttributeInfo refAttributeInfo, Multimap idToNodeMap)
+ //{
+ // string sourceId = node.GetAttribute(refAttributeInfo).ToString();
+ // DomNode sourceNode = idToNodeMap.FindFirst(sourceId);
+ // if (sourceNode != null)
+ // {
+ // node.SetAttribute(refAttributeInfo, sourceNode);
+ // return true;
+ // }
+ // return false;
+ //}
+
+ private bool m_relativeFilePaths = true;
+ }
+}
diff --git a/Framework/Atf.Atgi/CustomData.cs b/Framework/Atf.Atgi/CustomData.cs
new file mode 100644
index 00000000..5408c417
--- /dev/null
+++ b/Framework/Atf.Atgi/CustomData.cs
@@ -0,0 +1,25 @@
+//Copyright 2014 Sony Computer Entertainment America LLC. See License.txt.
+
+using System.Collections.Generic;
+
+using Sce.Atf.Dom;
+using Sce.Atf.Rendering;
+
+namespace Sce.Atf.Atgi
+{
+ ///
+ /// ATGI CustomData
+ public class CustomData : DomNodeAdapter, ICustomData
+ {
+ ///
+ /// Gets the list of custom attributes
+ public IList CustomAttributes
+ {
+ get
+ {
+ return GetChildList(Schema.customDataType.attributeChild);
+ }
+ }
+ }
+}
+
diff --git a/Framework/Atf.Atgi/CustomDataAttribute.cs b/Framework/Atf.Atgi/CustomDataAttribute.cs
new file mode 100644
index 00000000..08791d5d
--- /dev/null
+++ b/Framework/Atf.Atgi/CustomDataAttribute.cs
@@ -0,0 +1,109 @@
+//Copyright 2014 Sony Computer Entertainment America LLC. See License.txt.
+
+using Sce.Atf.Dom;
+using Sce.Atf.Rendering;
+
+namespace Sce.Atf.Atgi
+{
+ ///
+ /// Custom data attribute interface implementation
+ public class CustomDataAttribute : DomNodeAdapter, ICustomDataAttribute, INameable //, IListable
+ {
+ ///
+ /// Gets or sets the data type name
+ public string DataType
+ {
+ get { return GetAttribute(Schema.customDataAttributeType.typeAttribute); }
+ set { SetAttribute(Schema.customDataAttributeType.typeAttribute, value); }
+ }
+
+ ///
+ /// Gets and sets the value attribute name
+ public string ValueAttr
+ {
+ get { return GetAttribute(Schema.customDataAttributeType.valueAttribute); }
+ set { SetAttribute(Schema.customDataAttributeType.valueAttribute, value); }
+ }
+
+ ///
+ /// Gets and sets default value
+ public string Default
+ {
+ get { return GetAttribute(Schema.customDataAttributeType.defaultAttribute); }
+ set { SetAttribute(Schema.customDataAttributeType.defaultAttribute, value); }
+ }
+
+ ///
+ /// Gets and sets minimum value
+ public string Min
+ {
+ get { return GetAttribute(Schema.customDataAttributeType.minAttribute); }
+ set { SetAttribute(Schema.customDataAttributeType.minAttribute, value); }
+ }
+
+ ///
+ /// Gets and sets maximum value
+ public string Max
+ {
+ get { return GetAttribute(Schema.customDataAttributeType.maxAttribute); }
+ set { SetAttribute(Schema.customDataAttributeType.maxAttribute, value); }
+ }
+
+ ///
+ /// Gets and sets the count
+ public int Count
+ {
+ get { return GetAttribute(Schema.customDataAttributeType.countAttribute); }
+ set { SetAttribute(Schema.customDataAttributeType.countAttribute, value); }
+ }
+
+ ///
+ /// Gets and sets the index
+ public int Index
+ {
+ get { return GetAttribute(Schema.customDataAttributeType.indexAttribute); }
+ set { SetAttribute(Schema.customDataAttributeType.indexAttribute, value); }
+ }
+
+ ///
+ /// Gets or sets whether value is an array
+ public bool isArray
+ {
+ get { return GetAttribute(Schema.customDataAttributeType.isArrayAttribute); }
+ set { SetAttribute(Schema.customDataAttributeType.isArrayAttribute, value); }
+ }
+
+ ///
+ /// Gets and sets any element data
+ public object Value
+ {
+ get { return DomNode.GetAttribute(Schema.customDataAttributeType.Attribute); }
+ set { DomNode.SetAttribute(Schema.customDataAttributeType.Attribute, value); }
+ }
+
+ #region INameable Members
+
+ ///
+ /// Gets and sets the name attribute
+ public string Name
+ {
+ get { return GetAttribute(Schema.customDataAttributeType.nameAttribute); }
+ set { SetAttribute(Schema.customDataAttributeType.nameAttribute, value); }
+ }
+
+ #endregion
+
+ //#region IListable Members
+
+ /////
+ ///// Gets display info for Dom object
+ ///// Item info, to be filled out
+ //public virtual void GetInfo(Sce.Atf.Applications.ItemInfo info)
+ //{
+ // info.Label = (string)InternalObject.GetAttribute(NameAttribute);
+ // info.ImageIndex = info.GetImageList().Images.IndexOfKey(StandardIcon.Data);
+ //}
+
+ //#endregion
+ }
+}
diff --git a/Framework/Atf.Atgi/DataSet.cs b/Framework/Atf.Atgi/DataSet.cs
new file mode 100644
index 00000000..b453a73e
--- /dev/null
+++ b/Framework/Atf.Atgi/DataSet.cs
@@ -0,0 +1,50 @@
+//Copyright 2014 Sony Computer Entertainment America LLC. See License.txt.
+
+using Sce.Atf.Dom;
+using Sce.Atf.Rendering;
+
+namespace Sce.Atf.Atgi
+{
+ ///
+ /// ATGI Data Set
+ public class DataSet : DomNodeAdapter, IDataSet //, IListable
+ {
+ ///
+ /// Gets and sets the DataSet name
+ public string Name
+ {
+ get { return GetAttribute(Schema.vertexArray_array.nameAttribute); }
+ set { SetAttribute(Schema.vertexArray_array.nameAttribute, value); }
+ }
+
+ ///
+ /// Gets and sets the data array
+ public float[] Data
+ {
+ get { return GetAttribute(Schema.vertexArray_array.Attribute); }
+ set { SetAttribute(Schema.vertexArray_array.Attribute, value); }
+ }
+
+ ///
+ /// Gets and sets the DataSet element size
+ public int ElementSize
+ {
+ get { return GetAttribute(Schema.vertexArray_array.strideAttribute); }
+ set { SetAttribute(Schema.vertexArray_array.strideAttribute, value); }
+ }
+
+ //#region IListable Members
+
+ /////
+ ///// Gets display info for Dom object
+ ///// Item info, to be filled out
+ //public virtual void GetInfo(Sce.Atf.Applications.ItemInfo info)
+ //{
+ // info.Label = (string)InternalObject.GetAttribute(Node.NameAttribute);
+ // info.ImageIndex = info.GetImageList().Images.IndexOfKey(StandardIcon.Data);
+ //}
+
+ //#endregion
+ }
+}
+
diff --git a/Framework/Atf.Atgi/Instance.cs b/Framework/Atf.Atgi/Instance.cs
new file mode 100644
index 00000000..2efee3b9
--- /dev/null
+++ b/Framework/Atf.Atgi/Instance.cs
@@ -0,0 +1,89 @@
+//Copyright 2014 Sony Computer Entertainment America LLC. See License.txt.
+
+using Sce.Atf.Adaptation;
+using Sce.Atf.Dom;
+using Sce.Atf.Rendering.Dom;
+using Sce.Atf.VectorMath;
+
+namespace Sce.Atf.Atgi
+{
+ ///
+ /// ATGI Instance
+ public class Instance : DomNodeAdapter, IBoundable
+ {
+ ///
+ /// Performs initialization when the adapter's node is set.
+ /// This method is called each time the adapter is connected to its underlying node.
+ /// Typically overridden by creators of DOM adapters.
+ protected override void OnNodeSet()
+ {
+ base.OnNodeSet();
+ m_boundingBox = new Cached(CalculateBoundingBox);
+ }
+
+ ///
+ /// Gets and sets the instance name
+ public string Name
+ {
+ get { return GetAttribute(Schema.instanceType.nameAttribute); }
+ set { SetAttribute(Schema.instanceType.nameAttribute, value); }
+ }
+
+ #region IBoundable Members
+
+ ///
+ /// Calculates the bounding box for the instance
+ /// Bounding box
+ public Box CalculateBoundingBox()
+ {
+ Box box = new Box();
+
+ foreach (IBoundable boundable in DomNode.Children.AsIEnumerable())
+ box.Extend(boundable.BoundingBox);
+
+ return box;
+ }
+
+ ///
+ /// Gets a bounding box in local space
+ public Box BoundingBox
+ {
+ get { return m_boundingBox.Value; }
+ }
+
+ #endregion
+
+ #region IVisible Members
+
+ ///
+ /// Gets or sets whether the object is visible
+ public bool Visible
+ {
+ get { return m_visible; }
+ set { m_visible = value; }
+ }
+
+ #endregion
+
+ /////
+ ///// Gets instance's target name
+ //private string Target
+ //{
+ // get
+ // {
+ // object targetUri = InternalObject.GetAttribute("target");
+ // if (targetUri != null)
+ // {
+ // DomUri uri = targetUri as DomUri;
+ // return uri.ToString();
+ // }
+ // else
+ // return String.Empty;
+ // }
+ //}
+
+ private Cached m_boundingBox;
+ private bool m_visible = true;
+ }
+}
+
diff --git a/Framework/Atf.Atgi/Joint.cs b/Framework/Atf.Atgi/Joint.cs
new file mode 100644
index 00000000..041eba7a
--- /dev/null
+++ b/Framework/Atf.Atgi/Joint.cs
@@ -0,0 +1,402 @@
+//Copyright 2014 Sony Computer Entertainment America LLC. See License.txt.
+
+using Sce.Atf.Dom;
+using Sce.Atf.Rendering;
+using Sce.Atf.VectorMath;
+
+namespace Sce.Atf.Atgi
+{
+ ///
+ /// Interface for ATGI joint. Represents the jointType in atgi.xsd, which extends the nodeType complex type.
+ public class Joint : Node, IJoint//, IHierarchical, IListable
+ {
+ ///
+ /// Performs custom actions on NodeSet events.
+ /// Called after successfully attaching to internal DOM object.
+ protected override void OnNodeSet()
+ {
+ base.OnNodeSet();
+
+ // Initialize scale to (1, 1, 1) if missing
+ DomNode.SetAttributeIfDefault(Schema.jointType.scaleAttribute, new Vec3F(1, 1, 1));
+ }
+
+ ///
+ /// Gets or sets a flag indicating which axes are free to rotate
+ public EulerAngleChannels Freedoms
+ {
+ get
+ {
+ DomNode freedoms = DomNode.GetChild(Schema.jointType.freedomsChild);
+ string channels = freedoms.GetAttribute(Schema.jointType_freedoms.channelsAttribute).ToString();
+ EulerAngleChannels value;
+ EnumUtil.TryParse(channels, out value);
+ return value;
+ }
+ set
+ {
+ DomNode freedoms = DomNode.GetChild(Schema.jointType.freedomsChild);
+ freedoms.SetAttribute(Schema.jointType_freedoms.channelsAttribute, value);
+ }
+ }
+
+ ///
+ /// Gets or sets a EulerAngleLimits indicating the minimum rotation allowed on axes
+ public EulerAngleLimits MinRotation
+ {
+ get
+ {
+ DomNode minRotNode = DomNode.GetChild(Schema.jointType.minrotationChild);
+ string channelsString = minRotNode.GetAttribute(Schema.jointType_minrotation.channelsAttribute).ToString();
+ EulerAngleChannels channels;
+ EnumUtil.TryParse(channelsString, out channels);
+ float[] vals = minRotNode.GetAttribute(Schema.jointType_minrotation.Attribute) as float[];
+ return new EulerAngleLimits(vals, channels);
+ }
+ set
+ {
+ DomNode minRotNode = DomNode.GetChild(Schema.jointType.minrotationChild);
+ minRotNode.SetAttribute(Schema.jointType_minrotation.channelsAttribute, value.Channels.ToString());
+ minRotNode.SetAttribute(Schema.jointType_minrotation.Attribute, value.Angles);
+ }
+ }
+
+ ///
+ /// Gets or sets a EulerAngleLimits indicating the maximum rotation allowed on axes
+ public EulerAngleLimits MaxRotation
+ {
+ get
+ {
+ DomNode maxRotNode = DomNode.GetChild(Schema.jointType.maxrotationChild);
+ string channelsString = maxRotNode.GetAttribute(Schema.jointType_maxrotation.channelsAttribute).ToString();
+ EulerAngleChannels channels;
+ EnumUtil.TryParse(channelsString, out channels);
+ float[] vals = maxRotNode.GetAttribute(Schema.jointType_maxrotation.Attribute) as float[];
+ return new EulerAngleLimits(vals, channels);
+ }
+ set
+ {
+ DomNode maxRotNode = DomNode.GetChild(Schema.jointType.maxrotationChild);
+ maxRotNode.SetAttribute(Schema.jointType_maxrotation.channelsAttribute, value.Channels.ToString());
+ maxRotNode.SetAttribute(Schema.jointType_maxrotation.Attribute, value.Angles);
+ }
+ }
+
+ #region IJoint Members
+
+ ///
+ /// Gets or sets the rotation freedom in x
+ public bool RotationFreedomInX
+ {
+ get { return Freedoms.FreedomInX(); }
+ set
+ {
+ EulerAngleChannels freedom = Freedoms;
+ if (value)
+ freedom |= EulerAngleChannels.X;
+ else
+ freedom &= ~EulerAngleChannels.X;
+ Freedoms = freedom;
+ }
+ }
+
+ ///
+ /// Gets or sets the rotation freedom in y
+ public bool RotationFreedomInY
+ {
+ get { return Freedoms.FreedomInY(); }
+ set
+ {
+ EulerAngleChannels freedom = Freedoms;
+ if (value)
+ freedom |= EulerAngleChannels.Y;
+ else
+ freedom &= ~EulerAngleChannels.Y;
+ Freedoms = freedom;
+ }
+ }
+
+ ///
+ /// Gets or sets the rotation freedom in z
+ public bool RotationFreedomInZ
+ {
+ get { return Freedoms.FreedomInZ(); }
+ set
+ {
+ EulerAngleChannels freedom = Freedoms;
+ if (value)
+ freedom |= EulerAngleChannels.Z;
+ else
+ freedom &= ~EulerAngleChannels.Z;
+ Freedoms = freedom;
+ }
+ }
+
+ ///
+ /// Gets whether the joint has a rotation minimum in x
+ public bool HasRotationMinX
+ {
+ get
+ {
+ EulerAngleLimits minRot = MinRotation;
+ return minRot.HasRotationX;
+ }
+ }
+ ///
+ /// Gets whether the joint has a rotation minimum in y
+ public bool HasRotationMinY
+ {
+ get
+ {
+ EulerAngleLimits minRot = MinRotation;
+ return minRot.HasRotationY;
+ }
+ }
+ ///
+ /// Gets whether the joint has a rotation minimum in z
+ public bool HasRotationMinZ
+ {
+ get
+ {
+ EulerAngleLimits minRot = MinRotation;
+ return minRot.HasRotationZ;
+ }
+ }
+
+ ///
+ /// Gets or sets joint rotation minimum in x
+ public float RotationMinX
+ {
+ get
+ {
+ EulerAngleLimits minRot = MinRotation;
+ return minRot.X;
+ }
+ set
+ {
+ EulerAngleLimits minRot = MinRotation;
+ minRot.X = value;
+ MinRotation = minRot;
+ }
+ }
+
+ ///
+ /// Gets or sets joint rotation minimum in y
+ public float RotationMinY
+ {
+ get
+ {
+ EulerAngleLimits minRot = MinRotation;
+ return minRot.Y;
+ }
+ set
+ {
+ EulerAngleLimits minRot = MinRotation;
+ minRot.Y = value;
+ MinRotation = minRot;
+ }
+ }
+
+ ///
+ /// Gets or sets joint rotation minimum in z
+ public float RotationMinZ
+ {
+ get
+ {
+ EulerAngleLimits minRot = MinRotation;
+ return minRot.Z;
+ }
+ set
+ {
+ EulerAngleLimits minRot = MinRotation;
+ minRot.Z = value;
+ MinRotation = minRot;
+ }
+ }
+
+ ///
+ /// Gets whether the joint has a rotation maximum in x
+ public bool HasRotationMaxX
+ {
+ get
+ {
+ EulerAngleLimits maxRot = MaxRotation;
+ return maxRot.HasRotationX;
+ }
+ }
+
+ ///
+ /// Gets whether the joint has a rotation maximum in y
+ public bool HasRotationMaxY
+ {
+ get
+ {
+ EulerAngleLimits maxRot = MaxRotation;
+ return maxRot.HasRotationY;
+ }
+ }
+
+ ///
+ /// Gets whether the joint has a rotation maximum in z
+ public bool HasRotationMaxZ
+ {
+ get
+ {
+ EulerAngleLimits maxRot = MaxRotation;
+ return maxRot.HasRotationZ;
+ }
+ }
+
+ ///
+ /// Gets or sets the joint rotation maximum in x
+ public float RotationMaxX
+ {
+ get
+ {
+ EulerAngleLimits maxRot = MaxRotation;
+ return maxRot.X;
+ }
+ set
+ {
+ EulerAngleLimits maxRot = MaxRotation;
+ maxRot.X = value;
+ MaxRotation = maxRot;
+ }
+ }
+
+ ///
+ /// Gets or sets the joint rotation maximum in y
+ public float RotationMaxY
+ {
+ get
+ {
+ EulerAngleLimits maxRot = MaxRotation;
+ return maxRot.Y;
+ }
+ set
+ {
+ EulerAngleLimits maxRot = MaxRotation;
+ maxRot.Y = value;
+ MaxRotation = maxRot;
+ }
+ }
+
+ ///
+ /// Gets or sets the joint rotation maximum in z
+ public float RotationMaxZ
+ {
+ get
+ {
+ EulerAngleLimits maxRot = MaxRotation;
+ return maxRot.Z;
+ }
+ set
+ {
+ EulerAngleLimits maxRot = MaxRotation;
+ maxRot.Z = value;
+ MaxRotation = maxRot;
+ }
+ }
+
+ ///
+ /// Gets or sets the additional rotation applied after the normal node rotation
+ public EulerAngles3F JointOrientEul
+ {
+ get
+ {
+ DomNode rotNode = DomNode.GetChild(Schema.jointType.jointOrientEulChild);
+ string rotOrdString = rotNode.GetAttribute(Schema.jointType_jointOrientEul.rotOrdAttribute) as string;
+ EulerAngleOrder rotOrd;
+ EnumUtil.TryParse(rotOrdString, out rotOrd);
+ float[] values = rotNode.GetAttribute(Schema.jointType_jointOrientEul.Attribute) as float[];
+ return new EulerAngles3F(new Vec3F(values), rotOrd);
+ }
+ set
+ {
+ DomNode rotNode = DomNode.GetChild(Schema.jointType.jointOrientEulChild);
+ rotNode.SetAttribute(Schema.jointType_jointOrientEul.rotOrdAttribute, value.RotOrder.ToString());
+ rotNode.SetAttribute(Schema.jointType_jointOrientEul.Attribute, value.Angles.ToArray());
+ }
+ }
+
+ ///
+ /// Gets or sets whether the joint should compensate for scale
+ public bool ScaleCompensate
+ {
+ get
+ {
+ bool scaleCompNode = (bool)DomNode.GetAttribute(Schema.jointType.scaleCompensateAttribute);
+ return scaleCompNode;
+ }
+ set
+ {
+ DomNode.SetAttribute(Schema.jointType.scaleCompensateAttribute, value);
+ }
+ }
+ #endregion
+
+ ///
+ /// Gets or sets the node rotation. Includes JointOrientEul so that IRenderableNode can be
+ /// implemented correctly and that no additional interfaces are needed everywhere that
+ /// IRenderableNode is used.
+ public override Vec3F Rotation
+ {
+ get
+ {
+ // {base rotation} * jointRot = totalRot
+ Matrix3F totalRot = new Matrix3F();
+ totalRot.Rotation(base.Rotation);
+
+ EulerAngles3F jointOrientation = JointOrientEul;
+ Matrix3F jointRot = jointOrientation.CalculateMatrix();
+
+ totalRot.Mul(totalRot, jointRot);
+
+ float x, y, z;
+ totalRot.GetEulerAngles(out x, out y, out z);
+
+ return new Vec3F(x, y, z);
+ }
+ set
+ {
+ // baseRot * jointRot = totalRot
+ // We need to find 'baseRot'.
+ // baseRot * (jointRot * jointRotInverse) = totalRot * jointRotInverse
+ // baseRot = totalRot * jointRotInverse
+ Matrix3F totalRot = new Matrix3F();
+ totalRot.Rotation(value);
+
+ EulerAngles3F jointOrientation = JointOrientEul;
+ Matrix3F jointRot = jointOrientation.CalculateMatrix();
+
+ Matrix3F jointRotInverse = new Matrix3F();
+ jointRotInverse.Invert(jointRot);
+
+ Matrix3F baseRot = new Matrix3F();
+ baseRot.Mul(totalRot, jointRotInverse);
+
+ // test: testTotalRot was the same as totalRot on 10/27/2009
+ //Matrix3F testTotalRot = new Matrix3F();
+ //testTotalRot.Mul(baseRot, jointRot);
+
+ float x, y, z;
+ baseRot.GetEulerAngles(out x, out y, out z);
+
+ base.Rotation = new Vec3F(x, y, z);
+ }
+ }
+
+ //#region IListable Members
+
+ /////
+ ///// Gets display info for Dom object
+ ///// Item info, to be filled out
+ //public override void GetInfo(Sce.Atf.Applications.ItemInfo info)
+ //{
+ // info.Label = "Joint";// (string)InternalObject.GetAttribute(Node.NameAttribute);
+ // info.ImageIndex = info.GetImageList().Images.IndexOfKey(StandardIcon.Data);
+ //}
+ //#endregion
+
+ }
+}
diff --git a/Framework/Atf.Atgi/LodGroup.cs b/Framework/Atf.Atgi/LodGroup.cs
new file mode 100644
index 00000000..1375cf54
--- /dev/null
+++ b/Framework/Atf.Atgi/LodGroup.cs
@@ -0,0 +1,99 @@
+//Copyright 2014 Sony Computer Entertainment America LLC. See License.txt.
+
+using System.Collections.Generic;
+
+using Sce.Atf.Adaptation;
+using Sce.Atf.Dom;
+using Sce.Atf.Rendering;
+using Sce.Atf.Rendering.Dom;
+using Sce.Atf.VectorMath;
+
+namespace Sce.Atf.Atgi
+{
+ ///
+ /// ATGI LodGroup (Level Of Detail Group)
+ public class LodGroup : DomNodeAdapter, ILodGroup, IBoundable
+ {
+ ///
+ /// Performs initialization when the adapter's node is set.
+ /// This method is called each time the adapter is connected to its underlying node.
+ /// Typically overridden by creators of DOM adapters.
+ protected override void OnNodeSet()
+ {
+ base.OnNodeSet();
+ m_boundingBox = new Cached(CalculateBoundingBox);
+ }
+
+ ///
+ /// Gets and sets the Scene name
+ public string Name
+ {
+ get { return (string)DomNode.GetAttribute(Schema.lodgroupType.nameAttribute); }
+ set { DomNode.SetAttribute(Schema.lodgroupType.nameAttribute, value); }
+ }
+
+ ///
+ /// Gets the list of Scene nodes
+ public IList Nodes
+ {
+ get { return GetChildList(Schema.lodgroupType.nodeChild); }
+ }
+
+ #region ILodGroup Members
+
+ ///
+ /// Gets distance thresholds for the LODs
+ public IList Thresholds
+ {
+ get
+ {
+ return DomNode.GetChild(Schema.lodgroupType.thresholdsChild).
+ GetAttribute(Schema.lodgroupType_thresholds.Attribute) as float[];
+ }
+ }
+
+ #endregion
+
+ #region IBoundable Members
+
+ ///
+ /// Calculates the bounding box for the instance
+ /// Bounding box
+ public Box CalculateBoundingBox()
+ {
+ Box box = new Box();
+
+ foreach (IBoundable boundable in DomNode.Children.AsIEnumerable())
+ box.Extend(boundable.BoundingBox);
+
+ //m_box.Transform(Transform); //Look at the schema -- "lodgroupType" does not have a transformation
+ return box;
+ }
+
+ ///
+ /// Gets the bounding box in local space
+ public Box BoundingBox
+ {
+ get { return m_boundingBox.Value; }
+ }
+
+ #endregion
+
+
+ #region IVisible Members
+
+ ///
+ /// Gets or sets whether the object is visible
+ public bool Visible
+ {
+ get { return m_visible; }
+ set { m_visible = value; }
+ }
+
+ #endregion
+
+ private Cached m_boundingBox;
+ private bool m_visible = true;
+ }
+}
+
diff --git a/Framework/Atf.Atgi/Material.cs b/Framework/Atf.Atgi/Material.cs
new file mode 100644
index 00000000..1fdf1a59
--- /dev/null
+++ b/Framework/Atf.Atgi/Material.cs
@@ -0,0 +1,228 @@
+//Copyright 2014 Sony Computer Entertainment America LLC. See License.txt.
+
+using System;
+using System.Collections.Generic;
+using System.Xml;
+
+using Sce.Atf.Adaptation;
+using Sce.Atf.Dom;
+using Sce.Atf.Rendering;
+using Sce.Atf.Rendering.OpenGL;
+using Sce.Atf.VectorMath;
+
+namespace Sce.Atf.Atgi
+{
+ ///
+ /// ATGI material, representing the material element in an ATGI XML file. See
+ /// http://wiki.ship.scea.com/confluence/display/SCEEATGDOCS/Materials+in+.atgi.
+ public class Material : DomNodeAdapter, IShader, IRenderStateCreator
+ {
+ ///
+ /// Gets and sets the Material name
+ public string Name
+ {
+ get { return GetAttribute(Schema.materialType.nameAttribute); }
+ set { SetAttribute(Schema.materialType.nameAttribute, value); }
+ }
+
+ ///
+ /// Gets the list of shader bindings (names and types of data) used by this Material
+ public IList Bindings
+ {
+ get { return GetChildList(Schema.materialType.bindingChild); }
+ }
+
+ ///
+ /// Gets the list of child elements of the 'customData' element that corresponds to
+ /// this material
+ public IList