Files
sbox-public/engine/Sandbox.Tools/Assets/EmbeddedAsset/EmbeddedAsset.cs
s&box team 71f266059a Open source release
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
2025-11-24 09:05:18 +00:00

135 lines
2.9 KiB
C#

using System;
namespace Editor;
[SkipHotload]
internal class EmbeddedAsset : Asset
{
internal SerializedProperty property;
internal EmbeddedAsset( SerializedProperty property )
{
this.property = property;
AssetType = AssetType.FromType( property.PropertyType );
Name = property.FindPathInScene()?.ToString();
}
internal override void UpdateInternals( bool compileImmediately = true )
{
}
public override bool CanRecompile => false;
internal override void OnRemoved() { }
public override string GetCompiledFile( bool absolute = false ) => null;
public override string GetSourceFile( bool absolute = false ) => null;
internal override int FindIntEditInfo( string name ) => 0;
public override string FindStringEditInfo( string name ) => null;
/// <summary>
/// Try to open this asset in a supported editor.
/// You can specify nativeEditor to open in a specific editor.
/// </summary>
/// <param name="nativeEditor">A native editor specified in enginetools.txt (e.g modeldoc_editor, hammer, pet..)</param>
public override void OpenInEditor( string nativeEditor = null )
{
if ( IAssetEditor.OpenInEditor( this, out _ ) )
{
return;
}
}
public override bool Compile( bool full )
{
return false;
}
public override bool IsCompiled => true;
public override bool IsCompiledAndUpToDate => true;
public override bool IsCompileFailed => false;
public override ValueTask<bool> CompileIfNeededAsync( float timeout = 30.0f )
{
return ValueTask.FromResult( true );
}
public override List<Asset> GetReferences( bool deep )
{
return [];
}
public override List<Asset> GetDependants( bool deep )
{
return [];
}
public override List<string> GetAdditionalRelatedFiles()
{
return [];
}
public override List<string> GetInputDependencies()
{
return [];
}
public override List<string> GetUnrecognizedReferencePaths()
{
return [];
}
public override Model GetPreviewModel()
{
return Model.Error;
}
public override void RecordOpened()
{
}
public override bool SetInMemoryReplacement( string sourceData )
{
return false;
}
public override void ClearInMemoryReplacement()
{
}
public override bool HasSourceFile => false;
public override bool HasCompiledFile => false;
internal override bool TryLoadGameResource( Type t, out GameResource obj, bool allowCreate = false )
{
obj = null;
if ( !Game.Resources.TryGetType( AssetType.FileExtension, out var attribute ) )
return false;
if ( !attribute.TargetType.IsAssignableTo( t ) || attribute.TargetType.IsAbstract )
return false;
var resource = property.GetValue<Resource>( null );
if ( resource is null ) return false;
if ( !resource.GetType().IsAssignableTo( t ) ) return false;
if ( resource is GameResource gr )
{
obj = gr;
return true;
}
return false;
}
public override bool SaveToDisk( GameResource obj )
{
property.SetValue( obj );
return true;
}
}