private void UpdateOrientation(BodyReference body) { Quaternion rotation = body.Pose.Orientation.ToQuaternion(); forward = -PhysicUtils.Forward(rotation); rightDirection = PhysicUtils.Left(rotation); upDirection = PhysicUtils.Up(rotation); }
internal void SecondaryFire(double gameTime, Vector2 mousePosition) { if (gameTime < lastFire + fireCooldownTime) { return; } BodyReference body = Body(); Vector3 position = body.Pose.Position.ToVector3(); Quaternion laserOrientation = PhysicUtils.DirectionsToQuaternion(TGCGame.camera.MouseDirection(position), upDirection); Vector3 up = PhysicUtils.Up(laserOrientation); Vector3 left = PhysicUtils.Left(laserOrientation); World.InstantiateLaser(position + up * 1.0f + left * 4.75459f, -forward, laserOrientation, emitter, laserVolume / 4); World.InstantiateLaser(position + up * 1.0f - left * 4.75459f, -forward, laserOrientation, emitter, laserVolume / 4); World.InstantiateLaser(position - up * 1.7f + left * 4.75459f, -forward, laserOrientation, emitter, laserVolume / 4); World.InstantiateLaser(position - up * 1.7f - left * 4.75459f, -forward, laserOrientation, emitter, laserVolume / 4); lastFire = gameTime; }