Drop the vendored CultMesh DLLs; depend on org.gamecult.cultlib

Delete the 27 vendored assemblies (55 files under Plugins/CultMesh, plus
Plugins.meta) and tools/vendor-cultmesh-unity.ps1. The package now declares
org.gamecult.cultlib 1.0.60 and both asmdefs reference GameCult.CultLib, the
shape CultLib's own editor-tools package uses. check.ps1 asserts the package
ships no .dll and declares the dependency, without pinning a version string.
The unity README names the host-manifest requirement.

Cut M1 of docs/brokkr-adoption-cut.md. Unity compile is an operator check.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-09-29 13:50:23 +02:00
commit ae19d4e7e0
62 changed files with 18 additions and 147 deletions

View file

@ -3,10 +3,7 @@
"rootNamespace": "GameCult.Brokkr.Editor",
"references": [
"GameCult.Brokkr",
"GameCult.Caching",
"GameCult.Mesh",
"GameCult.Networking",
"R3"
"GameCult.CultLib"
],
"includePlatforms": [
"Editor"

View file

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 61034eb84e867684db7ddef7ed9fadbe
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: adae6c2a0f4b3f743b6ab78cb0988871
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 664ec081a56277e4c8c9d1efc3b6416f

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 7f7d43fe0ed322446a4ae5b345a4b1a9

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 384dd07098d548f4cb3cdd573cba2fac

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: be58f7171a27e4641bc5c1ece94e1a0e

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: be4ca9f17443d3b4ca054c236480ccac

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 544b484d57520474d8b31d232b87d5bd

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 9403fba97394ef941ab2ab830adb0bdf

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 5f5fad94e45028b4cb6a62b62252e1a4

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 941b8cae890bc58489c85b9a53eb0c52

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: af58bbde7fb10c74891cfc94811b25e9

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 36d3af9ac3f57cb46b1cbd574931f69c

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 28ef17d784838b64cb4be5ebdc1ee8a0

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: bddff633377fe234b85d00b3e2764100

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: d2cc82d315542004b91042f6dac44368

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: e68bfb4b774a27847b375e30c5ec3905

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: f3a6830e9cbbf7849a5b7f011ba74e51

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 72d7f2b2b7ff7634b81428b763b45852

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 426a8a696a5c1b94fbd9dfcc04786c7d

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: dea147d566e7d7b43a1b13c532cfcf0c

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: c2dc4cd724917584aa9b38f0a4bc669a

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 6f80ea203cf635b4584cb104fba83594

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 230003b782f92e349a35339fb2320133

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 7bbc7179ab442cf44bf45ae6344c8766

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: d6474534f64e9594aa9cd78743056068

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 5f598b1f1749353408add83931bd042e

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 0ef728200a42c6a46b150b5a3143be6f

View file

@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: b3d0157e180a40942a31d7682f7c5674

View file

@ -2,8 +2,7 @@
"name": "GameCult.Brokkr",
"rootNamespace": "GameCult.Brokkr",
"references": [
"GameCult.Caching",
"MessagePack"
"GameCult.CultLib"
],
"includePlatforms": [],
"excludePlatforms": [],

View file

@ -4,6 +4,9 @@
"displayName": "Brokkr",
"description": "Unity Editor adapter for the Brokkr CultMesh creative-tool broker.",
"unity": "2022.3",
"dependencies": {
"org.gamecult.cultlib": "1.0.60"
},
"author": {
"name": "GameCult"
}

View file

@ -9,13 +9,14 @@ CultMesh.
Add this package to a Unity project's `Packages/manifest.json`:
```json
"com.gamecult.brokkr": "file:E:/Projects/Brokkr/surfaces/unity/Packages/com.gamecult.brokkr"
"com.gamecult.brokkr": "file:F:/Projects/Brokkr/surfaces/unity/Packages/com.gamecult.brokkr"
```
Vendor the CultMesh runtime DLLs before opening Unity:
The package ships no assemblies. Its CultCache, CultNet and CultMesh runtime
comes from `org.gamecult.cultlib`, which the host manifest must also resolve:
```powershell
.\tools\vendor-cultmesh-unity.ps1
```json
"org.gamecult.cultlib": "https://github.com/GameCult/CultLib.git?path=/unity/org.gamecult.cultlib#cultlib-unity-v1.0.60"
```
Then open `GameCult > Brokkr`.

View file

@ -48,21 +48,14 @@ try {
Assert-Contains $syncContractText "timeline-frame" "sync contract"
Assert-Contains $syncContractText "cinemachine-virtual-camera" "sync contract"
$pluginRoot = Join-Path (Get-Location) "surfaces\unity\Packages\com.gamecult.brokkr\Plugins\CultMesh"
$requiredDlls = @(
"GameCult.Caching.dll",
"GameCult.Caching.MessagePack.dll",
"GameCult.Mesh.dll",
"GameCult.Networking.dll",
"MessagePack.dll",
"R3.dll"
)
foreach ($dll in $requiredDlls) {
$path = Join-Path $pluginRoot $dll
if (-not (Test-Path $path)) {
throw "Missing vendored CultMesh Unity dependency: $path"
}
$unityPackage = Join-Path (Get-Location) "surfaces\unity\Packages\com.gamecult.brokkr"
$vendoredDlls = @(Get-ChildItem -Path $unityPackage -Recurse -Filter "*.dll" -File)
if ($vendoredDlls.Count -gt 0) {
throw "The Brokkr Unity package must not ship assemblies; org.gamecult.cultlib owns them: $($vendoredDlls.FullName -join ', ')"
}
$unityManifest = Get-Content (Join-Path $unityPackage "package.json") -Raw | ConvertFrom-Json
if (-not $unityManifest.dependencies.PSObject.Properties["org.gamecult.cultlib"]) {
throw "surfaces/unity package.json must depend on org.gamecult.cultlib."
}
$bundledPython = Join-Path $env:USERPROFILE ".cache\codex-runtimes\codex-primary-runtime\dependencies\python\python.exe"

View file

@ -1,52 +0,0 @@
$ErrorActionPreference = "Stop"
$repoRoot = Split-Path -Parent $PSScriptRoot
$cultLibRoot = "E:\Projects\CultLib"
$pluginRoot = Join-Path $repoRoot "surfaces\unity\Packages\com.gamecult.brokkr\Plugins\CultMesh"
dotnet build (Join-Path $cultLibRoot "src\GameCult.Mesh\GameCult.Mesh.csproj") -c Debug
if ($LASTEXITCODE -ne 0) {
throw "CultMesh build failed with exit code $LASTEXITCODE"
}
New-Item -ItemType Directory -Force -Path $pluginRoot | Out-Null
$sources = @(
(Join-Path $cultLibRoot "bin\GameCult.Mesh\Debug\netstandard2.1\GameCult.Logging.dll"),
(Join-Path $cultLibRoot "bin\GameCult.Mesh\Debug\netstandard2.1\GameCult.Caching.dll"),
(Join-Path $cultLibRoot "bin\GameCult.Mesh\Debug\netstandard2.1\GameCult.Caching.MessagePack.dll"),
(Join-Path $cultLibRoot "bin\GameCult.Mesh\Debug\netstandard2.1\GameCult.Networking.dll"),
(Join-Path $cultLibRoot "bin\GameCult.Mesh\Debug\netstandard2.1\GameCult.Mesh.dll"),
"$env:USERPROFILE\.nuget\packages\concurrenthashset\1.3.0\lib\netstandard2.0\ConcurrentCollections.dll",
"$env:USERPROFILE\.nuget\packages\isopoh.cryptography.argon2\2.0.0\lib\netstandard2.0\Isopoh.Cryptography.Argon2.dll",
"$env:USERPROFILE\.nuget\packages\isopoh.cryptography.blake2b\2.0.0\lib\netstandard2.0\Isopoh.Cryptography.Blake2b.dll",
"$env:USERPROFILE\.nuget\packages\isopoh.cryptography.securearray\2.0.0\lib\netstandard2.0\Isopoh.Cryptography.SecureArray.dll",
"$env:USERPROFILE\.nuget\packages\litenetlib\2.1.2\lib\netstandard2.1\LiteNetLib.dll",
"$env:USERPROFILE\.nuget\packages\messagepack\3.1.4\lib\netstandard2.1\MessagePack.dll",
"$env:USERPROFILE\.nuget\packages\messagepack.annotations\3.1.4\lib\netstandard2.0\MessagePack.Annotations.dll",
"$env:USERPROFILE\.nuget\packages\microsoft.bcl.asyncinterfaces\9.0.10\lib\netstandard2.1\Microsoft.Bcl.AsyncInterfaces.dll",
"$env:USERPROFILE\.nuget\packages\microsoft.bcl.timeprovider\8.0.0\lib\netstandard2.0\Microsoft.Bcl.TimeProvider.dll",
"$env:USERPROFILE\.nuget\packages\microsoft.net.stringtools\17.11.4\lib\netstandard2.0\Microsoft.NET.StringTools.dll",
"$env:USERPROFILE\.nuget\packages\r3\1.3.0\lib\netstandard2.1\R3.dll",
"$env:USERPROFILE\.nuget\packages\system.buffers\4.5.1\lib\netstandard2.0\System.Buffers.dll",
"$env:USERPROFILE\.nuget\packages\system.collections.immutable\8.0.0\lib\netstandard2.0\System.Collections.Immutable.dll",
"$env:USERPROFILE\.nuget\packages\system.componentmodel.annotations\5.0.0\lib\netstandard2.1\System.ComponentModel.Annotations.dll",
"$env:USERPROFILE\.nuget\packages\system.io.pipelines\9.0.10\lib\netstandard2.0\System.IO.Pipelines.dll",
"$env:USERPROFILE\.nuget\packages\system.memory\4.5.5\lib\netstandard2.0\System.Memory.dll",
"$env:USERPROFILE\.nuget\packages\system.numerics.vectors\4.4.0\lib\netstandard2.0\System.Numerics.Vectors.dll",
"$env:USERPROFILE\.nuget\packages\system.runtime.compilerservices.unsafe\6.0.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll",
"$env:USERPROFILE\.nuget\packages\system.text.encodings.web\9.0.10\lib\netstandard2.0\System.Text.Encodings.Web.dll",
"$env:USERPROFILE\.nuget\packages\system.text.json\9.0.10\lib\netstandard2.0\System.Text.Json.dll",
"$env:USERPROFILE\.nuget\packages\system.threading.channels\8.0.0\lib\netstandard2.1\System.Threading.Channels.dll",
"$env:USERPROFILE\.nuget\packages\system.threading.tasks.extensions\4.5.4\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll"
)
foreach ($source in $sources) {
if (!(Test-Path $source)) {
throw "Missing CultMesh Unity dependency: $source"
}
Copy-Item -LiteralPath $source -Destination $pluginRoot -Force
}
Write-Host "Vendored CultMesh Unity dependencies into $pluginRoot"