public override void Register(Physics.PhysicsWorld physics)
        {
            GameDataManager gameData;

            if ((gameData = GetGameData()) != null)
            {
                var resman = GetResourceManager();
                var hps    = parent.GetHardpoints();
                var fx     = gameData.GetEffect(Engine.Def.FlameEffect).GetEffect(resman);

                foreach (var hp in hps)
                {
                    if (!hp.Name.Equals("hpengineglow", StringComparison.OrdinalIgnoreCase) &&
                        hp.Name.StartsWith("hpengine", StringComparison.OrdinalIgnoreCase))
                    {
                        fireFx.Add(new AttachedEffect(hp, new ParticleEffectRenderer(fx)));
                    }
                }

                for (int i = 0; i < fireFx.Count; i++)
                {
                    Parent.ForceRenderCheck.Add(fireFx[i].Effect);
                }
            }

            SoundManager sound;

            if ((sound = GetSoundManager()) != null)
            {
                rumble = new AttachedSound(sound)
                {
                    Active = true, Sound = Engine.Def.RumbleSound
                };
                character = new AttachedSound(sound)
                {
                    Active = true, Sound = Engine.Def.CharacterLoopSound
                };
                cruiseLoop = new AttachedSound(sound)
                {
                    Active = false, Sound = Engine.Def.CruiseLoopSound
                };
            }
        }
        public override void Register(Physics.PhysicsWorld physics)
        {
            GameDataManager gameData;

            if ((gameData = GetGameData()) != null)
            {
                var            resman      = GetResourceManager();
                var            hps         = parent.GetHardpoints();
                ParticleEffect trailFx     = null;
                string         trailFxName = Engine.Def.TrailEffect;
                if (Parent.Tag == GameObject.ClientPlayerTag && !string.IsNullOrEmpty(Engine.Def.TrailEffectPlayer))
                {
                    trailFxName = Engine.Def.TrailEffectPlayer;
                }
                if (!string.IsNullOrEmpty(trailFxName))
                {
                    trailFx = gameData.GetEffect(trailFxName).GetEffect(resman);
                }
                ParticleEffect flameFx = null;
                if (!string.IsNullOrEmpty(Engine.Def.FlameEffect))
                {
                    flameFx = gameData.GetEffect(Engine.Def.FlameEffect).GetEffect(resman);
                }
                foreach (var hp in hps)
                {
                    if (!hp.Name.Equals("hpengineglow", StringComparison.OrdinalIgnoreCase) &&
                        hp.Name.StartsWith("hpengine", StringComparison.OrdinalIgnoreCase))
                    {
                        if (trailFx != null)
                        {
                            fireFx.Add(new AttachedEffect(hp, new ParticleEffectRenderer(trailFx)));
                        }
                        if (flameFx != null)
                        {
                            fireFx.Add(new AttachedEffect(hp, new ParticleEffectRenderer(flameFx)
                            {
                                Index = 1
                            }));
                        }
                    }
                }

                for (int i = 0; i < fireFx.Count; i++)
                {
                    Parent.ExtraRenderers.Add(fireFx[i].Effect);
                }
            }

            SoundManager sound;

            if ((sound = GetSoundManager()) != null)
            {
                if (!string.IsNullOrWhiteSpace(Engine.Def.RumbleSound))
                {
                    rumble = new AttachedSound(sound)
                    {
                        Active = true, Sound = Engine.Def.RumbleSound
                    };
                }
                if (!string.IsNullOrWhiteSpace(Engine.Def.CharacterLoopSound))
                {
                    character = new AttachedSound(sound)
                    {
                        Active = true, Sound = Engine.Def.CharacterLoopSound
                    };
                }
                if (!string.IsNullOrWhiteSpace(Engine.Def.CruiseLoopSound))
                {
                    cruiseLoop = new AttachedSound(sound)
                    {
                        Active = false, Sound = Engine.Def.CruiseLoopSound
                    };
                }
                if (!string.IsNullOrWhiteSpace(Engine.Def.CruiseStartSound))
                {
                    cruiseStart = new AttachedSound(sound)
                    {
                        Active   = false, Sound = Engine.Def.CruiseStartSound,
                        PlayOnce = true
                    };
                }
                if (!string.IsNullOrWhiteSpace(Engine.Def.CruiseStopSound))
                {
                    cruiseEnd = new AttachedSound(sound)
                    {
                        Active   = false, Sound = Engine.Def.CruiseStopSound,
                        PlayOnce = true
                    };
                }
            }
        }