protected virtual void FireOnce() { Vector3 start = userCommunicator.LookStartPos(); Vector3 end; bool hitHealthComponent = false; Vector3 direction = Quaternion.Euler(InaccuracyOffset()) * userCommunicator.LookDirection(); RaycastHit hitInfo; if (Physics.Raycast(start, direction, out hitInfo, range, layermask)) //Hits something { end = hitInfo.point; IHealth health = hitInfo.collider.GetComponent <IHealth>(); Debug.Log(hitInfo.collider); if (health != null) { hitHealthComponent = true; health.Damage(damage); } } else { end = NagaUtils.GetPointAlongDirection(start, direction, range); } Debug.DrawLine(start, end, Color.white, 0.4f); onHitscanShoot.Invoke((new ShootInfo[] { new ShootInfo(start, end, hitInfo, hitHealthComponent) })); }
private void Awake() { sharedInstance = this; mouseIOService = NagaUtils.VerifyGetComponent <IMouseIOInfoProvider>(mouseIO); playerPositionService = NagaUtils.VerifyGetComponent <IPositionInfoProvider>(playerPosition); inventoryService = NagaUtils.VerifyGetComponent <IInventoryService>(inventory); ammoDisplayService = NagaUtils.VerifyGetComponent <IAmmoDisplayService>(ammoDisplay); scoreSystemService = NagaUtils.FindObjectOfType <IScoreSystem>(); //Maybe move this (but to where?) }
private void CreateNewSession(ScenarioInfo info) { session?.UnregisterAllEvents(); //session.SetScoreSystem(NagaUtils.FindObjectOfType<IScoreSystem>()); This got removed because the TimeTrial mode doesn't include score session = new ScenarioSession(statUI, info); session.SetHitMissDeterminer(NagaUtils.FindObjectsOfType <IHitMissDeterminer>()[0]); //maybe have a global notifier like KillNotifier? TODO; session.SetTimerEvent(scenarioTimer.onTimerTicked); session.SetKillNotifier(KillNotifier.onKill); }
private void UntimedOnScenarioLoaded() { _scenarioState = ScenarioState.Untimed; session.SetScoreSystem(NagaUtils.FindObjectOfType <IScoreSystem>()); EnablePlayer(); statUI.SetUntimed(); countdownUI.Hide(); onScenarioStarted.Invoke(); }
private void SetupUI <T>(ref T fieldMember, Component prefab) { fieldMember = NagaUtils.FindObjectOfType <T>(); if (fieldMember == null) { var obj = Instantiate(prefab); DontDestroyOnLoad(obj.gameObject); fieldMember = obj.GetComponent <T>(); if (fieldMember == null) { throw new System.Exception($"Prefab does not contain a component that implements {typeof(T).Name}!"); } } }
private void AttemptToCrouch() { if (movementMode != MovementMode.crouching) { Vector3 scale = transform.localScale; transform.localScale = new Vector3(scale.x, scale.y * crouchScale, scale.z); movementMode = MovementMode.crouching; NagaUtils.ExecuteAfterOneFrame(() => { controller.Move(new Vector3(0, ((crouchScale * scale.y) - scale.y), 0)); }); CheckCharacterControllerScalingError(); } }
public override void CreateTrail(ShootInfo shootInfo) { Vector3 start = weaponFirepos.GetWeaponFirePos(); Vector3 end = shootInfo.end; start = NagaUtils.GetPointAlongDirection(start, end - start, Random.value * startposRandomness); TrailRenderer trail = GenericObjectPooler.RequestObject(trailRenderer).gameObject.GetComponent <TrailRenderer>(); trail.gameObject.transform.position = start; trail.gameObject.SetActive(true); trail.Clear(); Timing.RunCoroutine(_TweenTrail(trail, end)); }
private void TimedOnScenarioLoaded() { _scenarioState = ScenarioState.ShootToStart; session.SetScoreSystem(NagaUtils.FindObjectOfType <IScoreSystem>()); SetupCountdownLogic(); statUI.SetTimeDP(0); statUI.SetTimerMode(); statUI.UpdateTime(session.timeAllowed * 1000); SetupCountdownUI(); scenarioTimer.onEndTimer.AddListener(OnTimedScenarioEnded); shootToStartCoroutine = Timing.RunCoroutine(_WaitToStart(() => { scenarioTimer.StartTimer(session.timeAllowed, countdownTime); _scenarioState = ScenarioState.Countdown; })); }
/* * * FIELDS AND PROPERTIES END * */ private void Awake() { mouseLookScript = NagaUtils.FindObjectOfType <IMouseIOInfoProvider>(); }
private void OnDrawGizmos() { NagaUtils.DrawCuboid(center + (relativeToTransform? transform.position : new Vector3(0, 0, 0)), size, Quaternion.Euler(rotation)); }