public sealed class TexturingModuleDoc 48's texture graph, registering itself through the door a third party comes through.
Remarks
This is the claim doc 48 § D14 says the whole document exists to prove. Four batches built an evaluator, a folder of kernels and a compiler, and none of it was reachable from the editor: nothing registered a document, a panel or a command. This type is that spine — and it references Vixen.Editor.App not at all, which is the property that makes "it is a plugin" a fact rather than a description.
⚠ What it takes from the host, it asks for. The project and the contribution registry, through PluginServices.Require. A host that has neither refuses this module with a sentence naming what was missing, rather than throwing a null reference out of Activate.
⚠ Three things doc 48 predicted this plugin would need and could not have. All three are closed, and closing them is what this module was for.
A graphics device — closed. EditorApplication.PluginPoints now publishes IEditorGraphics, so the preview pane evaluates a plan on the editor's own device and shows the result. #737. ⚠ Its "smallest honest fix is one line" was wrong: the application builds its plugin host in its constructor and acquires a device afterwards, so what a plugin can be handed is a live view rather than the device. A double-click — closed. AssetEditorRegistry.Add hands back the removal now, so TextureGraphEditorFactory claims .vxtexgraph inside this module's registration scope and gives it back on unload. The Create ▸ entry says Opens: true exactly when a host published a registry to claim it in. #739. The compiler — closed, and this entry was stale twice. TextureGraphCompiler is public (#738), and both panes now compile through it: LayerStackPreview the open stack, and TextureGraphPreview the open graph. The second was the finished-thing-nothing-calls this workstream keeps producing — the compiler public, the document's Compile written, and a pane drawing a fixed checkerboard beside them for three batches (#792, #816).
⚠ Every registration goes through PluginContext, including the panel. TerrainModule — the worked example — registers its five panels straight on Shell.RegisterPanel with no matching UnregisterPanel, which EditorShell.UnregisterPanel's own remarks describe as "a lambda over the plugin's own state that keeps its assembly loaded for the session". It survives that because a built-in is never collected; a plugin loaded from a folder would not — #740.
Fields and properties (16)
public const string ModuleIdWhat the host activates it under, and what a plugin depending on it names.
public const string ModuleNameWhat a plugin-management panel calls it.
public const string OpenCommandThe verb that opens the selected .vxtexgraph.
public const string GraphPanelThe panel a graph is edited in.
public const string OpenStackCommandThe verb that opens the selected .vxlayers.
public const string StackPanelThe panel a layer stack is shown in.
public const string PaintCommandThe verb that swaps the pointer between selecting and painting.
public const string BakeCommandThe verb that turns the open .vxtexgraph into a .vxmat.
public const string BakeStackCommandThe verb that turns the open .vxlayers into one .vxmat per texture set.
public const string BakeSplatCommandPacks the open stack's painted layer weights into a splat map.
public const string ForceBakeCommandThe verb that re-runs the last bake a painted-over map refused.
public const string ParallaxBakeCommandThe verb that bakes the graph and turns the height march on.
public const string SaveSmartCommandThe verb that saves the open stack's chosen texture set as a .vxsmartmat.
public const string ApplySmartCommandThe verb that puts the selected .vxsmartmat on top of the open stack's set.
public const string PaintPanelThe pane a stroke is made in: doc 48 § D13's 2D UV view.
public const string MeshPanelThe pane a stroke is aimed in: doc 48 § D13's 3D view.
Methods (3)
public void Activate(PluginContext context)Adds everything the plugin contributes.
public void Deactivate()public void Dispose()
Used by (37)
- EvaluatorDeviceChangeTestsVixen.Editor.Texturing.Tests
- ForceBakeDeviceTestsVixen.Editor.Texturing.Tests
- ImageViewBarWiringTestsVixen.Editor.Texturing.Tests
- LayerRowKeyTestsVixen.Editor.Texturing.Tests
- LayerStackBakeRouteDeviceTestsVixen.Editor.Texturing.Tests
- LayerStackBindingTestsVixen.Editor.Texturing.Tests
- LayerStackCompoundCacheTestsVixen.Editor.Texturing.Tests
- LayerStackEditingTestsVixen.Editor.Texturing.Tests
- LayerStackKnobWidthTestsVixen.Editor.Texturing.Tests
- LayerStackMarkupTestsVixen.Editor.Texturing.Tests
- LayerStackPanelDeviceTestsVixen.Editor.Texturing.Tests
- LayerStackPanelTestsVixen.Editor.Texturing.Tests
- LayerStackThemeTestsVixen.Editor.Texturing.Tests
- LayerStackWatchTestsVixen.Editor.Texturing.Tests
- MaterialBakeRouteDeviceTestsVixen.Editor.Texturing.Tests
- ModuleReferenceTestsVixen.Editor.Texturing.Tests
- NodePreviewWiringTestsVixen.Editor.Texturing.Tests
- PaintAlphaSourceTestsVixen.Editor.Texturing.Tests
- PaintCanvasStoreWiringTestsVixen.Editor.Texturing.Tests
- PaintMeshViewTestsVixen.Editor.Texturing.Tests
- PaintThemeTestsVixen.Editor.Texturing.Tests
- PaintToolTestsVixen.Editor.Texturing.Tests
- PaintUvViewTestsVixen.Editor.Texturing.Tests
- ParallaxBakeDeviceTestsVixen.Editor.Texturing.Tests
- ProjectCompoundDeviceTestsVixen.Editor.Texturing.Tests
- SharedEvaluatorDeviceTestsVixen.Editor.Texturing.Tests
- SmartMaterialContentTestsVixen.Editor.Texturing.Tests
- SmartMaterialShelfTestsVixen.Editor.Texturing.Tests
- SmartMaterialWiringTestsVixen.Editor.Texturing.Tests
- SplatBakeDeviceTestsVixen.Editor.Texturing.Tests
- StringContributionTestsVixen.Editor.Texturing.Tests
- TextureGraphPanelTestsVixen.Editor.Texturing.Tests
- TexturePreviewDeviceTestsVixen.Editor.Texturing.Tests
- TexturingClaimTestsVixen.Editor.Texturing.Tests
- TexturingCollectionTestsVixen.Editor.Texturing.Tests
- TexturingModuleTestsVixen.Editor.Texturing.Tests
- TexturingStringsVixen.Editor.Texturing