public RuntimeTerraEntity AddEntity(AssembledEntity entity) { RuntimeTerraEntity newRuntimeEntity = new RuntimeTerraEntity(entity, Game.Instance.GetService <TerraDBService>()); OnAddEntity?.Invoke(newRuntimeEntity); return(newRuntimeEntity); }
public void RemoveEntity(AssembledEntity entity) { TerraDBService db = Game.Instance.GetService <TerraDBService>(); Entities.Remove(entity); OnRemoveEntity?.Invoke(new RuntimeTerraEntity(entity, db)); }
public RuntimeTerraEntity CreateEntity(ITerraEntityType entityType) { TerraEntity newEntity = new TerraEntity(); AssembledEntity assembled = new AssembledEntity(newEntity); newEntity.EntityID = entityType.EntityID; _db.Write(newEntity, TerraEntity.Serializer, TerraEntity.WherePrimaryKey); RuntimeTerraEntity runtimeTerraEntity = new RuntimeTerraEntity(assembled, _db); return(runtimeTerraEntity); }
public RuntimeTerraEntity(AssembledEntity entity, TerraDBService db) { entity.TerraPosition3D.InstanceId = entity.TerraEntity.InstanceId; Position = new TerraPosition3DComponent(db, entity.TerraPosition3D); Entity = entity.TerraEntity; Entity.OnLabelAdded += (labelEntity, label) => OnLabelAdded?.Invoke(this, label); Entity.OnLabelRemoved += (labelEntity, label) => OnLabelRemoved?.Invoke(this, label); EntityTypeData = TerraGameResources.Instance.TerraEntityPrefabConfig.GetEntityConfig(this); DB = db; }