private void StartJobs() { using (m_poolLock.AcquireSharedUsing()) { foreach (var pool in m_pools) { foreach (var model in pool.Value) { if (model.Value.Count < PREALLOCATE_COUNT && !m_tracker.Exists(pool.Key)) { MyPhysicalModelDefinition def; MyDefinitionManager.Static.TryGetDefinition <MyPhysicalModelDefinition>(pool.Key, out def); var modelData = VRage.Game.Models.MyModels.GetModelOnlyData(def.Model); if (modelData.HavokBreakableShapes == null) { continue; } MyBreakableShapeCloneJob.Args args = new MyBreakableShapeCloneJob.Args(); args.Model = model.Key; args.DefId = pool.Key; args.ShapeToClone = modelData.HavokBreakableShapes[0]; args.Count = PREALLOCATE_COUNT - pool.Value.Count; args.Tracker = m_tracker; MyBreakableShapeCloneJob.Start(args); } } } } }
private void StartJobs() { foreach (var pool in m_pools) { if (pool.Value.Count < PREALLOCATE_COUNT && !m_tracker.Exists(pool.Key)) { MyPhysicalModelDefinition def; MyDefinitionManager.Static.TryGetDefinition <MyPhysicalModelDefinition>(pool.Key, out def); MyBreakableShapeCloneJob.Args args = new MyBreakableShapeCloneJob.Args(); args.DefId = pool.Key; args.ShapeToClone = MyModels.GetModelOnlyData(def.Model).HavokBreakableShapes[0]; args.Count = PREALLOCATE_COUNT - pool.Value.Count; args.Tracker = m_tracker; MyBreakableShapeCloneJob.Start(args); } } }