internal W3dTankDraw(W3dTankDrawModuleData data, GameObject gameObject, GameContext context) : base(data, gameObject, context) { _data = data; _treadDebrisLeft = data.TreadDebrisLeft?.Value ?? context.AssetLoadContext.AssetStore.FXParticleSystemTemplates.GetByName("TrackDebrisDirtLeft"); _treadDebrisRight = data.TreadDebrisRight?.Value ?? context.AssetLoadContext.AssetStore.FXParticleSystemTemplates.GetByName("TrackDebrisDirtRight"); }
public ParticleSystemView(DiagnosticViewContext context, FXParticleSystemTemplate particleSystemTemplate) : base(context) { var game = context.Game; var particleSystem = AddDisposable(new ParticleSystem( particleSystemTemplate, game.AssetStore.LoadContext, () => ref WorldIdentity)); void OnUpdating(object sender, GameUpdatingEventArgs e) { particleSystem.Update(e.GameTime); } game.Updating += OnUpdating; AddDisposeAction(() => game.Updating -= OnUpdating); particleSystem.Activate(); _renderedView = AddDisposable(new RenderedView(context)); void onBuildingRenderList(object sender, BuildingRenderListEventArgs e) { particleSystem.BuildRenderList(e.RenderList); } _renderedView.RenderPipeline.BuildingRenderList += onBuildingRenderList; AddDisposeAction(() => _renderedView.RenderPipeline.BuildingRenderList -= onBuildingRenderList); }
internal W3dTankDraw(W3dTankDrawModuleData data, Drawable drawable, GameContext context) : base(data, drawable, context) { _data = data; _treadDebrisLeft = data.TreadDebrisLeft?.Value ?? context.AssetLoadContext.AssetStore.FXParticleSystemTemplates.GetByName("TrackDebrisDirtLeft"); _treadDebrisRight = data.TreadDebrisRight?.Value ?? context.AssetLoadContext.AssetStore.FXParticleSystemTemplates.GetByName("TrackDebrisDirtRight"); _turretBone = FindBoneInstance("Turret"); _hasTurret = _turretBone != null; _barrelBone = FindBoneInstance("Barrel01"); _hasBarrel = _barrelBone != null; }
internal override void Load(StatePersister reader) { reader.PersistVersion(4); reader.BeginObject("Base"); base.Load(reader); reader.EndObject(); reader.PersistVector3(ref _unknownPosition); reader.PersistUInt32(ref _stateMaybe); reader.PersistFrame(ref _unknownFrame1); var unknownInt1 = int.MaxValue; reader.PersistInt32(ref unknownInt1); if (unknownInt1 != int.MaxValue) { throw new InvalidStateException(); } reader.PersistObjectID(ref _launcherObjectId); reader.PersistObjectID(ref _unknownObjectId); reader.PersistBoolean(ref _unknownBool1); reader.PersistFrame(ref _unknownFrame2); reader.PersistSingle(ref _unknownFloat1); var unknownFloat2 = 99999.0f; reader.PersistSingle(ref unknownFloat2); if (unknownFloat2 != 99999.0f) { throw new InvalidStateException(); } var weaponTemplateName = _weaponTemplate?.Name; reader.PersistAsciiString(ref weaponTemplateName); _weaponTemplate = reader.AssetStore.WeaponTemplates.GetByName(weaponTemplateName); var exhaustParticleSystemTemplateName = _exhaustParticleSystemTemplate?.Name; reader.PersistAsciiString(ref exhaustParticleSystemTemplateName); if (reader.Mode == StatePersistMode.Read) { _exhaustParticleSystemTemplate = reader.AssetStore.FXParticleSystemTemplates.GetByName(exhaustParticleSystemTemplateName); } reader.PersistBoolean(ref _unknownBool2); reader.PersistVector3(ref _currentPositionMaybe); reader.PersistInt32(ref _unknownInt2); // 0, 0x20000 reader.PersistInt32(ref _unknownInt3); // 1960 }
public ParticleSystemView(DiagnosticViewContext context, FXParticleSystemTemplate particleSystemTemplate) : base(context) { var game = context.Game; var particleSystem = AddDisposable(new ParticleSystem( game.ContentManager, particleSystemTemplate, () => ref WorldIdentity)); _renderedView = AddDisposable(new RenderedView(context)); void onBuildingRenderList(object sender, BuildingRenderListEventArgs e) { particleSystem.BuildRenderList(e.RenderList, e.GameTime); } _renderedView.RenderPipeline.BuildingRenderList += onBuildingRenderList; AddDisposeAction(() => _renderedView.RenderPipeline.BuildingRenderList -= onBuildingRenderList); }