Add hierarchical scene graph for editor with TreeView UI, runtime HierarchyUtility for parent/child linked-list management, and incremental sync between editor world and scene graph nodes. - SceneGraphNode/SceneNode/EntityNode with World, Scene, Entity refs - SceneGraphBuilder — construct tree from ECS World queries - HierarchyUtility — SetParent, RemoveParent, IsAncestor, cascade destroy - EditorWorldService + SceneGraphSyncService — editor world lifecycle & incremental sync - Hierarchy.xaml — TreeView with DataTemplate + SceneGraphTemplateSelector - 25 unit tests covering hierarchy ops and scene graph building
243 lines
9.9 KiB
XML
243 lines
9.9 KiB
XML
<Project Sdk="Microsoft.NET.Sdk">
|
|
<PropertyGroup>
|
|
<OutputType>WinExe</OutputType>
|
|
<TargetFramework>net10.0-windows10.0.22621.0</TargetFramework>
|
|
<TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
|
|
<Platforms>x64;ARM64</Platforms>
|
|
<RuntimeIdentifiers>win-x64;win-arm64</RuntimeIdentifiers>
|
|
<PublishProfile>win-$(Platform).pubxml</PublishProfile>
|
|
<UseWinUI>true</UseWinUI>
|
|
<EnableMsixTooling>true</EnableMsixTooling>
|
|
<Configurations>Debug;Release;Debug_Editor;Release_Editor</Configurations>
|
|
</PropertyGroup>
|
|
<ItemGroup>
|
|
<None Remove="Views\Controls\Hierarchy.xaml" />
|
|
<None Remove="Views\Controls\Inspector.xaml" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Content Include="Assets\SplashScreen.scale-200.png" />
|
|
<Content Include="Assets\LockScreenLogo.scale-200.png" />
|
|
<Content Include="Assets\Square150x150Logo.scale-200.png" />
|
|
<Content Include="Assets\StoreLogo.png" />
|
|
<Content Include="Assets\Wide310x150Logo.scale-200.png" />
|
|
</ItemGroup>
|
|
|
|
<ItemGroup>
|
|
<Manifest Include="$(ApplicationManifest)" />
|
|
</ItemGroup>
|
|
|
|
<!--
|
|
Defining the "Msix" ProjectCapability here allows the Single-project MSIX Packaging
|
|
Tools extension to be activated for this project even if the Windows App SDK Nuget
|
|
package has not yet been restored.
|
|
-->
|
|
<ItemGroup Condition="'$(DisableMsixProjectCapabilityAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
|
|
<ProjectCapability Include="Msix" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<PackageReference Include="CommunityToolkit.WinUI.Controls.Primitives" Version="8.2.251219" />
|
|
<PackageReference Include="CommunityToolkit.WinUI.Controls.Sizers" Version="8.2.251219" />
|
|
<PackageReference Include="CommunityToolkit.WinUI.Controls.TabbedCommandBar" Version="8.2.251219" />
|
|
<PackageReference Include="Microsoft.Extensions.Hosting" Version="10.0.7" />
|
|
<PackageReference Include="Microsoft.Windows.CsWinRT" Version="2.2.0" />
|
|
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.28000.1839" />
|
|
<PackageReference Include="Microsoft.WindowsAppSDK" Version="2.0.1" />
|
|
<PackageReference Include="WinUIEx" Version="2.9.0" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\..\Editor\Ghost.Editor.Core\Ghost.Editor.Core.csproj" />
|
|
<ProjectReference Include="..\..\Runtime\Ghost.Engine\Ghost.Engine.csproj" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Content Update="Assets\EditorIcons\document-0.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\EditorIcons\document-1.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\EditorIcons\image-0.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\EditorIcons\image-1.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.ico">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.scale-100.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.scale-125.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.scale-150.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.scale-200.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.scale-400.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.svg">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.targetsize-16.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.targetsize-16_altform-lightunplated.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.targetsize-16_altform-unplated.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.targetsize-24.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.targetsize-24_altform-lightunplated.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.targetsize-24_altform-unplated.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.targetsize-256.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.targetsize-256_altform-lightunplated.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.targetsize-256_altform-unplated.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.targetsize-32.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.targetsize-32_altform-lightunplated.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.targetsize-32_altform-unplated.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.targetsize-48.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.targetsize-48_altform-lightunplated.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<Content Update="Assets\icon.targetsize-48_altform-unplated.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</Content>
|
|
<None Update="Assets\icon.svg">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</None>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<None Update="Assets\EditorIcons\folder-0.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</None>
|
|
<None Update="Assets\EditorIcons\folder-1.png">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</None>
|
|
<None Update="Assets\icon.ico">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</None>
|
|
<Page Update="Views\Controls\Inspector.xaml">
|
|
<Generator>MSBuild:Compile</Generator>
|
|
</Page>
|
|
<Page Update="Views\Controls\LogViewer.xaml">
|
|
<SubType>Designer</SubType>
|
|
</Page>
|
|
<Page Update="Views\Windows\EngineEditorWindow.xaml">
|
|
<Generator>MSBuild:Compile</Generator>
|
|
</Page>
|
|
<Page Update="View\Windows\BlankWindow1.xaml">
|
|
<Generator>MSBuild:Compile</Generator>
|
|
</Page>
|
|
<Page Update="View\Controls\Hierarchy.xaml">
|
|
<Generator>MSBuild:Compile</Generator>
|
|
</Page>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Page Update="Themes\Generic.xaml">
|
|
<SubType>Designer</SubType>
|
|
</Page>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Page Update="View\Windows\SplashWindow.xaml">
|
|
<Generator>MSBuild:Compile</Generator>
|
|
</Page>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Page Update="View\Window\Landing.xaml">
|
|
<Generator>MSBuild:Compile</Generator>
|
|
</Page>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Page Update="View\Pages\EngineEditor\InspectorPage.xaml">
|
|
<Generator>MSBuild:Compile</Generator>
|
|
</Page>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Page Update="View\Pages\EngineEditor\HierarchyPage.xaml">
|
|
<Generator>MSBuild:Compile</Generator>
|
|
</Page>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Page Update="View\Pages\EngineEditor\ProjectPage.xaml">
|
|
<Generator>MSBuild:Compile</Generator>
|
|
</Page>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Page Update="View\Pages\EngineEditor\ConsolePage.xaml">
|
|
<Generator>MSBuild:Compile</Generator>
|
|
</Page>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Page Update="View\Windows\EngineEditorWindow.xaml">
|
|
<Generator>MSBuild:Compile</Generator>
|
|
</Page>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Page Update="View\Pages\EngineEditor\ScenePage.xaml">
|
|
<Generator>MSBuild:Compile</Generator>
|
|
</Page>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<Folder Include="ContextMenu\" />
|
|
<Folder Include="ViewModels\Pages\" />
|
|
<Folder Include="Views\Pages\" />
|
|
</ItemGroup>
|
|
<PropertyGroup Label="Globals" />
|
|
|
|
<!--
|
|
Defining the "HasPackageAndPublishMenuAddedByProject" property here allows the Solution
|
|
Explorer "Package and Publish" context menu entry to be enabled for this project even if
|
|
the Windows App SDK Nuget package has not yet been restored.
|
|
-->
|
|
<PropertyGroup Condition="'$(DisableHasPackageAndPublishMenuAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
|
|
<HasPackageAndPublishMenu>true</HasPackageAndPublishMenu>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup Condition="'$(Configuration)'=='Debug_Editor'">
|
|
<XamlDebuggingInformation>True</XamlDebuggingInformation>
|
|
<DisableXbfLineInfo>False</DisableXbfLineInfo>
|
|
</PropertyGroup>
|
|
|
|
<!-- Publish Properties -->
|
|
<PropertyGroup>
|
|
<PublishReadyToRun Condition="'$(Configuration)'=='Debug_Editor'">False</PublishReadyToRun>
|
|
<PublishReadyToRun Condition="'$(Configuration)' != 'Debug'">True</PublishReadyToRun>
|
|
<Nullable>enable</Nullable>
|
|
<SupportedOSPlatformVersion>10.0.20348.0</SupportedOSPlatformVersion>
|
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
|
<RootNamespace>Ghost.Editor</RootNamespace>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Editor|x64'">
|
|
<Optimize>True</Optimize>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Editor|ARM64'">
|
|
<Optimize>True</Optimize>
|
|
</PropertyGroup>
|
|
</Project>
|