Browse Source

better generics constraints

tags/Rel2b2
sebas77 6 years ago
parent
commit
e876b3e531
1 changed files with 9 additions and 9 deletions
  1. +9
    -9
      Svelto.ECS/MultiEntityViewsEngine.cs

+ 9
- 9
Svelto.ECS/MultiEntityViewsEngine.cs View File

@@ -2,7 +2,7 @@ using Svelto.ECS.Internal;

namespace Svelto.ECS.Internal
{
public abstract class MultiEntityViewsEngine<T> : IHandleEntityViewEngine where T : EntityView, new()
public abstract class MultiEntityViewsEngine<T> : IHandleEntityViewEngine where T : class, IEntityView
{
public virtual void Add(IEntityView entityView)
{
@@ -22,14 +22,14 @@ namespace Svelto.ECS.Internal
namespace Svelto.ECS
{
public abstract class MultiEntityViewsEngine<T, U> : MultiEntityViewsEngine<T>
where U : EntityView, new() where T : EntityView, new()
where U : class, IEntityView where T : class, IEntityView
{
protected abstract void Add(U entityView);
protected abstract void Remove(U entityView);

public override void Add(IEntityView entityView)
{
var castedEntityView = entityView as U;
var castedEntityView = (U) entityView;
if (castedEntityView != null)
Add(castedEntityView);
else
@@ -46,14 +46,14 @@ namespace Svelto.ECS
}

public abstract class MultiEntityViewsEngine<T, U, V> : MultiEntityViewsEngine<T, U>
where V : EntityView, new() where U : EntityView, new() where T : EntityView, new()
where V : class, IEntityView where U : class, IEntityView where T : class, IEntityView
{
protected abstract void Add(V entityView);
protected abstract void Remove(V entityView);

public override void Add(IEntityView entityView)
{
var castedEntityView = entityView as V;
var castedEntityView = (V) entityView;
if (castedEntityView != null)
Add(castedEntityView);
else
@@ -62,7 +62,7 @@ namespace Svelto.ECS

public override void Remove(IEntityView entityView)
{
var castedEntityView = entityView as V;
var castedEntityView = (V) entityView;
if (castedEntityView != null)
Remove(castedEntityView);
else
@@ -76,14 +76,14 @@ namespace Svelto.ECS
/// already too many responsabilities.
/// </summary>
public abstract class MultiEntityViewsEngine<T, U, V, W> : MultiEntityViewsEngine<T, U, V>
where W : EntityView, new() where V : EntityView, new() where U : EntityView, new() where T : EntityView, new()
where W : class, IEntityView where V : class, IEntityView where U : class, IEntityView where T : class, IEntityView
{
protected abstract void Add(W entityView);
protected abstract void Remove(W entityView);

public override void Add(IEntityView entityView)
{
var castedEntityView = entityView as W;
var castedEntityView = (W) entityView;
if (castedEntityView != null)
Add(castedEntityView);
else
@@ -92,7 +92,7 @@ namespace Svelto.ECS

public override void Remove(IEntityView entityView)
{
var castedEntityView = entityView as W;
var castedEntityView = (W) entityView;
if (castedEntityView != null)
Remove(castedEntityView);
else


Loading…
Cancel
Save