diff --git a/assignment-server/src/main.cpp b/assignment-server/src/main.cpp index 6cf7ddc952..374009b917 100644 --- a/assignment-server/src/main.cpp +++ b/assignment-server/src/main.cpp @@ -10,13 +10,17 @@ #include #include +#include + #include #include #include const int MAX_PACKET_SIZE_BYTES = 1400; -struct Assignment {}; +struct Assignment { + QString scriptFilename; +}; int main(int argc, const char* argv[]) { @@ -29,27 +33,46 @@ int main(int argc, const char* argv[]) { UDPSocket serverSocket(ASSIGNMENT_SERVER_PORT); int numHeaderBytes = numBytesForPacketHeader((unsigned char*) &PACKET_TYPE_SEND_ASSIGNMENT); - unsigned char assignmentPacket[numHeaderBytes + sizeof(char)]; + unsigned char assignmentPacket[MAX_PACKET_SIZE_BYTES]; populateTypeAndVersion(assignmentPacket, PACKET_TYPE_SEND_ASSIGNMENT); while (true) { if (serverSocket.receive((sockaddr*) &senderSocket, &senderData, &receivedBytes)) { - // int numHeaderBytes = numBytesForPacketHeader(senderData); + int numHeaderBytes = numBytesForPacketHeader(senderData); - if (senderData[0] == PACKET_TYPE_REQUEST_ASSIGNMENT) { + if (senderData[0] == PACKET_TYPE_REQUEST_ASSIGNMENT) { + qDebug() << "Assignment request received.\n"; // grab the FI assignment in the queue, if it exists if (assignmentQueue.size() > 0) { - // Assignment firstAssignment = assignmentQueue.front(); + Assignment firstAssignment = assignmentQueue.front(); assignmentQueue.pop(); + + QString scriptURL = QString("http://base8-compute.s3.amazonaws.com/%1").arg(firstAssignment.scriptFilename); + + qDebug() << "Sending assignment with URL" << scriptURL << "\n"; + + int scriptURLBytes = scriptURL.size(); + memcpy(assignmentPacket + numHeaderBytes, scriptURL.toLocal8Bit().constData(), scriptURLBytes); // send the assignment - serverSocket.send((sockaddr*) &senderSocket, assignmentPacket, sizeof(assignmentPacket)); + serverSocket.send((sockaddr*) &senderSocket, assignmentPacket, numHeaderBytes + scriptURLBytes); } } else if (senderData[0] == PACKET_TYPE_SEND_ASSIGNMENT) { Assignment newAssignment; + senderData[receivedBytes] = '\0'; + newAssignment.scriptFilename = QString((const char*)senderData + numHeaderBytes); + + qDebug() << "Added an assignment with script with filename" << newAssignment.scriptFilename << "\n"; + // add this assignment to the queue + + // we're not a queue right now, only keep one assignment + if (assignmentQueue.size() > 0) { + assignmentQueue.pop(); + } + assignmentQueue.push(newAssignment); } } diff --git a/hifi.podspec b/hifi.podspec index a14381ffb4..e721ada8f9 100644 --- a/hifi.podspec +++ b/hifi.podspec @@ -51,6 +51,11 @@ Pod::Spec.new do |s| sp.dependency 'glm' end + s.subspec "voxels" do |sp| + sp.source_files = 'libraries/voxels/src', 'libraries/voxels/moc_*' + sp.dependency 'glm' + end + s.xcconfig = { 'HEADER_SEARCH_PATHS' => '${PODS_ROOT}/../../qt5-device/qtbase/include' } s.libraries = 'libQtCoreCombined', 'libQt5Network', 'libQt5Script' diff --git a/libraries/avatars/src/Agent.cpp b/libraries/avatars/src/Agent.cpp index 156499430d..25a0a21d68 100644 --- a/libraries/avatars/src/Agent.cpp +++ b/libraries/avatars/src/Agent.cpp @@ -42,7 +42,7 @@ void Agent::run(QUrl scriptURL) { AvatarData *testAvatarData = new AvatarData; QScriptValue avatarDataValue = engine.newQObject(testAvatarData); - engine.globalObject().setProperty("AvatarData", avatarDataValue); + engine.globalObject().setProperty("Avatar", avatarDataValue); QScriptValue agentValue = engine.newQObject(this); engine.globalObject().setProperty("Agent", agentValue); @@ -55,7 +55,7 @@ void Agent::run(QUrl scriptURL) { timeval lastDomainServerCheckIn = {}; int numMicrosecondsSleep = 0; - const float DATA_SEND_INTERVAL_USECS = (1 / 60) * 1000 * 1000; + const float DATA_SEND_INTERVAL_USECS = (1 / 60.0f) * 1000 * 1000; sockaddr_in senderAddress; unsigned char receivedData[MAX_PACKET_SIZE]; diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index a02c55346c..796e5e5884 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -52,6 +52,38 @@ AvatarData::~AvatarData() { delete _handData; } +void AvatarData::setPositionFromVariantMap(QVariantMap positionMap) { + _position = glm::vec3(positionMap.value("x").toFloat(), + positionMap.value("y").toFloat(), + positionMap.value("z").toFloat()); +} + +QVariantMap AvatarData::getPositionVariantMap() { + QVariantMap positionMap; + + positionMap.insert("x", _position.x); + positionMap.insert("y", _position.y); + positionMap.insert("z", _position.z); + + return positionMap; +} + +void AvatarData::setHandPositionFromVariantMap(QVariantMap handPositionMap) { + _handPosition = glm::vec3(handPositionMap.value("x").toFloat(), + handPositionMap.value("y").toFloat(), + handPositionMap.value("z").toFloat()); +} + +QVariantMap AvatarData::getHandPositionVariantMap() { + QVariantMap positionMap; + + positionMap.insert("x", _handPosition.x); + positionMap.insert("y", _handPosition.y); + positionMap.insert("z", _handPosition.z); + + return positionMap; +} + void AvatarData::sendData() { // called from Agent visual loop to send data diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index bdcf74904e..c3def00140 100755 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -17,6 +17,7 @@ #include #include +#include #include #include "HeadData.h" @@ -41,7 +42,14 @@ enum KeyState class JointData; class AvatarData : public NodeData { - Q_OBJECT + Q_OBJECT + + Q_PROPERTY(QVariantMap position READ getPositionVariantMap WRITE setPositionFromVariantMap) + Q_PROPERTY(QVariantMap handPosition READ getHandPositionVariantMap WRITE setHandPositionFromVariantMap) + Q_PROPERTY(float bodyYaw READ getBodyYaw WRITE setBodyYaw) + Q_PROPERTY(float bodyPitch READ getBodyPitch WRITE setBodyPitch) + Q_PROPERTY(float bodyRoll READ getBodyRoll WRITE setBodyRoll) + Q_PROPERTY(QString chatMessage READ getQStringChatMessage WRITE setChatMessage) public: AvatarData(Node* owningNode = NULL); ~AvatarData(); @@ -51,15 +59,23 @@ public: void setPosition (const glm::vec3 position ) { _position = position; } void setHandPosition (const glm::vec3 handPosition ) { _handPosition = handPosition; } + void setPositionFromVariantMap(QVariantMap positionMap); + QVariantMap getPositionVariantMap(); + + void setHandPositionFromVariantMap(QVariantMap handPositionMap); + QVariantMap getHandPositionVariantMap(); + int getBroadcastData(unsigned char* destinationBuffer); int parseData(unsigned char* sourceBuffer, int numBytes); // Body Rotation float getBodyYaw() const { return _bodyYaw; } + void setBodyYaw(float bodyYaw) { _bodyYaw = bodyYaw; } float getBodyPitch() const { return _bodyPitch; } void setBodyPitch(float bodyPitch) { _bodyPitch = bodyPitch; } float getBodyRoll() const {return _bodyRoll; } void setBodyRoll(float bodyRoll) { _bodyRoll = bodyRoll; } + // Hand State void setHandState(char s) { _handState = s; }; @@ -89,7 +105,9 @@ public: // chat message void setChatMessage(const std::string& msg) { _chatMessage = msg; } - const std::string& chatMessage () const { return _chatMessage; } + void setChatMessage(const QString& string) { _chatMessage = string.toLocal8Bit().constData(); } + const std::string& setChatMessage() const { return _chatMessage; } + QString getQStringChatMessage() { return QString(_chatMessage.data()); } // related to Voxel Sending strategies bool getWantColor() const { return _wantColor; } @@ -107,8 +125,6 @@ public: void setHandData(HandData* handData) { _handData = handData; } public slots: - void setPosition(float x, float y, float z) { _position = glm::vec3(x, y, z); } - void setBodyYaw(float bodyYaw) { _bodyYaw = bodyYaw; } void sendData(); protected: diff --git a/libraries/shared/src/Node.cpp b/libraries/shared/src/Node.cpp index 7aebb0c022..c91626d99d 100644 --- a/libraries/shared/src/Node.cpp +++ b/libraries/shared/src/Node.cpp @@ -94,6 +94,8 @@ const char* Node::getTypeName() const { return NODE_TYPE_NAME_AUDIO_INJECTOR; case NODE_TYPE_ANIMATION_SERVER: return NODE_TYPE_NAME_ANIMATION_SERVER; + case NODE_TYPE_UNASSIGNED: + return NODE_TYPE_NAME_UNASSIGNED; default: return NODE_TYPE_NAME_UNKNOWN; } diff --git a/libraries/shared/src/NodeTypes.h b/libraries/shared/src/NodeTypes.h index aa4ae51ec5..a9deebf333 100644 --- a/libraries/shared/src/NodeTypes.h +++ b/libraries/shared/src/NodeTypes.h @@ -24,5 +24,6 @@ const NODE_TYPE NODE_TYPE_AUDIO_MIXER = 'M'; const NODE_TYPE NODE_TYPE_AVATAR_MIXER = 'W'; const NODE_TYPE NODE_TYPE_AUDIO_INJECTOR = 'A'; const NODE_TYPE NODE_TYPE_ANIMATION_SERVER = 'a'; +const NODE_TYPE NODE_TYPE_UNASSIGNED = 1; #endif diff --git a/libraries/voxels/src/CoverageMap.cpp b/libraries/voxels/src/CoverageMap.cpp index 634c67a71c..530581e5f5 100644 --- a/libraries/voxels/src/CoverageMap.cpp +++ b/libraries/voxels/src/CoverageMap.cpp @@ -8,7 +8,7 @@ #include -#include +#include #include diff --git a/libraries/voxels/src/CoverageMapV2.cpp b/libraries/voxels/src/CoverageMapV2.cpp index 0e382d7f12..1404dc5d15 100644 --- a/libraries/voxels/src/CoverageMapV2.cpp +++ b/libraries/voxels/src/CoverageMapV2.cpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include diff --git a/libraries/voxels/src/GeometryUtil.cpp b/libraries/voxels/src/GeometryUtil.cpp index 894f43ee3c..3360f68cfa 100644 --- a/libraries/voxels/src/GeometryUtil.cpp +++ b/libraries/voxels/src/GeometryUtil.cpp @@ -7,7 +7,7 @@ #include -#include +#include #include diff --git a/libraries/voxels/src/JurisdictionMap.cpp b/libraries/voxels/src/JurisdictionMap.cpp index f67bbbabf7..b452c12d14 100644 --- a/libraries/voxels/src/JurisdictionMap.cpp +++ b/libraries/voxels/src/JurisdictionMap.cpp @@ -6,9 +6,9 @@ // Copyright (c) 2013 High Fidelity, Inc. All rights reserved. // -#include -#include -#include +#include +#include +#include #include "JurisdictionMap.h" #include "VoxelNode.h" diff --git a/libraries/voxels/src/JurisdictionMap.h b/libraries/voxels/src/JurisdictionMap.h index 59e08e85e9..4bb3f5595f 100644 --- a/libraries/voxels/src/JurisdictionMap.h +++ b/libraries/voxels/src/JurisdictionMap.h @@ -10,7 +10,7 @@ #define __hifi__JurisdictionMap__ #include -#include +#include class JurisdictionMap { public: diff --git a/libraries/voxels/src/ViewFrustum.cpp b/libraries/voxels/src/ViewFrustum.cpp index ae48dbbe7d..f12608f5dd 100644 --- a/libraries/voxels/src/ViewFrustum.cpp +++ b/libraries/voxels/src/ViewFrustum.cpp @@ -12,7 +12,7 @@ #include -#include +#include #include "CoverageMap.h" #include "GeometryUtil.h" diff --git a/libraries/voxels/src/VoxelNode.cpp b/libraries/voxels/src/VoxelNode.cpp index 42b34dd542..7355e91243 100644 --- a/libraries/voxels/src/VoxelNode.cpp +++ b/libraries/voxels/src/VoxelNode.cpp @@ -10,7 +10,7 @@ #include #include -#include +#include #include diff --git a/libraries/voxels/src/VoxelProjectedPolygon.cpp b/libraries/voxels/src/VoxelProjectedPolygon.cpp index 8a39d7f358..a6336665ad 100644 --- a/libraries/voxels/src/VoxelProjectedPolygon.cpp +++ b/libraries/voxels/src/VoxelProjectedPolygon.cpp @@ -7,7 +7,7 @@ #include -#include +#include #include "GeometryUtil.h" #include "SharedUtil.h" diff --git a/libraries/voxels/src/VoxelTree.cpp b/libraries/voxels/src/VoxelTree.cpp index a327b561bb..c0fcee02dd 100644 --- a/libraries/voxels/src/VoxelTree.cpp +++ b/libraries/voxels/src/VoxelTree.cpp @@ -17,7 +17,7 @@ #include -#include +#include #include "CoverageMap.h" #include "GeometryUtil.h"