LiminalVR / Dekuple

Dependency Injection and MVC system.
0 stars 0 forks source link

Create a concrete Entity #2

Open jarisrener opened 5 years ago

jarisrener commented 5 years ago

Create the concept of an Entity that contains a Model, Agent and View.

cschladetsch commented 5 years ago
interface INull { } // compile-time null type

interface IMain : IView // so it can be put in the scene
{
     IViewRegistry Views { get; }
     IAgentRegistry Agents { get; }
     IModelRegistry Models { get; }

     void Register<TIView, TIAgent, TIModel>(GameObject prefab);
     IEntity Create<TIEntity>(GameObject prefab = null) where TIEntity : IEntity;
     IEntity Create<TIEntity>(GameObject prefab, params object[] modelCtorArgs);
     IEntity CreateDefault<TIEntity>(params object[] modelCtorArgs);
}

interface IEntity<IView, IAgent = INull, IModel = INull> : IEntity
{
     IMain Main { get; } // injected
     IView View { get; }
     IAgemt Agent { get; }
     IModel Modle { get; }
}
cschladetsch commented 5 years ago

The above doesn't make sense in C#, but the gist is there.