Tree Generator als zweite Extension im selben Repo
Ein Extension-Repo kann mehrere Addons ausliefern (server-generate listet jedes Zip in dist/) -> die bereits eingetragene Blender-URL liefert jetzt Rock UND Tree, ein 'Check for Updates' aktualisiert beide. - stylized_tree_generator.py: Panel 'Tree Gen', Presets baum/palme/busch/kaktus, Wachstums-Stufen (gleicher Seed = dieselbe Baum-Identitaet), Modifier-Apply - Node-Kern 1:1 aus EcoGame tools/blender_tree_gen.py generiert (keine Abweichung) - build.ps1 baut jetzt beide Extensions - Headless getestet: alle 4 Presets, Stufen aufsteigend (504/744/1236/1872), Apply ok Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,11 +1,15 @@
|
||||
# Baut die Extension und aktualisiert das Repo-Listing (index.json) in dist/.
|
||||
# Baut ALLE Extensions dieses Repos und aktualisiert das Repo-Listing (index.json).
|
||||
#
|
||||
# Ein Blender-Extension-Repo kann MEHRERE Extensions ausliefern: "server-generate"
|
||||
# scannt den dist/-Ordner und listet jedes gefundene Zip. Dadurch liefert EINE
|
||||
# URL in Blender sowohl den Rock- als auch den Tree-Generator.
|
||||
#
|
||||
# Aufruf:
|
||||
# .\build.ps1 # nutzt "blender" aus dem PATH
|
||||
# .\build.ps1 -Blender "E:\...\blender.exe"
|
||||
#
|
||||
# Update-Workflow:
|
||||
# 1. version in blender_manifest.toml erhoehen (und bl_info/version in der .py)
|
||||
# 1. version im jeweiligen Manifest erhoehen (und bl_info in der .py)
|
||||
# 2. .\build.ps1
|
||||
# 3. git add -A; git commit -m "vX.Y.Z"; git push
|
||||
# 4. In Blender: Preferences -> Get Extensions -> Repo -> "Check for Updates"
|
||||
@@ -16,25 +20,38 @@ param(
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$root = $PSScriptRoot
|
||||
$stage = Join-Path $root "_extsrc"
|
||||
$dist = Join-Path $root "dist"
|
||||
$dist = Join-Path $root "dist"
|
||||
New-Item -ItemType Directory -Force -Path $dist | Out-Null
|
||||
|
||||
if (Test-Path $stage) { Remove-Item -Recurse -Force $stage }
|
||||
New-Item -ItemType Directory -Force -Path $stage | Out-Null
|
||||
New-Item -ItemType Directory -Force -Path $dist | Out-Null
|
||||
# name = Staging-Ordner, manifest = Quelldatei, source = Addon-Code
|
||||
$extensions = @(
|
||||
@{ name = "rock"; manifest = "blender_manifest.toml"; source = "stylized_rock_generator.py" },
|
||||
@{ name = "tree"; manifest = "blender_manifest_tree.toml"; source = "stylized_tree_generator.py" }
|
||||
)
|
||||
|
||||
# Staging: Manifest + Addon-Code als __init__.py (Extension = Package)
|
||||
Copy-Item (Join-Path $root "blender_manifest.toml") (Join-Path $stage "blender_manifest.toml")
|
||||
Copy-Item (Join-Path $root "stylized_rock_generator.py") (Join-Path $stage "__init__.py")
|
||||
# Alte Zips weg, damit geloeschte Versionen nicht im Listing haengen bleiben.
|
||||
Get-ChildItem $dist -Filter *.zip -ErrorAction SilentlyContinue | Remove-Item -Force
|
||||
|
||||
Write-Host "== extension build ==" -ForegroundColor Cyan
|
||||
& $Blender --command extension build --source-dir $stage --output-dir $dist
|
||||
if ($LASTEXITCODE -ne 0) { throw "extension build fehlgeschlagen (Exit $LASTEXITCODE)" }
|
||||
foreach ($ext in $extensions) {
|
||||
$stage = Join-Path $root ("_extsrc_" + $ext.name)
|
||||
if (Test-Path $stage) { Remove-Item -Recurse -Force $stage }
|
||||
New-Item -ItemType Directory -Force -Path $stage | Out-Null
|
||||
|
||||
# Extension = Package: Manifest heisst IMMER blender_manifest.toml,
|
||||
# der Addon-Code IMMER __init__.py.
|
||||
Copy-Item (Join-Path $root $ext.manifest) (Join-Path $stage "blender_manifest.toml")
|
||||
Copy-Item (Join-Path $root $ext.source) (Join-Path $stage "__init__.py")
|
||||
|
||||
Write-Host ("== build " + $ext.name + " ==") -ForegroundColor Cyan
|
||||
& $Blender --command extension build --source-dir $stage --output-dir $dist
|
||||
if ($LASTEXITCODE -ne 0) { throw ("build fehlgeschlagen: " + $ext.name) }
|
||||
|
||||
Remove-Item -Recurse -Force $stage
|
||||
}
|
||||
|
||||
Write-Host "== server-generate (index.json) ==" -ForegroundColor Cyan
|
||||
& $Blender --command extension server-generate --repo-dir $dist
|
||||
if ($LASTEXITCODE -ne 0) { throw "server-generate fehlgeschlagen (Exit $LASTEXITCODE)" }
|
||||
if ($LASTEXITCODE -ne 0) { throw "server-generate fehlgeschlagen" }
|
||||
|
||||
Remove-Item -Recurse -Force $stage
|
||||
Write-Host "Fertig. dist/ enthaelt Zip + index.json." -ForegroundColor Green
|
||||
Write-Host "Fertig." -ForegroundColor Green
|
||||
Get-ChildItem $dist | Select-Object Name, Length | Format-Table -AutoSize
|
||||
|
||||
Reference in New Issue
Block a user