protected override void Awake() { base.Awake(); _operatingEffectRenderer = UnityUtility.ValidateComponentPresence<LineRenderer>(gameObject); // No effects should initially show _operatingEffectRenderer.enabled = false; _initialBeamAnimationOffset = UnityEngine.Random.Range(0F, 5F); ValidateEffects(); _beamEnd = TrackingWidgetFactory.Instance.MakeTrackableLocation(parent: gameObject); _beamEndListener = TrackingWidgetFactory.Instance.MakeInvisibleCameraLosChangedListener(_beamEnd, Layers.Cull_15); }
public void Launch(IElementAttackable target, AWeapon weapon) { PrepareForLaunch(target, weapon); D.Assert((Layers)gameObject.layer == Layers.TransparentFX, "{0} is not on Layer {1}.".Inject(Name, Layers.TransparentFX.GetValueName())); weapon.isOperationalChanged += WeaponIsOperationalChangedEventHandler; _operatingEffectRenderer.SetPosition(index: 0, position: Vector3.zero); // start beam where ordnance located _beamEnd = TrackingWidgetFactory.Instance.MakeTrackableLocation(parent: gameObject); _beamEndListener = TrackingWidgetFactory.Instance.MakeInvisibleCameraLosChangedListener(_beamEnd, Layers.Cull_15); _beamEndListener.inCameraLosChanged += BeamEndInCameraLosChangedEventHandler; AssessShowMuzzleEffects(); AssessShowOperatingEffects(); enabled = true; }