module Mischief.ECS.Components.HooksDef where

import Data.Data
import Mischief.ECS.EntityDef

data Hook a where
  Hook :: (Typeable m) => (HookContext -> m ()) -> Hook a

data HookRel a where
  HookRel :: (Typeable m) => (HookContextRel -> m ()) -> HookRel a

newtype HookContext = HookContext {HookContext -> Entity
entity :: Entity}

data HookContextRel = HookContextRel {HookContextRel -> Entity
entity :: Entity, HookContextRel -> Entity
target :: Entity}