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
}
}