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>();
        }
Ejemplo n.º 2
0
        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);
        }