About

Type select adds `[TypeSelector]` attribute putting this on a property will allow you to select an inherited type in the editor as shown here:



WARNING

to make sure your types get serialized correctly you need to make use of the `[JsonPolymorphic]` and `[JsonDerivedType]` attributes. 
And for the latter make sure to set a typeDiscirimnator or it wil not work !!!!



EXAMPLE CODE


[GameResource( "Quest", "quest", "A quest given to the user !", Category = "quest" )]
public class Quest : GameResource
{
    [Property,InlineEditor,TypeSelector] public TaskBase Task { get; set; }
}

//The two attributes here are from .net

[JsonPolymorphic] 
[JsonDerivedType( typeof(Collect), "Collect" )] // Yeah you have to do this for every type. blame C#, not me.
public abstract class TaskBase //Because this class is abstract it will not showup in the menu.
{
   [Property] public string QuestName {get;set};// all types will show this
}

public class Collect : TaskBase
{
   [Property] public int AmountToCollect {get;set;}
}

public class TalkTo : TaskBase
{
   [Property] public GameObject Target {get;set;}
}

TODO

   ☐ Search functionality in the menu