public virtual void Launch(IElementAttackable target, AWeapon weapon, Topography topography) { PrepareForLaunch(target, weapon); D.Assert((Layers)gameObject.layer == Layers.Projectiles, "{0} is not on Layer {1}.".Inject(Name, Layers.Projectiles.GetValueName())); _launchPosition = transform.position; _rigidbody.drag = OpenSpaceDrag * topography.GetRelativeDensity(); _rigidbody.mass = Mass; AssessShowMuzzleEffects(); _hasWeaponFired = true; weapon.HandleFiringComplete(this); _displayMgr = InitializeDisplayMgr(); }
public virtual void Launch(IElementAttackable target, AWeapon weapon, Topography topography) { if (_displayMgr == null) { // 8.9.16 moved from Awake() as PoolMgr spawns ordnance as soon as it wakes. In scene change from Lobby, this occurs // way before OnLevelIsLoaded() is called which is when GameMgr refreshes static References - aka TrackingWidgetFactory _displayMgr = InitializeDisplayMgr(); } _displayMgr.IsDisplayEnabled = true; PrepareForLaunch(target, weapon); D.AssertEqual(Layers.Projectiles, (Layers)gameObject.layer, ((Layers)gameObject.layer).GetValueName()); _launchPosition = transform.position; _rigidbody.drag = OpenSpaceDrag * topography.GetRelativeDensity(); _rigidbody.mass = Mass; AssessShowMuzzleEffects(); _hasWeaponFired = true; weapon.HandleFiringComplete(this); }