2026-06-13 04:56:50 +01:00
/ * This Source Code Form is subject to the terms of the Mozilla Public
2020-12-22 03:13:43 +00:00
* License , v . 2.0 . If a copy of the MPL was not distributed with this
* file , You can obtain one at https : //mozilla.org/MPL/2.0/. */
using System ;
2020-03-22 19:05:26 +00:00
using Unity.Mathematics ;
public interface INamedEntry
{
string EntryName { get ; set ; }
}
2026-06-13 17:22:03 +01:00
public abstract class RuntimeCatalogEntry
2020-03-22 19:05:26 +00:00
{
2020-05-14 02:47:07 +01:00
public Guid ID = Guid . NewGuid ( ) ;
2021-04-07 01:27:35 +01:00
public override int GetHashCode ( )
{
return ID . GetHashCode ( ) ;
}
public override bool Equals ( object obj )
{
2026-06-13 17:22:03 +01:00
if ( obj is RuntimeCatalogEntry entry ) return entry . ID = = ID ;
2021-04-07 01:27:35 +01:00
return false ;
}
2021-03-31 04:07:11 +01:00
}
2026-06-13 17:22:03 +01:00
public class RuntimeCatalogLink < T > : RuntimeCatalogLinkBase where T : ItemData
2021-03-31 04:07:11 +01:00
{
2026-06-13 14:36:54 +01:00
public T Value = > ResolveRuntimeItemCatalog < T > ( LinkID ) ;
2021-03-31 04:07:11 +01:00
}
2026-06-13 17:22:03 +01:00
public class RuntimeCatalogLinkBase
2021-03-31 04:07:11 +01:00
{
public Guid LinkID ;
2026-06-13 04:56:50 +01:00
2026-06-13 14:36:54 +01:00
private static IRuntimeItemCatalogReader Catalog { get ; set ; }
2026-06-13 06:45:07 +01:00
2026-06-13 14:36:54 +01:00
protected static T ResolveRuntimeItemCatalog < T > ( Guid linkId ) where T : ItemData
2026-06-13 06:45:07 +01:00
{
2026-06-13 07:41:21 +01:00
if ( Catalog = = null )
2026-06-13 14:36:54 +01:00
throw new InvalidOperationException ( "Runtime item catalog resolution is not bound. Open typed Aetheria runtime state before reading item object graphs." ) ;
2026-06-13 06:45:07 +01:00
2026-06-13 07:41:21 +01:00
return Catalog . Get < T > ( linkId ) ;
2026-06-13 06:45:07 +01:00
}
2026-06-13 14:36:54 +01:00
public static void BindRuntimeItemCatalog ( IRuntimeItemCatalogReader catalog )
2026-06-13 06:45:07 +01:00
{
2026-06-13 07:41:21 +01:00
if ( catalog = = null ) throw new ArgumentNullException ( nameof ( catalog ) ) ;
2026-06-13 06:45:07 +01:00
2026-06-13 07:41:21 +01:00
Catalog = catalog ;
2026-06-13 06:45:07 +01:00
}
2021-04-07 01:27:35 +01:00
}
public interface ITintInspector
{
float3 TintColor { get ; }
2026-06-13 06:45:07 +01:00
}