Vixen
02b45cc4
csharp
public static class ProjectMarker

The file that says a directory is a Vixen project.

No guide page documents this yet — the page shows what the code says about itself.

Remarks

Doc 08 has named MyGame.vxproj since it was written, and it was never built. What it described — "Vixen project settings (YAML)" — turned out to be ProjectSettingsStore, one file per [DataContract] type, which doc 20's A4 built so that adding a setting is declaring a type. A single file beside that holding other project settings is the second mechanism the split makes unnecessary, so this is deliberately not that.

What it is is a marker, and that half of the question was genuinely unanswered. ProjectWorkspace.IsProject said "it has an Assets/ folder", which is weak in both directions: any directory with a folder of that name qualifies — a source tree with an Assets/ in it is not a project — and a project whose assets have all been deleted stops being one, which is a project the editor refuses to reopen precisely when somebody most needs it to.

⚠ Two fields, and each has a reader, which is the bar a shipped setting has to clear. Format is read by TryRead, which refuses a file from a future it does not understand rather than binding half of it; Engine is read by IsFromTheFuture, which is what lets the editor say "this project was made with a newer Vixen" instead of failing later and stranger. A third field with nothing behind it would teach people that the file does not matter.

⚠ It does not record the project's name. That is ProjectInfoSettings.ProductName, which the title bar and About already read — and two files answering "what is this called" is exactly the disagreement doc 20's A4 spends a page preventing.

Fields and properties (2)

  • public const string Extension

    What the file is called after the project's own name.

  • public const int CurrentFormat

    The format this build writes and is the newest it understands.

Methods (4)

  • public static bool TryFind(string directory, out string path)

    Finds a project's marker.

  • public static bool TryRead(string directory, out ProjectMarkerFile marker)

    Reads a project's marker.

  • public static bool IsFromTheFuture(ProjectMarkerFile marker, string? engine = null)

    Whether a project was made by an engine newer than this one.

  • public static string Write(string engine)

    What a marker's text is, for the version and project name given.

Used by (5)

  • ContentPipelineTestsVixen.Editor.Assets.Tests
  • EditorApplicationVixen.Editor.App
  • ProjectMarkerTestsVixen.Editor.Core.Tests
  • ProjectWorkspaceVixen.Editor.Assets
  • TemplateTestsVixen.Templates.Tests