private int CreateBeam(Position location, BeamState beamState, int duration, double bulletTime, int visibility) { var delay = 0; var beamType = GetBeamType(); if (beamType <= 0) { return(delay); } delay = BeamHelper.GetBeamDelay(beamType); if (duration == 0) { duration = (int)CycleTime.TotalMilliseconds; } Debug.Assert(ParentComponent != null, "ParentComponent != null"); var slot = ParentComponent.Type == RobotComponentType.Chassis ? Slot : 0xff; // -1 var builder = Beam.NewBuilder().WithType(beamType) .WithSlot(slot) .WithSource(ParentRobot) .WithState(beamState) .WithBulletTime(bulletTime) .WithDuration(duration) .WithTargetPosition(location) .WithVisibility(visibility); Zone.CreateBeam(builder); return(delay); }
private void ChargeUpStart() { currentBeamState = BeamState.ChargeUp; // Start playing Charge up sound SetAudioClip(chargeUpClip, false); }
/// <summary> /// A trigger collider can take the beam from the base state to the touched state and can /// also cancel current vibration. Touching the beam also plays the assigned note and sends /// the configured MIDI output for the "height" interaction type. /// </summary> /// <param name="cd">The collider that is entering the beam</param> void OnTriggerEnter(Collider cd) { if (!InputManager.IsUserInput(cd)) { return; } if (m_notouchframes > 0) { return; } if (m_vibrating) { m_vibrating = false; m_jointVel = new Vector3(0, 0, 0); m_jointPos = new Vector3(0, 0, 0); GenerateMesh(); } if (m_state == BeamState.Base || m_state == BeamState.Touched) { m_state = BeamState.Touched; m_renderer.material = touch; SetContactPoint(cd); SendInteractionOutput(m_heightInteractionType, (m_jointPos.y * m_heightInteractionSensitivity) + 0.5f); m_midiout.PlayNote(); CheckGrab(cd); } }
private void BeamRegressStart() { currentBeamState = BeamState.Regressing; beamPseudoCollider.enabled = false; SetAudioClip(beamRegressingClip, false); }
public override void Tick() { if (CurrentBeamState == BeamState.Beaming) { float maxTime = TimePerTick * BeamTicks; StatusPercent = 1.0f - (CompletedTime / maxTime); TickProgress += Time.deltaTime; CompletedTime += Time.deltaTime; while (TickProgress > TimePerTick) { CompletedTicks++; TickProgress -= TimePerTick; OnBeamEffect(); if (CompletedTicks >= BeamTicks) { CurrentBeamState = BeamState.Passive; StatusString = null; break; } } } else { base.Tick(); } }
// Set the beam state protected virtual void SetBeamState(BeamState newBeamState) { switch (newBeamState) { case BeamState.FadingIn: currentBeamState = BeamState.FadingIn; beamStateStartTime = Time.time - beamLevel * beamFadeInTime; // Assume linear fade in/out break; case BeamState.FadingOut: currentBeamState = BeamState.FadingOut; beamStateStartTime = Time.time - (1 - beamLevel) * beamFadeOutTime; // Assume linear fade in/out break; case BeamState.Sustaining: currentBeamState = BeamState.Sustaining; beamStateStartTime = Time.time; break; case BeamState.Off: currentBeamState = BeamState.Off; beamStateStartTime = Time.time; break; } onBeamStateChanged.Invoke(newBeamState); }
protected override void OnWarmupComplete() { CurrentBeamState = BeamState.Beaming; CompletedTicks = 0; TickProgress = 0.0f; CompletedTime = 0.0f; StatusString = "Channeling"; }
/// <summary> /// Begin grabbing / dragging the beam. /// </summary> /// <param name="cd">The collider that is initiating a grab on the beam</param> void BeginGrab(Collider cd) { m_grabber = cd; m_state = BeamState.Grabbed; m_vibrating = false; m_renderer.material = grab; m_midiout.PlayNote(); SetContactPoint(cd); }
/// <summary> /// Play audio when beam state changes. /// </summary> /// <param name="newBeamState">The new beam state.</param> public virtual void OnBeamStateChanged(BeamState newBeamState) { if (newBeamState == BeamState.FadingIn) { if (beamStartedAudio != null) { beamStartedAudio.Play(); } } }
/// <summary> /// End the grabbed state, enter the vibrating phase /// </summary> void EndGrab() { m_multigrab.RegisterRelease(m_grabber); m_notouchframes = 10; m_grabber = null; m_state = BeamState.Base; m_vibrating = true; m_renderer.material = notouch; m_midiout.StopNote(); }
public override void Interupt() { base.Interupt(); if (CurrentBeamState == BeamState.Beaming) { CurrentBeamState = BeamState.Passive; StatusString = null; StatusPercent = 0.0f; } }
private void BeamGrowStart() { currentBeamState = BeamState.Firing; beamPseudoCollider.enabled = true; // Start checking for Damagable Entities StartBeamCollisionCheck(); // Start playing Beam Loop sound SetAudioClip(beamFiringClip, true); }
/// <summary> /// Called when a trigger collider is leaving the beam. Transitions the beam from the "touched" /// state to the "base" state and stops any current note. /// </summary> /// <param name="cd">The collider that is leaving the beam</param> void OnTriggerExit(Collider cd) { if (!InputManager.IsUserInput(cd)) { return; } if (m_state == BeamState.Touched) { m_state = BeamState.Base; m_renderer.material = notouch; m_midiout.StopNote(); } }
public void StopBeam() { if (beamChargePercentage < beamParticleDeactivationPercentage && beamChargeUpPS.isPlaying) { beamChargeUpPS.Stop(); } SetFakeLightAlpha(0f); SetBeamSize(0f, 0f, 0f, 0f); SetTimer(0f); StopBeamCollisionCheck(); currentBeamState = BeamState.Inactive; if (beamChargeUpCoroutine != null) { StopCoroutine(beamChargeUpCoroutine); beamChargeUpCoroutine = null; } }
public virtual void OnInteractableTarget(SpaceCaster caster) { State = BeamState.OnInteractableTarget; }
protected void CreateBeam(Unit target, BeamState beamState) { CreateBeam(target, beamState, 0, 0, 0); }
public BeamCandidate(BeamState <T> state) { State = state.State; Action = null; Score = state.Score; }
protected int CreateBeam(Unit target, BeamState beamState, int duration, double bulletTime) { return(CreateBeam(target, beamState, duration, bulletTime, 0)); }
protected void CreateBeam(Position location, BeamState beamState) { CreateBeam(location, beamState, 0, 0, 0); }
protected int CreateBeam(Position location, BeamState beamState, int duration, double bulletTime) { return(CreateBeam(location, beamState, duration, bulletTime, 0)); }
public virtual void Off(SpaceCaster caster) { State = BeamState.Off; }
public BeamBuilder WithState(BeamState beamState) { _state = beamState; return(this); }
public virtual void OnTarget(SpaceCaster caster) { State = BeamState.OnTarget; }
public virtual void NearTarget(SpaceCaster caster) { State = BeamState.NearTarget; }
public virtual void Default(SpaceCaster caster) { State = BeamState.Default; }