End of Phase O extraction. Final cleanup: - Dropped <ProjectReference> entries to WorldBuilder.Shared and Chorizite.OpenGLSDLBackend from both AcDream.App.csproj and AcDream.Core.csproj. - Added Chorizite.Core NuGet PackageReference to AcDream.Core.csproj (needed by Core.Rendering.Wb.TextureHelpers for TextureFormat enum; previously transitive through the WB project ref). - Added BCnEncoder.Net.ImageSharp (1.1.2) + SixLabors.ImageSharp (3.1.12) as direct PackageReferences to AcDream.App.csproj — previously transitive via Chorizite.OpenGLSDLBackend project; used directly by ObjectMeshManager. Item A (BaseObjectRenderManager static fields): - Inlined CurrentAtlas/CurrentVAO/CurrentIBO into a new RenderStateCache.cs static class (AcDream.App.Rendering.Wb namespace) — the 4 consumers (ManagedGLIndexBuffer, ManagedGLTexture, ManagedGLTextureArray, ParticleBatcher) all reference RenderStateCache.* instead of BaseObjectRenderManager.*. - Dropped using Chorizite.OpenGLSDLBackend.Lib from all 4 consumers and from WbDrawDispatcher (which had it only as a dead import). Item B (ActiveParticleEmitter.ObjectLandblock): - ObjectLandblock? erased to object?; WorldBuilder.Shared.Models.ObjectId? erased to ulong? — both fields are stored but never read by any consumer in our codebase. - Dropped both WB using directives from ActiveParticleEmitter.cs. Item C (IDatReaderWriter / IDatDatabase): - Verbatim copy of both interfaces into IDatReaderWriter.cs in AcDream.App.Rendering.Wb namespace — DatCollectionAdapter and ObjectMeshManager already live in that namespace, so no using changes needed. - Dropped using WorldBuilder.Shared.Services from DatCollectionAdapter.cs and ObjectMeshManager.cs. Additional extractions required by the reference drop: - GeometryUtils.cs: verbatim copy of WorldBuilder.Shared.Lib.GeometryUtils (float-precision overloads only; Vector3d double-precision overloads omitted — ObjectMeshManager uses only the float versions). - Dropped using WorldBuilder.Shared.Lib from ObjectMeshManager.cs. WbMeshAdapter.cs cleanup (spec O-D12): - Deleted _wbDats (DefaultDatReaderWriter) field + ctor init + Dispose call. - Deleted the [indoor-upload] NULL_RESULT diagnostic block (lines ~205-262) — its Phase 2 cell-resolution investigation is complete; its _wbDats.ResolveId dependency goes with this commit. - Deleted _pendingEnvCellRequests field + isPendingEnvCell tracking in Tick(). - Simplified Tick() to a clean drain loop. Deleted SplitFormulaDivergenceTest.cs — one-time N.5b data-collection sweep; job done. Verified acceptance criteria: - Zero <ProjectReference> to WorldBuilder.* / Chorizite.OpenGLSDLBackend.* in any csproj. - Zero 'using WorldBuilder.*' / 'using Chorizite.OpenGLSDLBackend.*' in src/. - DefaultDatReaderWriter referenced in zero places in src/ (comments only). Build green (0 warnings, 0 errors). Tests: 1154 total (-1 from deleted SplitFormulaDivergenceTest), 1146 pass, 8 pre-existing failures (unchanged from baseline — physics/input tests unrelated to this change). Spec: docs/superpowers/specs/2026-05-21-phase-o-dat-path-unification-design.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
76 lines
4.1 KiB
XML
76 lines
4.1 KiB
XML
<Project Sdk="Microsoft.NET.Sdk">
|
|
<PropertyGroup>
|
|
<OutputType>Exe</OutputType>
|
|
<TargetFramework>net10.0</TargetFramework>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<Nullable>enable</Nullable>
|
|
<LangVersion>latest</LangVersion>
|
|
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
|
<RootNamespace>AcDream.App</RootNamespace>
|
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
|
</PropertyGroup>
|
|
<ItemGroup>
|
|
<InternalsVisibleTo Include="AcDream.Core.Tests" />
|
|
<InternalsVisibleTo Include="AcDream.App.Tests" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<!-- T3: extracted GL infra (ManagedGLUniformBuffer, OpenGLGraphicsDevice) directly
|
|
implement IUniformBuffer from Chorizite.Core; NuGet PackageReferences are not
|
|
forwarded from ProjectReferences so we must declare it explicitly here. -->
|
|
<PackageReference Include="Chorizite.Core" Version="0.0.18" />
|
|
<!-- Phase O-T7: BCnEncoder.Net.ImageSharp + SixLabors.ImageSharp were previously
|
|
transitive via the WorldBuilder project reference. Now direct deps of
|
|
ObjectMeshManager.cs (extracted in T2). -->
|
|
<PackageReference Include="BCnEncoder.Net.ImageSharp" Version="1.1.2" />
|
|
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.12" />
|
|
<PackageReference Include="Silk.NET.OpenGL" Version="2.23.0" />
|
|
<PackageReference Include="Silk.NET.OpenGL.Extensions.ARB" Version="2.23.0" />
|
|
<PackageReference Include="Silk.NET.Windowing" Version="2.23.0" />
|
|
<PackageReference Include="Silk.NET.Input" Version="2.23.0" />
|
|
<PackageReference Include="Silk.NET.OpenAL" Version="2.23.0" />
|
|
<PackageReference Include="Silk.NET.OpenAL.Extensions.Creative" Version="2.23.0" />
|
|
<PackageReference Include="Silk.NET.OpenAL.Extensions.EXT" Version="2.23.0" />
|
|
<PackageReference Include="Silk.NET.OpenAL.Soft.Native" Version="1.23.1" />
|
|
<PackageReference Include="Serilog" Version="4.0.2" />
|
|
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
|
|
<PackageReference Include="StbTrueTypeSharp" Version="1.26.12" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\AcDream.Core\AcDream.Core.csproj" />
|
|
<ProjectReference Include="..\AcDream.Core.Net\AcDream.Core.Net.csproj" />
|
|
<ProjectReference Include="..\AcDream.UI.Abstractions\AcDream.UI.Abstractions.csproj" />
|
|
<ProjectReference Include="..\AcDream.UI.ImGui\AcDream.UI.ImGui.csproj" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<None Update="Rendering\Shaders\*.*">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</None>
|
|
<!-- Issue #11: copy spells.csv from docs/research/data/ to bin output's
|
|
data/ subdir so SpellTable.LoadFromCsv can find it at runtime. -->
|
|
<None Include="..\..\docs\research\data\spells.csv" Link="data\spells.csv">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</None>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<!-- Build the smoke plugin first and copy it into plugins/AcDream.Plugins.Smoke/ -->
|
|
<ProjectReference Include="..\AcDream.Plugins.Smoke\AcDream.Plugins.Smoke.csproj">
|
|
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
|
<SkipGetTargetFrameworkProperties>true</SkipGetTargetFrameworkProperties>
|
|
</ProjectReference>
|
|
</ItemGroup>
|
|
<Target Name="CopySmokePluginToPluginsDir" AfterTargets="Build">
|
|
<PropertyGroup>
|
|
<_SmokePluginSourceDir>..\AcDream.Plugins.Smoke\bin\$(Configuration)\net10.0</_SmokePluginSourceDir>
|
|
<_SmokePluginDestDir>$(OutputPath)plugins\AcDream.Plugins.Smoke</_SmokePluginDestDir>
|
|
</PropertyGroup>
|
|
<MakeDir Directories="$(_SmokePluginDestDir)" />
|
|
<Copy
|
|
SourceFiles="$(_SmokePluginSourceDir)\AcDream.Plugins.Smoke.dll"
|
|
DestinationFolder="$(_SmokePluginDestDir)"
|
|
SkipUnchangedFiles="true" />
|
|
<WriteLinesToFile
|
|
File="$(_SmokePluginDestDir)\plugin.json"
|
|
Overwrite="true"
|
|
Lines="{ "id": "acdream.smoke", "displayName": "Smoke Plugin", "version": "0.1.0", "entryDll": "AcDream.Plugins.Smoke.dll", "apiVersion": 1 }" />
|
|
</Target>
|
|
</Project>
|