mirror of
https://github.com/overte-org/overte.git
synced 2025-07-24 14:05:34 +02:00
improve terse entity logging. change how action data sending is triggered
This commit is contained in:
parent
d043011a11
commit
5e4f30b2bb
4 changed files with 91 additions and 10 deletions
|
@ -17,6 +17,7 @@
|
||||||
#include "OctreeSendThread.h"
|
#include "OctreeSendThread.h"
|
||||||
#include "OctreeServer.h"
|
#include "OctreeServer.h"
|
||||||
#include "OctreeServerConsts.h"
|
#include "OctreeServerConsts.h"
|
||||||
|
#include "OctreeLogging.h"
|
||||||
|
|
||||||
quint64 startSceneSleepTime = 0;
|
quint64 startSceneSleepTime = 0;
|
||||||
quint64 endSceneSleepTime = 0;
|
quint64 endSceneSleepTime = 0;
|
||||||
|
@ -571,9 +572,9 @@ int OctreeSendThread::packetDistributor(OctreeQueryNode* nodeData, bool viewFrus
|
||||||
|
|
||||||
|
|
||||||
if (somethingToSend) {
|
if (somethingToSend) {
|
||||||
qDebug() << "Hit PPS Limit, packetsSentThisInterval =" << packetsSentThisInterval
|
qCDebug(octree) << "Hit PPS Limit, packetsSentThisInterval =" << packetsSentThisInterval
|
||||||
<< " maxPacketsPerInterval = " << maxPacketsPerInterval
|
<< " maxPacketsPerInterval = " << maxPacketsPerInterval
|
||||||
<< " clientMaxPacketsPerInterval = " << clientMaxPacketsPerInterval;
|
<< " clientMaxPacketsPerInterval = " << clientMaxPacketsPerInterval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1770,6 +1770,7 @@ void EntityItem::serializeActions(bool& success, QByteArray& result) const {
|
||||||
serializedActionsStream << serializedActions;
|
serializedActionsStream << serializedActions;
|
||||||
|
|
||||||
if (result.size() >= _maxActionsDataSize) {
|
if (result.size() >= _maxActionsDataSize) {
|
||||||
|
qDebug() << "EntityItem::serializeActions size is too large -- " << result.size() << ">=" << _maxActionsDataSize;
|
||||||
success = false;
|
success = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -611,7 +611,8 @@ QUuid EntityScriptingInterface::addAction(const QString& actionTypeString,
|
||||||
const QVariantMap& arguments) {
|
const QVariantMap& arguments) {
|
||||||
QUuid actionID = QUuid::createUuid();
|
QUuid actionID = QUuid::createUuid();
|
||||||
auto actionFactory = DependencyManager::get<EntityActionFactoryInterface>();
|
auto actionFactory = DependencyManager::get<EntityActionFactoryInterface>();
|
||||||
bool success = actionWorker(entityID, [&](EntitySimulation* simulation, EntityItemPointer entity) {
|
bool success = true;
|
||||||
|
actionWorker(entityID, [&](EntitySimulation* simulation, EntityItemPointer entity) {
|
||||||
// create this action even if the entity doesn't have physics info. it will often be the
|
// create this action even if the entity doesn't have physics info. it will often be the
|
||||||
// case that a script adds an action immediately after an object is created, and the physicsInfo
|
// case that a script adds an action immediately after an object is created, and the physicsInfo
|
||||||
// is computed asynchronously.
|
// is computed asynchronously.
|
||||||
|
@ -620,17 +621,18 @@ QUuid EntityScriptingInterface::addAction(const QString& actionTypeString,
|
||||||
// }
|
// }
|
||||||
EntityActionType actionType = EntityActionInterface::actionTypeFromString(actionTypeString);
|
EntityActionType actionType = EntityActionInterface::actionTypeFromString(actionTypeString);
|
||||||
if (actionType == ACTION_TYPE_NONE) {
|
if (actionType == ACTION_TYPE_NONE) {
|
||||||
|
success = false;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
EntityActionPointer action = actionFactory->factory(actionType, actionID, entity, arguments);
|
EntityActionPointer action = actionFactory->factory(actionType, actionID, entity, arguments);
|
||||||
if (action) {
|
if (action) {
|
||||||
entity->addAction(simulation, action);
|
success = entity->addAction(simulation, action);
|
||||||
auto nodeList = DependencyManager::get<NodeList>();
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
const QUuid myNodeID = nodeList->getSessionUUID();
|
const QUuid myNodeID = nodeList->getSessionUUID();
|
||||||
if (entity->getSimulatorID() != myNodeID) {
|
if (entity->getSimulatorID() != myNodeID) {
|
||||||
entity->flagForOwnership();
|
entity->flagForOwnership();
|
||||||
}
|
}
|
||||||
return true;
|
return false; // Physics will cause a packet to be sent, so don't send from here.
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
@ -656,9 +658,12 @@ bool EntityScriptingInterface::updateAction(const QUuid& entityID, const QUuid&
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EntityScriptingInterface::deleteAction(const QUuid& entityID, const QUuid& actionID) {
|
bool EntityScriptingInterface::deleteAction(const QUuid& entityID, const QUuid& actionID) {
|
||||||
return actionWorker(entityID, [&](EntitySimulation* simulation, EntityItemPointer entity) {
|
bool success = false;
|
||||||
return entity->removeAction(simulation, actionID);
|
actionWorker(entityID, [&](EntitySimulation* simulation, EntityItemPointer entity) {
|
||||||
|
success = entity->removeAction(simulation, actionID);
|
||||||
|
return false; // Physics will cause a packet to be sent, so don't send from here.
|
||||||
});
|
});
|
||||||
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
QVector<QUuid> EntityScriptingInterface::getActionIDs(const QUuid& entityID) {
|
QVector<QUuid> EntityScriptingInterface::getActionIDs(const QUuid& entityID) {
|
||||||
|
|
|
@ -612,6 +612,14 @@ EntityItemPointer EntityTree::findEntityByEntityItemID(const EntityItemID& entit
|
||||||
}
|
}
|
||||||
|
|
||||||
void EntityTree::fixupTerseEditLogging(EntityItemProperties& properties, QList<QString>& changedProperties) {
|
void EntityTree::fixupTerseEditLogging(EntityItemProperties& properties, QList<QString>& changedProperties) {
|
||||||
|
static quint64 lastTerseLog = 0;
|
||||||
|
quint64 now = usecTimestampNow();
|
||||||
|
|
||||||
|
if (now - lastTerseLog > USECS_PER_SECOND) {
|
||||||
|
qCDebug(entities) << "-------------------------";
|
||||||
|
}
|
||||||
|
lastTerseLog = now;
|
||||||
|
|
||||||
if (properties.simulationOwnerChanged()) {
|
if (properties.simulationOwnerChanged()) {
|
||||||
int simIndex = changedProperties.indexOf("simulationOwner");
|
int simIndex = changedProperties.indexOf("simulationOwner");
|
||||||
if (simIndex >= 0) {
|
if (simIndex >= 0) {
|
||||||
|
@ -619,6 +627,70 @@ void EntityTree::fixupTerseEditLogging(EntityItemProperties& properties, QList<Q
|
||||||
changedProperties[simIndex] = QString("simulationOwner:") + QString::number((int)simOwner.getPriority());
|
changedProperties[simIndex] = QString("simulationOwner:") + QString::number((int)simOwner.getPriority());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (properties.velocityChanged()) {
|
||||||
|
int index = changedProperties.indexOf("velocity");
|
||||||
|
if (index >= 0) {
|
||||||
|
glm::vec3 value = properties.getVelocity();
|
||||||
|
QString changeHint = "0";
|
||||||
|
if (value.x + value.y + value.z > 0) {
|
||||||
|
changeHint = "+";
|
||||||
|
} else if (value.x + value.y + value.z < 0) {
|
||||||
|
changeHint = "-";
|
||||||
|
}
|
||||||
|
changedProperties[index] = QString("velocity:") + changeHint;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (properties.gravityChanged()) {
|
||||||
|
int index = changedProperties.indexOf("gravity");
|
||||||
|
if (index >= 0) {
|
||||||
|
glm::vec3 value = properties.getGravity();
|
||||||
|
QString changeHint = "0";
|
||||||
|
if (value.x + value.y + value.z > 0) {
|
||||||
|
changeHint = "+";
|
||||||
|
} else if (value.x + value.y + value.z < 0) {
|
||||||
|
changeHint = "-";
|
||||||
|
}
|
||||||
|
changedProperties[index] = QString("gravity:") + changeHint;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (properties.actionDataChanged()) {
|
||||||
|
int index = changedProperties.indexOf("actionData");
|
||||||
|
if (index >= 0) {
|
||||||
|
QByteArray value = properties.getActionData();
|
||||||
|
QString changeHint = "0";
|
||||||
|
if (value.size() > 0) {
|
||||||
|
changeHint = "+";
|
||||||
|
}
|
||||||
|
changedProperties[index] = QString("actionData:") + changeHint;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (properties.ignoreForCollisionsChanged()) {
|
||||||
|
int index = changedProperties.indexOf("ignoreForCollisions");
|
||||||
|
if (index >= 0) {
|
||||||
|
bool value = properties.getIgnoreForCollisions();
|
||||||
|
QString changeHint = "0";
|
||||||
|
if (value) {
|
||||||
|
changeHint = "1";
|
||||||
|
}
|
||||||
|
changedProperties[index] = QString("ignoreForCollisions:") + changeHint;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (properties.collisionsWillMoveChanged()) {
|
||||||
|
int index = changedProperties.indexOf("collisionsWillMove");
|
||||||
|
if (index >= 0) {
|
||||||
|
bool value = properties.getCollisionsWillMove();
|
||||||
|
QString changeHint = "0";
|
||||||
|
if (value) {
|
||||||
|
changeHint = "1";
|
||||||
|
}
|
||||||
|
changedProperties[index] = QString("collisionsWillMove:") + changeHint;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int EntityTree::processEditPacketData(NLPacket& packet, const unsigned char* editData, int maxLength,
|
int EntityTree::processEditPacketData(NLPacket& packet, const unsigned char* editData, int maxLength,
|
||||||
|
@ -673,7 +745,9 @@ int EntityTree::processEditPacketData(NLPacket& packet, const unsigned char* edi
|
||||||
if (wantTerseEditLogging()) {
|
if (wantTerseEditLogging()) {
|
||||||
QList<QString> changedProperties = properties.listChangedProperties();
|
QList<QString> changedProperties = properties.listChangedProperties();
|
||||||
fixupTerseEditLogging(properties, changedProperties);
|
fixupTerseEditLogging(properties, changedProperties);
|
||||||
qCDebug(entities) << "edit" << entityItemID.toString() << changedProperties;
|
QString itemName =
|
||||||
|
existingEntity->getName() != "" ? existingEntity->getName() : entityItemID.toString();
|
||||||
|
qCDebug(entities) << "edit" << itemName << changedProperties;
|
||||||
}
|
}
|
||||||
endLogging = usecTimestampNow();
|
endLogging = usecTimestampNow();
|
||||||
|
|
||||||
|
@ -703,7 +777,7 @@ int EntityTree::processEditPacketData(NLPacket& packet, const unsigned char* edi
|
||||||
if (wantTerseEditLogging()) {
|
if (wantTerseEditLogging()) {
|
||||||
QList<QString> changedProperties = properties.listChangedProperties();
|
QList<QString> changedProperties = properties.listChangedProperties();
|
||||||
fixupTerseEditLogging(properties, changedProperties);
|
fixupTerseEditLogging(properties, changedProperties);
|
||||||
qCDebug(entities) << "add" << entityItemID.toString() << changedProperties;
|
qCDebug(entities) << "add" << entityItemID << changedProperties;
|
||||||
}
|
}
|
||||||
endLogging = usecTimestampNow();
|
endLogging = usecTimestampNow();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue