public override void OnViewCreated(IEntity entity, Object viewObject) { var viewComponent = entity.GetComponent <ViewComponent>(); var viewGameObject = instantiator.InstantiatePrefab(viewObject as GameObject); viewComponent.View = viewGameObject; var entityBinding = viewGameObject.GetComponent <EntityView>(); if (entityBinding == null) { entityBinding = viewGameObject.AddComponent <EntityView>(); entityBinding.Entity = entity; entityBinding.EntityCollection = CollectionManager.GetCollectionFor(entity); } if (viewComponent.DestroyWithView) { viewGameObject.OnDestroyAsObservable() .Subscribe(x => entityBinding.EntityCollection.RemoveEntity(entity.Id)) .AddTo(viewGameObject); } OnViewCreated(entity, viewComponent); entity.AddComponent <ViewReadyComponent>(); }
public GameObject InstantiateWithInit(IUnityInstantiator instantiator, GameObject prefab, Transform parent = null) { var instance = instantiator.InstantiatePrefab(prefab); instance.name = instance.name.Replace("(Clone)", ""); if (parent != null) { instance.transform.SetParent(parent); } instance.transform.localPosition = Vector3.zero; instance.transform.localEulerAngles = Vector3.zero; instance.transform.localScale = Vector3.one; return(instance); }