mirror of
https://github.com/overte-org/overte.git
synced 2025-08-11 14:42:03 +02:00
make it so assignment-clients runnings scripts can rez entities
This commit is contained in:
parent
c097a0038a
commit
2f36cd0fb0
5 changed files with 48 additions and 10 deletions
|
@ -504,7 +504,11 @@ void DomainServer::populateStaticScriptedAssignmentsFromSettings() {
|
|||
Assignment::AgentType,
|
||||
scriptPool);
|
||||
scriptAssignment->setPayload(scriptURL.toUtf8());
|
||||
|
||||
|
||||
// we want a script added by the domain owner to be able to do what it wants with entities.
|
||||
scriptAssignment->setCanRez(true);
|
||||
scriptAssignment->setCanAdjustLocks(true);
|
||||
|
||||
// add it to static hash so we know we have to keep giving it back out
|
||||
addStaticAssignmentToAssignmentHash(scriptAssignment);
|
||||
}
|
||||
|
@ -675,6 +679,12 @@ void DomainServer::handleConnectRequest(const QByteArray& packet, const HifiSock
|
|||
nodeData->setAssignmentUUID(matchingQueuedAssignment->getUUID());
|
||||
nodeData->setWalletUUID(pendingAssigneeData->getWalletUUID());
|
||||
|
||||
// always allow assignment clients to create and destroy entities
|
||||
nodeData->setCanAdjustLocks(true);
|
||||
nodeData->setCanRez(true);
|
||||
newNode->setCanAdjustLocks(true);
|
||||
newNode->setCanRez(true);
|
||||
|
||||
// now that we've pulled the wallet UUID and added the node to our list, delete the pending assignee data
|
||||
delete pendingAssigneeData;
|
||||
}
|
||||
|
@ -1052,7 +1062,9 @@ void DomainServer::readAvailableDatagrams() {
|
|||
|
||||
// add the information for that deployed assignment to the hash of pending assigned nodes
|
||||
PendingAssignedNodeData* pendingNodeData = new PendingAssignedNodeData(assignmentToDeploy->getUUID(),
|
||||
requestAssignment.getWalletUUID());
|
||||
requestAssignment.getWalletUUID(),
|
||||
true, true
|
||||
);
|
||||
_pendingAssignedNodes.insert(uniqueAssignment.getUUID(), pendingNodeData);
|
||||
} else {
|
||||
if (requestAssignment.getType() != Assignment::AgentType
|
||||
|
@ -2119,10 +2131,10 @@ SharedAssignmentPointer DomainServer::deployableAssignmentForRequest(const Assig
|
|||
Assignment* assignment = sharedAssignment->data();
|
||||
bool requestIsAllTypes = requestAssignment.getType() == Assignment::AllTypes;
|
||||
bool assignmentTypesMatch = assignment->getType() == requestAssignment.getType();
|
||||
bool nietherHasPool = assignment->getPool().isEmpty() && requestAssignment.getPool().isEmpty();
|
||||
bool neitherHasPool = assignment->getPool().isEmpty() && requestAssignment.getPool().isEmpty();
|
||||
bool assignmentPoolsMatch = assignment->getPool() == requestAssignment.getPool();
|
||||
|
||||
if ((requestIsAllTypes || assignmentTypesMatch) && (nietherHasPool || assignmentPoolsMatch)) {
|
||||
if ((requestIsAllTypes || assignmentTypesMatch) && (neitherHasPool || assignmentPoolsMatch)) {
|
||||
|
||||
// remove the assignment from the queue
|
||||
SharedAssignmentPointer deployableAssignment = _unfulfilledAssignments.takeAt(sharedAssignment
|
||||
|
|
|
@ -11,9 +11,12 @@
|
|||
|
||||
#include "PendingAssignedNodeData.h"
|
||||
|
||||
PendingAssignedNodeData::PendingAssignedNodeData(const QUuid& assignmentUUID, const QUuid& walletUUID) :
|
||||
PendingAssignedNodeData::PendingAssignedNodeData(const QUuid& assignmentUUID, const QUuid& walletUUID,
|
||||
bool canAdjustLocks, bool canRez) :
|
||||
_assignmentUUID(assignmentUUID),
|
||||
_walletUUID(walletUUID)
|
||||
_walletUUID(walletUUID),
|
||||
_canAdjustLocks(canAdjustLocks),
|
||||
_canRez(canRez)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,16 +18,25 @@
|
|||
class PendingAssignedNodeData : public QObject {
|
||||
Q_OBJECT
|
||||
public:
|
||||
PendingAssignedNodeData(const QUuid& assignmentUUID, const QUuid& walletUUID);
|
||||
PendingAssignedNodeData(const QUuid& assignmentUUID, const QUuid& walletUUID, bool canAdjustLocks, bool canRez);
|
||||
|
||||
void setAssignmentUUID(const QUuid& assignmentUUID) { _assignmentUUID = assignmentUUID; }
|
||||
const QUuid& getAssignmentUUID() const { return _assignmentUUID; }
|
||||
|
||||
void setWalletUUID(const QUuid& walletUUID) { _walletUUID = walletUUID; }
|
||||
const QUuid& getWalletUUID() const { return _walletUUID; }
|
||||
|
||||
void setCanAdjustLocks(bool canAdjustLocks) { _canAdjustLocks = canAdjustLocks; }
|
||||
bool getCanAdjustLocks() { return _canAdjustLocks; }
|
||||
|
||||
void setCanRez(bool canRez) { _canRez = canRez; }
|
||||
bool getCanRez() { return _canRez; }
|
||||
|
||||
private:
|
||||
QUuid _assignmentUUID;
|
||||
QUuid _walletUUID;
|
||||
bool _canAdjustLocks = false; /// will this node be allowed to adjust locks on entities?
|
||||
bool _canRez = false; /// will this node be allowed to rez in new entities?
|
||||
};
|
||||
|
||||
#endif // hifi_PendingAssignedNodeData_h
|
||||
#endif // hifi_PendingAssignedNodeData_h
|
||||
|
|
|
@ -153,6 +153,8 @@ QDataStream& operator<<(QDataStream &out, const Assignment& assignment) {
|
|||
if (assignment._command == Assignment::RequestCommand) {
|
||||
out << assignment._walletUUID;
|
||||
}
|
||||
|
||||
out << assignment._canAdjustLocks << assignment._canRez;
|
||||
|
||||
return out;
|
||||
}
|
||||
|
@ -167,6 +169,8 @@ QDataStream& operator>>(QDataStream &in, Assignment& assignment) {
|
|||
if (assignment._command == Assignment::RequestCommand) {
|
||||
in >> assignment._walletUUID;
|
||||
}
|
||||
|
||||
|
||||
in >> assignment._canAdjustLocks >> assignment._canRez;
|
||||
|
||||
return in;
|
||||
}
|
||||
|
|
|
@ -26,8 +26,18 @@ public:
|
|||
|
||||
QMutex& getMutex() { return _mutex; }
|
||||
|
||||
void setCanAdjustLocks(bool canAdjustLocks) { _canAdjustLocks = canAdjustLocks; }
|
||||
bool getCanAdjustLocks() { return _canAdjustLocks; }
|
||||
|
||||
void setCanRez(bool canRez) { _canRez = canRez; }
|
||||
bool getCanRez() { return _canRez; }
|
||||
|
||||
private:
|
||||
QMutex _mutex;
|
||||
|
||||
protected:
|
||||
bool _canAdjustLocks = false; /// will this node be allowed to adjust locks on entities?
|
||||
bool _canRez = false; /// will this node be allowed to rez in new entities?
|
||||
};
|
||||
|
||||
#endif // hifi_NodeData_h
|
||||
|
|
Loading…
Reference in a new issue