Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/dom/gamepad/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 3 kB image not shown  

Quelle  GamepadPoseState.h   Sprache: C

 
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#ifndef mozilla_dom_gamepad_GamepadPoseState_h_
#define mozilla_dom_gamepad_GamepadPoseState_h_

namespace mozilla::dom {

enum class GamepadCapabilityFlags : uint16_t {
  Cap_None = 0,
  /**
   * Cap_Position is set if the Gamepad is capable of tracking its position.
   */

  Cap_Position = 1 << 1,
  /**
   * Cap_Orientation is set if the Gamepad is capable of tracking its
   * orientation.
   */

  Cap_Orientation = 1 << 2,
  /**
   * Cap_AngularAcceleration is set if the Gamepad is capable of tracking its
   * angular acceleration.
   */

  Cap_AngularAcceleration = 1 << 3,
  /**
   * Cap_LinearAcceleration is set if the Gamepad is capable of tracking its
   * linear acceleration.
   */

  Cap_LinearAcceleration = 1 << 4,
  /**
   * Cap_GripSpacePosition is set if the Gamepad has a grip space position.
   */

  Cap_GripSpacePosition = 1 << 5,
  /**
   * Cap_PositionEmulated is set if the VRDisplay is capable of setting a
   * emulated position (e.g. neck model) even if still doesn't support 6DOF
   * tracking.
   */

  Cap_PositionEmulated = 1 << 6,
  /**
   * Cap_All used for validity checking during IPC serialization
   */

  Cap_All = (1 << 7) - 1
};

MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(GamepadCapabilityFlags)

struct GamepadPoseState {
  GamepadCapabilityFlags flags;
  float orientation[4];
  float position[3];
  float angularVelocity[3];
  float angularAcceleration[3];
  float linearVelocity[3];
  float linearAcceleration[3];
  bool isPositionValid;
  bool isOrientationValid;

  GamepadPoseState()
      : flags(GamepadCapabilityFlags::Cap_None),
        orientation{0, 0, 0, 0},
        position{0, 0, 0},
        angularVelocity{0, 0, 0},
        angularAcceleration{0, 0, 0},
        linearVelocity{0, 0, 0},
        linearAcceleration{0, 0, 0},
        isPositionValid(false),
        isOrientationValid(false) {}

  bool operator==(const GamepadPoseState& aPose) const {
    return flags == aPose.flags && orientation[0] == aPose.orientation[0] &&
           orientation[1] == aPose.orientation[1] &&
           orientation[2] == aPose.orientation[2] &&
           orientation[3] == aPose.orientation[3] &&
           position[0] == aPose.position[0] &&
           position[1] == aPose.position[1] &&
           position[2] == aPose.position[2] &&
           angularVelocity[0] == aPose.angularVelocity[0] &&
           angularVelocity[1] == aPose.angularVelocity[1] &&
           angularVelocity[2] == aPose.angularVelocity[2] &&
           angularAcceleration[0] == aPose.angularAcceleration[0] &&
           angularAcceleration[1] == aPose.angularAcceleration[1] &&
           angularAcceleration[2] == aPose.angularAcceleration[2] &&
           linearVelocity[0] == aPose.linearVelocity[0] &&
           linearVelocity[1] == aPose.linearVelocity[1] &&
           linearVelocity[2] == aPose.linearVelocity[2] &&
           linearAcceleration[0] == aPose.linearAcceleration[0] &&
           linearAcceleration[1] == aPose.linearAcceleration[1] &&
           linearAcceleration[2] == aPose.linearAcceleration[2] &&
           isPositionValid == aPose.isPositionValid &&
           isOrientationValid == aPose.isOrientationValid;
  }

  bool operator!=(const GamepadPoseState& aPose) const {
    return !(*this == aPose);
  }

  void Clear() {
    memset(&flags, 0,
           reinterpret_cast<char*>(&isOrientationValid) +
               sizeof(isOrientationValid) - reinterpret_cast<char*>(&flags));
  }
};

}  // namespace mozilla::dom

#endif  // mozilla_dom_gamepad_GamepadPoseState_h_

Messung V0.5
C=95 H=87 G=90

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.