Merge remote-tracking branch 'origin'

This commit is contained in:
Philip Rosedale 2013-03-26 17:33:21 -07:00
commit ef9c704bb1
6 changed files with 65 additions and 41 deletions

View file

@ -316,11 +316,6 @@ void init(void)
}
myHead.setPos(start_location);
char output[] = "I";
char address[] = "10.0.0.10";
agentList.getAgentSocket().send(address, 40106, output, 1);
#ifdef MARKER_CAPTURE
if(marker_capture_enabled){
marker_capturer.position_updated(&position_updated);

34
shared/src/MarkerNode.cpp Normal file
View file

@ -0,0 +1,34 @@
//
// MarkerNode.cpp
// hifi
//
// Created by Stephen Birarda on 3/26/13.
//
//
#include "MarkerNode.h"
MarkerNode::MarkerNode() {
for (int i = 0; i < 8; i++) {
children[i] = NULL;
}
visitedMask = 0;
}
MarkerNode::~MarkerNode() {
for (int i = 0; i < 8; i++) {
delete children[i];
}
}
MarkerNode::MarkerNode(const MarkerNode &otherMarkerNode) {
visitedMask = otherMarkerNode.visitedMask;
// recursively copy the children marker nodes
for (int i = 0; i < 8; i++) {
if (children[i] != NULL) {
children[i] = new MarkerNode(*otherMarkerNode.children[i]);
}
}
}

24
shared/src/MarkerNode.h Normal file
View file

@ -0,0 +1,24 @@
//
// MarkerNode.h
// hifi
//
// Created by Stephen Birarda on 3/26/13.
//
//
#ifndef __hifi__MarkerNode__
#define __hifi__MarkerNode__
#include <iostream>
class MarkerNode {
public:
MarkerNode();
~MarkerNode();
MarkerNode(const MarkerNode &otherMarkerNode);
unsigned char childrenVisitedMask;
MarkerNode *children[8];
};
#endif /* defined(__hifi__MarkerNode__) */

View file

@ -12,15 +12,17 @@
VoxelAgentData::VoxelAgentData() {
lastSentLevel = 0;
rootMarkerNode = new MarkerNode();
}
VoxelAgentData::~VoxelAgentData() {
// nothing to explicitly destroy here
delete rootMarkerNode;
}
VoxelAgentData::VoxelAgentData(const VoxelAgentData &otherAgentData) {
lastSentLevel = otherAgentData.lastSentLevel;
memcpy(position, otherAgentData.position, sizeof(float) * 3);
rootMarkerNode = new MarkerNode(*otherAgentData.rootMarkerNode);
}
VoxelAgentData* VoxelAgentData::clone() const {

View file

@ -9,13 +9,15 @@
#ifndef __hifi__VoxelAgentData__
#define __hifi__VoxelAgentData__
#include <AgentData.h>
#include <iostream>
#include <AgentData.h>
#include "MarkerNode.h"
class VoxelAgentData : public AgentData {
public:
float position[3];
int lastSentLevel;
MarkerNode *rootMarkerNode;
VoxelAgentData();
~VoxelAgentData();

View file

@ -144,41 +144,8 @@ int main(int argc, const char * argv[])
agentList.increaseAgentId();
}
// parse this agent's position
agentList.updateAgentWithData(&agentPublicAddress, (void *)packetData, receivedBytes);
VoxelAgentData *agentData = (VoxelAgentData *) agentList.getAgents()[agentList.indexOfMatchingAgent(&agentPublicAddress)].getLinkedData();
int newLevel = 10;
if (newLevel > agentData->lastSentLevel) {
// the agent has already received a deeper level than this from us
// do nothing
stopOctal = randomTree.rootNode->octalCode;
packetCount = 0;
totalBytesSent = 0;
randomTree.leavesWrittenToBitstream = 0;
while (stopOctal != NULL) {
voxelPacketEnd = voxelPacket;
stopOctal = randomTree.loadBitstreamBuffer(voxelPacketEnd,
stopOctal,
randomTree.rootNode,
newLevel);
agentList.getAgentSocket().send((sockaddr *)&agentPublicAddress,
voxelPacket,
voxelPacketEnd - voxelPacket);
packetCount++;
totalBytesSent += voxelPacketEnd - voxelPacket;
}
printf("%d packets sent to client totalling %d bytes\n", packetCount, totalBytesSent);
printf("%d leaves were sent - %f bpv\n",
randomTree.leavesWrittenToBitstream,
(float)totalBytesSent / randomTree.leavesWrittenToBitstream);
agentData->lastSentLevel = newLevel;
}
}
}
}