// Use this for initialization void Start() { trackedObject = viveCntrl.GetComponent <SteamVR_TrackedObject>(); m_Pool = PoolSystem.FindPool("Projectile"); g_Pool = PoolSystem.FindPool("Grenade"); m_Stock = GetComponentInChildren <StockAttributes>(); m_Barrel = GetComponentInChildren <BarrelAttributes>(); activeBarrelList.Add(m_BarrelParts[0]); activeStockList.Add(m_StockParts[0]); m_BarrelIndex = 0; m_StockIndex = 0; //manager = GetComponentInChildren<PartManager>(); Commander = GetComponent <SquadCommand>(); aSource = GetComponent <AudioSource>(); isShooting = false; m_Ammunition = 200; m_Part = Part.Barrel; m_StateMachine = WeaponState.Weapon; reset = false; resetParts = true; feedback.enabled = false; }
// Update is called once per frame void Update() { isShooting = false; //Tell WeaponController to re-get children using Event if (reset) { m_Stock = GetComponentInChildren <StockAttributes>(); m_Barrel = GetComponentInChildren <BarrelAttributes>(); reset = false; } switch (m_StateMachine) { case WeaponState.Weapon: if (device.GetPressDown(SteamVR_Controller.ButtonMask.Touchpad)) { m_StateMachine = WeaponState.Command; } if (device.GetPressUp(SteamVR_Controller.ButtonMask.ApplicationMenu)) { m_StateMachine = WeaponState.Custom; resetParts = true; } if (m_Ammunition <= 0 && device.GetPress(SteamVR_Controller.ButtonMask.Trigger)) { if (!aSource.isPlaying) { aSource.PlayOneShot(empty); } } //Shooting if (m_Ammunition > 0 && device.GetPress(SteamVR_Controller.ButtonMask.Trigger)) { isShooting = true; Fire(); } break; case WeaponState.Custom: feedback.enabled = true; if (m_Part == Part.Barrel) { BarrelImg.color = Color.red; StockImg.color = Color.white; } else { BarrelImg.color = Color.white; StockImg.color = Color.red; } if (resetParts) { m_BarrelPosition.transform.localPosition = new Vector3(0, 0, moveToPosition); m_StockPosition.transform.localPosition = new Vector3(0, 0, -moveToPosition); resetParts = false; } if (device.GetPress(SteamVR_Controller.ButtonMask.Trigger) || Input.GetKey(KeyCode.C)) { m_BarrelPosition.transform.localPosition = new Vector3(0, 0, 0); m_StockPosition.transform.localPosition = new Vector3(0, 0, 0); feedback.enabled = false; m_StateMachine = WeaponState.Weapon; } if (Input.GetButtonUp("Fire1") || device.GetPressUp(SteamVR_Controller.ButtonMask.ApplicationMenu)) { ToggleParts(m_Part); } if (Input.GetKeyUp(KeyCode.UpArrow) || device.GetAxis().y > 0 && device.GetAxis().x > -0.5f && device.GetAxis().x < 0.5f && device.GetPressDown(SteamVR_Controller.ButtonMask.Touchpad)) { //Up if (m_Part == Part.Barrel) { m_Part = Part.Stock; } else { m_Part = Part.Barrel; } } else if (Input.GetKeyUp(KeyCode.DownArrow) || device.GetAxis().y < 0 && device.GetAxis().x > -0.5f && device.GetAxis().x < 0.5f && device.GetPressDown(SteamVR_Controller.ButtonMask.Touchpad)) { //Down if (m_Part == Part.Barrel) { m_Part = Part.Stock; } else { m_Part = Part.Barrel; } } break; case WeaponState.Command: switch (Commander.GetOrder()) { case SquadCommand.Order.Regroup: Commander.ReGroup(); break; case SquadCommand.Order.Hold: Commander.Hold(); break; case SquadCommand.Order.Roam: Commander.Roam(); break; case SquadCommand.Order.Move: Commander.MoveToPosition(); break; case SquadCommand.Order.NOTOUCH: m_StateMachine = WeaponState.Weapon; break; } break; } }