diff options
| -rw-r--r-- | modules/mono/glue/GodotSharp/GodotSharp/Core/Extensions/PackedSceneExtensions.cs | 27 | ||||
| -rw-r--r-- | modules/mono/glue/GodotSharp/GodotSharp/GodotSharp.csproj | 1 | 
2 files changed, 28 insertions, 0 deletions
| diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Extensions/PackedSceneExtensions.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Extensions/PackedSceneExtensions.cs new file mode 100644 index 0000000000..763f470504 --- /dev/null +++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Extensions/PackedSceneExtensions.cs @@ -0,0 +1,27 @@ +namespace Godot +{ +    public partial class PackedScene +    { +        /// <summary> +        /// Instantiates the scene's node hierarchy, erroring on failure. +        /// Triggers child scene instantiation(s). Triggers a +        /// `Node.NotificationInstanced` notification on the root node. +        /// </summary> +        /// <typeparam name="T">The type to cast to. Should be a descendant of Node.</typeparam> +        public T Instance<T>(PackedScene.GenEditState editState = (PackedScene.GenEditState)0) where T : class +        { +            return (T)(object)Instance(editState); +        } + +        /// <summary> +        /// Instantiates the scene's node hierarchy, returning null on failure. +        /// Triggers child scene instantiation(s). Triggers a +        /// `Node.NotificationInstanced` notification on the root node. +        /// </summary> +        /// <typeparam name="T">The type to cast to. Should be a descendant of Node.</typeparam> +        public T InstanceOrNull<T>(PackedScene.GenEditState editState = (PackedScene.GenEditState)0) where T : class +        { +            return Instance(editState) as T; +        } +    } +} diff --git a/modules/mono/glue/GodotSharp/GodotSharp/GodotSharp.csproj b/modules/mono/glue/GodotSharp/GodotSharp/GodotSharp.csproj index 86a16c17f1..7c1a23d510 100644 --- a/modules/mono/glue/GodotSharp/GodotSharp/GodotSharp.csproj +++ b/modules/mono/glue/GodotSharp/GodotSharp/GodotSharp.csproj @@ -30,6 +30,7 @@      <Compile Include="Core\DynamicObject.cs" />      <Compile Include="Core\Extensions\NodeExtensions.cs" />      <Compile Include="Core\Extensions\ObjectExtensions.cs" /> +    <Compile Include="Core\Extensions\PackedSceneExtensions.cs" />      <Compile Include="Core\Extensions\ResourceLoaderExtensions.cs" />      <Compile Include="Core\Extensions\SceneTreeExtensions.cs" />      <Compile Include="Core\GD.cs" /> |