Refactor asset streaming & resource management system

- Introduce Ghost.Engine.Streaming namespace and split asset entry logic into type-specific classes (TextureAssetEntry, MeshAssetEntry, SceneAssetEntry)
- Make AssetEntry abstract; add AssetEntryFactory for type dispatch
- Update AssetManager and ResourceStreamingProcessor for new entry model, supporting uploadable and processable assets
- Redesign scene/mesh asset loading, serialization, and binary formats with versioning (SceneContentHeader, MeshContentHeader)
- Move SceneLoadingType to Ghost.Engine and make public
- Inline performance-critical APIs with MethodImplOptions.AggressiveInlining
- Add deep cloning and improved resource management for Mesh and meshlet data
- Allow nullable log messages in Logger
- Update Misaki.HighPerformance package references
- Remove obsolete files (Asset.cs, ActivationHandler.cs, old mesh logic)
- Improve resource release logic in ResourceManager
- Update RenderContext and ResourceStreamingContext for new streaming model
- Add UnsafeArray/UnsafeList clone utilities
- Update scene serialization/deserialization for new format
- Update tests for new APIs, asset states, and formats
This commit is contained in:
2026-05-12 22:51:51 +09:00
parent 314b0111f0
commit bb07644580
43 changed files with 1202 additions and 1114 deletions

View File

@@ -1,9 +1,21 @@
namespace Ghost.Core;
public interface ICloneable<T>
where T : ICloneable<T>
{
/// <summary>
/// Deep copy the object to create a new instance that contains the same value.
/// </summary>
/// <remarks>
/// This often does not clone any gpu resources if the object holds any.
/// </remarks>
T Clone();
}
public class Wrapper<T>
{
public T? Value
{
get; set;
}
}
}