Fixes per code review.

This commit is contained in:
Philip Rosedale 2013-05-22 11:57:11 -07:00
parent 0d231b5550
commit 53dc81e309
3 changed files with 27 additions and 21 deletions

View file

@ -293,9 +293,9 @@ void Avatar::simulate(float deltaTime, Transmitter* transmitter) {
if (fabs(rotation.y) > TRANSMITTER_MIN_YAW_RATE) { if (fabs(rotation.y) > TRANSMITTER_MIN_YAW_RATE) {
_bodyYawDelta += rotation.y * TRANSMITTER_YAW_SCALE * deltaTime; _bodyYawDelta += rotation.y * TRANSMITTER_YAW_SCALE * deltaTime;
} }
if (transmitter->getTouchState() == 'D') { if (transmitter->getTouchState()->state == 'D') {
_thrust += THRUST_MAG * _thrust += THRUST_MAG *
(float)(transmitter->getTouchPoint()[1] - TOUCH_POSITION_RANGE_HALF) / TOUCH_POSITION_RANGE_HALF * (float)(transmitter->getTouchState()->y - TOUCH_POSITION_RANGE_HALF) / TOUCH_POSITION_RANGE_HALF *
TRANSMITTER_LIFT_SCALE * TRANSMITTER_LIFT_SCALE *
deltaTime * deltaTime *
_orientation.getUp(); _orientation.getUp();

View file

@ -31,21 +31,24 @@ void Transmitter::resetLevels() {
} }
void Transmitter::processIncomingData(unsigned char* packetData, int numBytes) { void Transmitter::processIncomingData(unsigned char* packetData, int numBytes) {
if (numBytes >= 3 + sizeof(_lastRotationRate) + const int PACKET_HEADER_SIZE = 1; // Packet's first byte is 'T'
sizeof(_lastAcceleration) + sizeof(_touchState)) { const int ROTATION_MARKER_SIZE = 1; // 'R' = Rotation (clockwise about x,y,z)
unsigned char* ptr = &packetData[2]; const int ACCELERATION_MARKER_SIZE = 1; // 'A' = Acceleration (x,y,z)
memcpy(&_lastRotationRate, ptr, sizeof(_lastRotationRate)); if (numBytes == PACKET_HEADER_SIZE + ROTATION_MARKER_SIZE + ACCELERATION_MARKER_SIZE
ptr += sizeof(_lastRotationRate) + 1; + sizeof(_lastRotationRate) + sizeof(_lastAcceleration)
memcpy(&_lastAcceleration, ptr, sizeof(_lastAcceleration)); + sizeof(_touchState.x) + sizeof(_touchState.y) + sizeof(_touchState.state)) {
ptr += sizeof(_lastAcceleration); unsigned char* packetDataPosition = &packetData[PACKET_HEADER_SIZE + ROTATION_MARKER_SIZE];
memcpy(&_touchState, ptr, sizeof(_touchState)); memcpy(&_lastRotationRate, packetDataPosition, sizeof(_lastRotationRate));
ptr += sizeof(_touchState); packetDataPosition += sizeof(_lastRotationRate) + ACCELERATION_MARKER_SIZE;
if (_touchState == 'D') { memcpy(&_lastAcceleration, packetDataPosition, sizeof(_lastAcceleration));
memcpy(&_touchPoint, ptr, sizeof(_touchPoint)); packetDataPosition += sizeof(_lastAcceleration);
ptr += sizeof(_touchPoint); memcpy(&_touchState.state, packetDataPosition, sizeof(_touchState.state));
} else { packetDataPosition += sizeof(_touchState.state);
_touchPoint[0] = _touchPoint[1] = 0; memcpy(&_touchState.x, packetDataPosition, sizeof(_touchState.x));
} packetDataPosition += sizeof(_touchState.x);
memcpy(&_touchState.y, packetDataPosition, sizeof(_touchState.y));
packetDataPosition += sizeof(_touchState.y);
// Update estimated absolute position from rotation rates // Update estimated absolute position from rotation rates
_estimatedRotation += _lastRotationRate * DELTA_TIME; _estimatedRotation += _lastRotationRate * DELTA_TIME;

View file

@ -15,6 +15,11 @@
#include <cstring> #include <cstring>
#include "world.h" #include "world.h"
struct TouchState {
uint16_t x, y;
char state;
};
class Transmitter class Transmitter
{ {
public: public:
@ -26,8 +31,7 @@ public:
const glm::vec3 getLastRotationRate() const { return _lastRotationRate; }; const glm::vec3 getLastRotationRate() const { return _lastRotationRate; };
const glm::vec3 getLastAcceleration() const { return _lastRotationRate; }; const glm::vec3 getLastAcceleration() const { return _lastRotationRate; };
const glm::vec3 getEstimatedRotation() const { return _estimatedRotation; }; const glm::vec3 getEstimatedRotation() const { return _estimatedRotation; };
const uint16_t* getTouchPoint() const { return _touchPoint; }; const TouchState* getTouchState() const { return &_touchState; };
const char getTouchState() const { return _touchState; };
void processIncomingData(unsigned char* packetData, int numBytes); void processIncomingData(unsigned char* packetData, int numBytes);
private: private:
@ -35,8 +39,7 @@ private:
glm::vec3 _lastRotationRate; glm::vec3 _lastRotationRate;
glm::vec3 _lastAcceleration; glm::vec3 _lastAcceleration;
glm::vec3 _estimatedRotation; glm::vec3 _estimatedRotation;
uint16_t _touchPoint[2]; TouchState _touchState;
char _touchState;
#endif /* defined(__hifi__Transmitter__) */ #endif /* defined(__hifi__Transmitter__) */
}; };