/// <summary> /// Used in create mode, remove a behaviour from an entity instance /// </summary> public void RemoveBehaviourFromEntity(EntityInstance entity, BehaviourInstanceBase behaviour) { behaviour.OnDetached(entity); entity.DetachBehaviour(behaviour); m_RuntimeBehaviours.Remove(behaviour); // TODO: recycle to pool Destroy(behaviour.gameObject); }
/// <summary> /// Used in create mode, add a behaviour to an entity instance /// </summary> public BehaviourInstanceBase AddBehaviourToEntity(EntityInstance entity) { // TODO: instead of creating a new behaviour instance, replaced with object pooling BehaviourInstanceBase behaviour = Instantiate(m_BehaviourPrefab, entity.transform); behaviour.transform.localPosition = Vector3.zero; behaviour.OnCreated(this); m_RuntimeBehaviours.Add(behaviour); entity.AttachBehaviour(behaviour); behaviour.OnAttached(entity); return(behaviour); }
public void DetachBehaviour(BehaviourInstanceBase behaviour) { m_Behaviours.Remove(behaviour); }
public void AttachBehaviour(BehaviourInstanceBase behaviour) { m_Behaviours.Add(behaviour); }