Example #1
0
 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");
 }
Example #2
0
        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);
        }
Example #3
0
        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;
        }
Example #4
0
        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
        }
Example #5
0
        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);
        }