using System; using System.Collections.Generic; using System.Text; namespace SharpGLTF { static class Constants { #region root paths public static string RemoteSchemaRepo = "https://github.com/KhronosGroup/glTF.git"; /// /// Program directory /// public static string ProgramDirectory => System.IO.Path.GetDirectoryName(typeof(Program).Assembly.Location); /// /// Directory where the schema is downloaded and used as source /// public static string LocalRepoDirectory => System.IO.Path.Combine(ProgramDirectory, "glTF"); #endregion #region main schema paths /// /// Directory of the main schema within the download repo directory /// public static string MainSchemaDir => System.IO.Path.Combine(LocalRepoDirectory, "specification", "2.0", "schema"); /// /// schema source code file path /// public static string MainSchemaFile => System.IO.Path.Combine(MainSchemaDir, "glTF.schema.json"); #endregion #region extension paths private static string ArchivedSchemaDir => System.IO.Path.Combine(LocalRepoDirectory, "extensions", "2.0", "Archived"); private static string KhronosSchemaDir => System.IO.Path.Combine(LocalRepoDirectory, "extensions", "2.0", "Khronos"); private static string VendorSchemaDir => System.IO.Path.Combine(LocalRepoDirectory, "extensions", "2.0", "Vendor"); internal static string ArchivedExtensionPath(string ext, string json) { return System.IO.Path.Combine(ArchivedSchemaDir, ext, "schema", json); } internal static string KhronosExtensionPath(string ext, string json) { return System.IO.Path.Combine(KhronosSchemaDir, ext, "schema", json); } internal static string VendorExtensionPath(string ext, string json) { return System.IO.Path.Combine(VendorSchemaDir, ext, "schema", json); } internal static string CustomExtensionsPath(string ext, string json) { return System.IO.Path.Combine(ProgramDirectory, "Schemas", ext, "schema", json); } #endregion #region code generation output paths /// /// directory within the solution where the generated code is emitted /// public static string TargetProjectDirectory => "src\\SharpGLTF.Core\\Schema2\\Generated"; public static string CesiumProjectDirectory => "src\\SharpGLTF.Ext.3DTiles\\Schema2\\Generated"; public static string AgiProjectDirectory => "src\\SharpGLTF.Ext.Agi\\Schema2\\Generated"; /// /// namespace of the emitted generated code /// public static string OutputNamespace => "SharpGLTF.Schema2"; public static string CesiumNameSpace => "SharpGLTF.Schema2.Tiles3D"; public static string AgiNameSpace => "SharpGLTF.Schema2.AGI"; #endregion } }