public void AddWrapper() { IWrapperAware wrapperAware = RootGameObject.GetComponentInChildren <IWrapperAware>(); if (wrapperAware != null) { Wrapper wrapper = wrapperAware.Wrapper(); WrappersCollection.Add(Id, wrapper); Entity.AddWrapper(wrapper); wrapper.InitEntity(Entity); } }
/// <summary> /// Initialize object in platform /// </summary> /// <param name="idObject">Object type id. Used for save.</param> /// <param name="spawnInitParams">Parameters for spawn</param> /// <param name="spawnedGameObject">Game object for init</param> public static void InitObject(int idObject, SpawnInitParams spawnInitParams, GameObject spawnedGameObject, Config config) { //var photonView = AddPhoton(spawnedGameObject, spawnInitParams.spawnAsset.IdPhoton); GameObject gameObjectLink = spawnedGameObject; int idLocation = spawnInitParams.IdLocation; int idServer = spawnInitParams.IdServer; int idInstance = spawnInitParams.IdInstance; string name = spawnInitParams.Name; var parentId = spawnInitParams.ParentId; ObjectController parent = null; if (parentId != null) { parent = GameStateData.GetObjectInLocation(parentId.Value); } WrappersCollection wrappersCollection = null; if (idLocation != 0) { wrappersCollection = GameStateData.GetWrapperCollection(); } InitObjectParams initObjectParams = new InitObjectParams { Id = idInstance, IdObject = idObject, IdLocation = idLocation, IdServer = idServer, Asset = gameObjectLink, Name = name, RootGameObject = spawnedGameObject, WrappersCollection = wrappersCollection, Parent = parent, Config = config }; var newController = new ObjectController(initObjectParams); ObjectControllerCreated?.Invoke(newController); }
public void Delete() { List <ObjectBehaviourWrapper> childrens = RootGameObject.GetComponentsInChildren <ObjectBehaviourWrapper>().ToList(); childrens.Reverse(); foreach (var children in childrens) { ObjectController type = children.OwdObjectController; WrappersCollection.Remove(type.Id); foreach (ColliderController colliderController in type._colliderControllers) { colliderController.Destroy(); } foreach (InputController inputController in type._inputControllers.Values) { inputController.Destroy(); } type.OnDestroy?.Invoke(); type.Entity?.Destroy(); if (type.EntityParentLine != null) { Object.Destroy(type.EntityParentLine.gameObject.Value); type.EntityParentLine.Destroy(); } type.RootGameObject.DestroyGameObject(); type.Dispose(); } WorldData.ObjectsAreChanged = true; }
public void SetCollection(WrappersCollection collection) { this.collection = collection; }