public IEnumerator MoveTo(ITraitBasedObjectData character, ITraitBasedObjectData target)
    {
        var characterObject = (character.ParentObject as GameObject);
        var targetObject    = (target.ParentObject as GameObject);

        characterObject.transform.LookAt(targetObject.transform);

        while (Vector3.Distance(characterObject.transform.position, targetObject.transform.position) > 0.1f)
        {
            characterObject.transform.position = Vector3.Lerp(characterObject.transform.position, targetObject.transform.position, 12 * Time.deltaTime);
            yield return(null);
        }
    }
 public void PickItem(ITraitBasedObjectData character, ITraitBasedObjectData item)
 {
     (item.ParentObject as GameObject)?.SetActive(false);
     (character.ParentObject as GameObject)?.transform.Find("Key").gameObject.SetActive(true);
 }