protected override void OnUpdate() { DestroyOldGameObjects(); if (SimAssetBankInstance.Ready) { CreateNewGameObjects(SimAssetBankInstance.GetLookup()); } }
protected override void OnUpdate() { if (!SimAssetBankInstance.Ready) { return; } _simWorldReplaceVersion.Set(SimWorldAccessor.ReplaceVersion); _simWorldTickId.Set(SimWorldAccessor.ExpectedNewTickId); if (!_simWorldTickId.IsDirty && !_simWorldReplaceVersion.IsDirty) // only continue if sim has changed since last update { return; } _simWorldTickId.ClearDirty(); if (_simWorldReplaceVersion.ClearDirty()) // world replaced! { // update cached sim queries since world got replaced // NB: No need to dispose of these queries because the world gets disposed ... _updatedSimEntitiesQ = SimWorldAccessor.CreateEntityQuery(ComponentType.ReadOnly <SimAssetId>()); _updatedSimEntitiesQ.SetChangedVersionFilter(ComponentType.ReadOnly <SimAssetId>()); // Destroy all view DestroyAllViewEntities(); } else { // Destroy dangling view DestroyDanglingViewEntities(); } // update map UpdateSim2ViewMap(); // destroy then create view for entities that had their SimAssetId modified UpdateViewEntities(SimAssetBankInstance.GetJobLookup(), _updatedSimEntitiesQ); _updatedSimEntitiesQ.SetChangedFilterRequiredVersion(SimWorldAccessor.GlobalSystemVersion); _ecb.AddJobHandleForProducer(Dependency); }
public static GameObject FindSimAssetPrefab(SimAssetId simAssetId) { return(SimAssetBankInstance.GetLookup().GetSimAsset(simAssetId)?.gameObject); }