module artemisd.manager;

import artemisd.world;
import artemisd.entity;
import artemisd.entityobserver;
import artemisd.utils.type;

abstract class Manager : EntityObserver 
{
    mixin TypeDecl;

    protected World world;
    
    void initialize();

    final void setWorld(World world) 
    {
        this.world = world;
    }

    final World getWorld() 
    {
        return world;
    }
    
    public void added(Entity e) 
    {
    }
    
    public void changed(Entity e) 
    {
    }
    
    public void deleted(Entity e) 
    {
    }
    
    public void disabled(Entity e) 
    {
    }
    
    public void enabled(Entity e) 
    {
    }
}