adjust avatar-energy code to avoid editing local tree and then not telling the entity-server about it

This commit is contained in:
Seth Alves 2016-02-17 14:36:18 -08:00
parent 784dc2b538
commit af1640ac4e

View file

@ -133,11 +133,8 @@ QUuid EntityScriptingInterface::addEntity(const EntityItemProperties& properties
float cost = calculateCost(density * volume, 0, newVelocity); float cost = calculateCost(density * volume, 0, newVelocity);
cost *= costMultiplier; cost *= costMultiplier;
if(cost > _currentAvatarEnergy) { if (cost > _currentAvatarEnergy) {
return QUuid(); return QUuid();
} else {
//debit the avatar energy and continue
emit debitEnergySource(cost);
} }
EntityItemID id = EntityItemID(QUuid::createUuid()); EntityItemID id = EntityItemID(QUuid::createUuid());
@ -173,6 +170,7 @@ QUuid EntityScriptingInterface::addEntity(const EntityItemProperties& properties
// queue the packet // queue the packet
if (success) { if (success) {
emit debitEnergySource(cost);
queueEntityMessage(PacketType::EntityAdd, id, propertiesWithSimID); queueEntityMessage(PacketType::EntityAdd, id, propertiesWithSimID);
} }
@ -247,7 +245,7 @@ QUuid EntityScriptingInterface::editEntity(QUuid id, const EntityItemProperties&
float cost = calculateCost(density * volume, oldVelocity, newVelocity); float cost = calculateCost(density * volume, oldVelocity, newVelocity);
cost *= costMultiplier; cost *= costMultiplier;
if(cost > _currentAvatarEnergy) { if (cost > _currentAvatarEnergy) {
return QUuid(); return QUuid();
} else { } else {
//debit the avatar energy and continue //debit the avatar energy and continue
@ -284,17 +282,19 @@ QUuid EntityScriptingInterface::editEntity(QUuid id, const EntityItemProperties&
} }
} }
properties = convertLocationFromScriptSemantics(properties); properties = convertLocationFromScriptSemantics(properties);
updatedEntity = _entityTree->updateEntity(entityID, properties);
float cost = calculateCost(density * volume, oldVelocity, newVelocity); float cost = calculateCost(density * volume, oldVelocity, newVelocity);
cost *= costMultiplier; cost *= costMultiplier;
if(cost > _currentAvatarEnergy) { if (cost > _currentAvatarEnergy) {
updatedEntity = false; updatedEntity = false;
} else { } else {
//debit the avatar energy and continue //debit the avatar energy and continue
updatedEntity = _entityTree->updateEntity(entityID, properties);
if (updatedEntity) {
emit debitEnergySource(cost); emit debitEnergySource(cost);
} }
}
}); });
if (!updatedEntity) { if (!updatedEntity) {
@ -378,7 +378,8 @@ void EntityScriptingInterface::deleteEntity(QUuid id) {
float cost = calculateCost(density * volume, velocity, 0); float cost = calculateCost(density * volume, velocity, 0);
cost *= costMultiplier; cost *= costMultiplier;
if(cost > _currentAvatarEnergy) { if (cost > _currentAvatarEnergy) {
shouldDelete = false;
return; return;
} else { } else {
//debit the avatar energy and continue //debit the avatar energy and continue