private static bool TryGetDummy(string name, IMyModel model, out IMyModelDummy dummy) { Dictionary <string, IMyModelDummy> dummies = new Dictionary <string, IMyModelDummy>(); model.GetDummies(dummies); return(dummies.TryGetValue(name, out dummy)); }
private void CheckFlameDummies() { if (Entity == null) { return; } IMyModel model = Entity.Model; if (model == null) { return; } Dictionary <string, IMyModelDummy> dummies = new Dictionary <string, IMyModelDummy>(); model.GetDummies(dummies); foreach (string dummy in dummies.Keys) { if (dummy.StartsWith("thruster_flame", StringComparison.InvariantCultureIgnoreCase)) { m_hasFlames = true; return; } } m_hasFlames = false; }
internal void Update() { _cachedModel = Entity.Model; _cachedSubpart = Entity; _cachedSubpartModel = _cachedSubpart?.Model; for (var i = 0; i < _path.Length - 1; i++) { MyEntitySubpart part; if (_cachedSubpart.TryGetSubpart(_path[i], out part)) { _cachedSubpart = part; } else { _tmp2.Clear(); ((IMyModel)_cachedSubpart.Model)?.GetDummies(_tmp2); _failed = true; return; } } _cachedSubpartModel = _cachedSubpart?.Model; _cachedDummyMatrix = null; _tmp1.Clear(); _cachedSubpartModel?.GetDummies(_tmp1); IMyModelDummy dummy; if (_tmp1.TryGetValue(_path[_path.Length - 1], out dummy)) { _cachedDummyMatrix = MatrixD.Normalize(dummy.Matrix); _failed = false; return; } _failed = true; }
private void UpdateParticleEffect() { if (_effectCachedModel != _reactor.Model) { _effectCachedModel = _reactor.Model; var tmp = new Dictionary <string, IMyModelDummy>(); _effectCachedModel?.GetDummies(tmp); _effectMatrix = tmp.GetValueOrDefault("subpart_PlasmaParticle")?.Matrix; // empty for particle } if (_reactor.IsWorking && _effectMatrix.HasValue) { var fractionalOutput = _reactor.CurrentOutput / _reactor.MaxOutput; var dTheta = MAX_RATE * fractionalOutput * MyEngineConstants.PHYSICS_STEP_SIZE_IN_SECONDS; _effectMatrix = _effectMatrix.Value * MatrixD.CreateRotationY(dTheta); if (_effect == null) { MyParticlesManager.TryCreateParticleEffect("PlasmaSparks", out _effect); // particle subtype } _effect.WorldMatrix = _effectMatrix.Value * _reactor.WorldMatrix; _effect.Velocity = _reactor.CubeGrid.Physics?.GetVelocityAtPoint(_effect.WorldMatrix.Translation) ?? Vector3.Right; // rotation } else { _effect?.Stop(); if (_effect != null) { MyParticlesManager.RemoveParticleEffect(_effect); } _effect = null; } }
public static IMyModelDummy GetDummy(this IMyModel Model, string DummyName) { Dictionary <string, IMyModelDummy> Dummies = new Dictionary <string, IMyModelDummy>(); Model.GetDummies(Dummies); return(Dummies.ContainsKey(DummyName) ? Dummies[DummyName] : null); }
internal void Clean(MyEntity myEntity) { //GetEnumerator().Dispose(); // Don't this this is needed? _subparts.Clear(); _tmp.Clear(); NameToEntity.Clear(); _trackedModel = null; Entity = myEntity; }
internal Vector3 GetPartLocation(string partName, IMyModel model) { Dictionary <string, IMyModelDummy> dummyList = new Dictionary <string, IMyModelDummy>(); model.GetDummies(dummyList); IMyModelDummy dummy; if (dummyList.TryGetValue(partName, out dummy)) { return(dummy.Matrix.Translation); } return(Vector3.Zero); }
internal IMyModelDummy GetPartDummy(string partName, IMyModel model) { Dictionary <string, IMyModelDummy> dummyList = new Dictionary <string, IMyModelDummy>(); model.GetDummies(dummyList); IMyModelDummy dummy; if (dummyList.TryGetValue(partName, out dummy)) { return(dummy); } return(null); }
private void Update() { _cachedModel = _entity.Model; _cachedSubpart = _entity; _cachedSubpartModel = _cachedSubpart?.Model; for (var i = 0; i < _path.Length - 1; i++) { MyEntitySubpart part; if (_cachedSubpart.TryGetSubpart(_path[i], out part)) { _cachedSubpart = part; } else { EnergyWeaponsCore.LoggerStatic?.Warning($"Failed to process {string.Join("/", _path)} for {_entity}"); EnergyWeaponsCore.LoggerStatic?.Warning( $"Couldn't find subpart {_path[i]} in {_cachedSubpart.Model?.AssetName}"); var tmp2 = new Dictionary <string, IMyModelDummy>(); _cachedSubpart.Model?.GetDummies(tmp2); EnergyWeaponsCore.LoggerStatic?.Warning( $"Existing dummies/subparts: {string.Join(", ", tmp2.Keys)}"); _failed = true; return; } } _cachedSubpartModel = _cachedSubpart?.Model; _cachedDummyMatrix = null; var tmp = new Dictionary <string, IMyModelDummy>(); _cachedSubpartModel?.GetDummies(tmp); IMyModelDummy dummy; if (tmp.TryGetValue(_path[_path.Length - 1], out dummy)) { _cachedDummyMatrix = dummy.Matrix; _failed = false; return; } EnergyWeaponsCore.LoggerStatic?.Warning($"Failed to process {string.Join("/", _path)} for {_entity}"); EnergyWeaponsCore.LoggerStatic?.Warning( $"Couldn't find dummy {_path[_path.Length - 1]} in {_cachedSubpart?.Model?.AssetName}"); EnergyWeaponsCore.LoggerStatic?.Warning( $"Existing dummies: {string.Join(", ", tmp.Keys)}"); _failed = true; }
internal void CheckSubparts() { if (_trackedModel == Entity?.Model) { return; } _trackedModel = Entity?.Model; _subparts.Clear(); NameToEntity.Clear(); EntityToName.Clear(); if (Entity != null) { var head = -1; _tmp.Clear(); while (head < _subparts.Count) { var query = head == -1 ? Entity : _subparts[head]; head++; if (query.Model == null) { continue; } _tmp.Clear(); ((IMyEntity)query).Model.GetDummies(_tmp); //Log.Line($"next part: {((IMyEntity)query).Model.AssetName}"); foreach (var kv in _tmp) { if (kv.Key.StartsWith("subpart_", StringComparison.Ordinal)) { var name = kv.Key.Substring("subpart_".Length); MyEntitySubpart res; if (query.TryGetSubpart(name, out res)) { _subparts.Add(res); NameToEntity[name] = res; EntityToName[res] = name; } } else { NameToEntity[kv.Key] = Entity; } } NameToEntity["None"] = Entity; EntityToName[Entity] = "None"; } } }
public override void UpdateAfterSimulation() { if (_activeModel != Entity?.Model) { _activeModel = Entity?.Model; Entity?.TryGetSubpart(_subpart, out _activeSubpart); } if (_activeSubpart?.PositionComp == null) { return; } var m = _activeSubpart.PositionComp.LocalMatrix; m *= Matrix.CreateRotationY(_idleSpeed); _activeSubpart.PositionComp.LocalMatrix = m; }
private void UpdateParticleEffect() { if (_effectCachedModel != _reactor.Model) { _effectCachedModel = _reactor.Model; var tmp = new Dictionary <string, IMyModelDummy>(); _effectCachedModel?.GetDummies(tmp); _effectMatrix = tmp.GetValueOrDefault("subpart_PlasmaParticle")?.Matrix; // empty for particle } if (_reactor.IsWorking && _effectMatrix.HasValue) { var fractionalOutput = _reactor.CurrentOutput / _reactor.MaxOutput; var dTheta = 1 * MyEngineConstants.PHYSICS_STEP_SIZE_IN_SECONDS; _effectMatrix = _effectMatrix.Value * MatrixD.CreateRotationY(-dTheta); if (_effect == null) { MyParticlesManager.TryCreateParticleEffect("EMPdamageEffect", out _effect); // particle subtype } _effect.WorldMatrix = _effectMatrix.Value * _reactor.WorldMatrix; _effect.Velocity = _reactor.CubeGrid.Physics?.GetVelocityAtPoint(_effect.WorldMatrix.Translation) ?? Vector3.Right; // rotation if (_effect == null) { return; } // if (Vector3D.DistanceSquared(MyAPIGateway.Session.Camera.WorldMatrix.Translation, _reactor.Position) >= ParticleMaxDistance * ParticleMaxDistance) // return; } else { _effect?.Stop(); if (_effect != null) { MyParticlesManager.RemoveParticleEffect(_effect); } _effect = null; if (_effect == null) { return; } } }
public MyModule(IMyModel m) { model = m; Get["My/intConstraint/{value}"] = parameters => string.Format("Hello {0}: Value {1} is an integer", this.CurrentUser.Name, parameters.value); Post["My/SaveInfo"] = (x) => { Type t = model.GetType(); string tx = this.Request.Body.AsString(); IMyModel myModel = JsonConvert.DeserializeObject(tx, t) as IMyModel; return(string.Format("Your Number is {0}", myModel.FName)); }; Get["GetMyModel"] = _ => { return(JsonConvert.SerializeObject(model, new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Objects })); }; }
// not thread safe. private void CheckSubparts() { if (_trackedModel == Entity?.Model) { return; } _trackedModel = Entity?.Model; _subparts.Clear(); if (Entity != null) { var head = -1; var tmp = new Dictionary <string, IMyModelDummy>(); while (head < _subparts.Count) { var query = head == -1 ? Entity : _subparts[head]; head++; if (query.Model == null) { continue; } tmp.Clear(); query.Model.GetDummies(tmp); foreach (var kv in tmp) { if (kv.Key.StartsWith("subpart_")) { var name = kv.Key.Substring("subpart_".Length); MyEntitySubpart res; if (query.TryGetSubpart(name, out res)) { _subparts.Add(res); } } } } } }
internal MyModule(IHttpClient client, IMyModel model) { m = model; this.client = client; }
public MyViewModel(IMyModel myModel, TestSchedulers schedulers) { _myModel = myModel; _schedulers = schedulers; _prices = new ObservableCollection <decimal>(); }
public MyViewModel(IUnityContainer container, IMyModel model) { _container = container; _model = model;
public void Present(IMyModel model) { MessageBox.Show(string.Format("X:{0}\tY:{1}", model.X, model.Y), "登録したわ―"); }
public void Present(IMyModel model) { Console.WriteLine("X:{0}\tY:{1}", model.X, model.Y); }
public static bool ProcessBlock(IMySlimBlock block) { if (block == null) { return(false); } if (AllowedBlocks.Contains(block.BlockDefinition.Id)) { return(true); } var grid = block.CubeGrid as MyCubeGrid; if (grid == null) { return(true); } if (RestrictedBlocks.Contains(block.BlockDefinition.Id)) { grid.RazeBlock(block.Min); return(false); } if (block.BlockDefinition.Context?.ModId == null || !block.BlockDefinition.Context.ModId.Contains(".sbm")) { AllowedBlocks.Add(block.BlockDefinition.Id); return(true); } var idString = block.BlockDefinition.Context.ModId.Replace(".sbm", ""); bool badResult = false; if (block.FatBlock == null) { MyCube cube = null; if (!grid.TryGetCube(block.Min, out cube)) { return(true); } foreach (var part in cube.Parts) { IMyModel model = part.Model; if (model == null) { continue; } var dummyDict = new Dictionary <string, IMyModelDummy>(); var count = model.GetDummies(dummyDict); foreach (var dummy in dummyDict.Keys) { if (dummy.Contains("ModEncProtSys_") && !dummy.Contains(idString)) { badResult = true; break; } } if (badResult) { break; } } } else { IMyModel model = block.FatBlock.Model; if (model == null) { return(true); } var dummyDict = new Dictionary <string, IMyModelDummy>(); var count = model.GetDummies(dummyDict); foreach (var dummy in dummyDict.Keys) { if (dummy.Contains("ModEncProtSys_") && !dummy.Contains(idString)) { badResult = true; break; } } } if (badResult) { RestrictedBlocks.Add(block.BlockDefinition.Id); grid.RazeBlock(block.Min); return(false); } else { AllowedBlocks.Add(block.BlockDefinition.Id); return(true); } }
public MyViewModel(IMyModel myModel, ISchedulerProvider schedulers) { _schedulers = schedulers; _myModel = myModel; _prices = new ObservableCollection <decimal>(); }