mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
check for null entities in grab, add conversion for old userdata cloneable
This commit is contained in:
parent
7f4e9a0089
commit
604b3cac1c
2 changed files with 27 additions and 5 deletions
|
@ -2478,6 +2478,26 @@ bool EntityTree::readFromMap(QVariantMap& map) {
|
|||
}
|
||||
}
|
||||
|
||||
// Convert old cloneable entities so they use cloneableData instead of userData
|
||||
if (contentVersion < (int)EntityVersion::CloneableData) {
|
||||
QJsonObject userData = QJsonDocument::fromJson(properties.getUserData().toUtf8()).object();
|
||||
QJsonObject grabbableKey = userData["grabbableKey"].toObject();
|
||||
QJsonValue cloneable = grabbableKey["cloneable"];
|
||||
if (cloneable.isBool() && cloneable.toBool()) {
|
||||
QJsonValue cloneLifetime = grabbableKey["cloneLifetime"];
|
||||
QJsonValue cloneLimit = grabbableKey["cloneLimit"];
|
||||
QJsonValue cloneDynamic = grabbableKey["cloneDynamic"];
|
||||
QJsonValue cloneAvatarEntity = grabbableKey["cloneAvatarEntity"];
|
||||
|
||||
// This is cloneable, we need to convert the properties
|
||||
properties.setCloneable(true);
|
||||
properties.setCloneLifetime(cloneLifetime.toInt());
|
||||
properties.setCloneLimit(cloneLimit.toInt());
|
||||
properties.setCloneDynamic(cloneDynamic.toBool());
|
||||
properties.setCloneAvatarEntity(cloneAvatarEntity.toBool());
|
||||
}
|
||||
}
|
||||
|
||||
EntityItemPointer entity = addEntity(entityItemID, properties);
|
||||
if (!entity) {
|
||||
qCDebug(entities) << "adding Entity failed:" << entityItemID << properties.getType();
|
||||
|
|
|
@ -339,11 +339,13 @@ Script.include("/~/system/libraries/cloneEntityUtils.js");
|
|||
if (targetCloneable) {
|
||||
if (this.cloneAllowed) {
|
||||
var cloneID = cloneEntity(targetProps);
|
||||
var cloneProps = Entities.getEntityProperties(cloneID);
|
||||
this.grabbing = true;
|
||||
this.targetEntityID = cloneID;
|
||||
this.startNearParentingGrabEntity(controllerData, cloneProps);
|
||||
this.cloneAllowed = false; // prevent another clone call until inputs released
|
||||
if (cloneID !== null) {
|
||||
var cloneProps = Entities.getEntityProperties(cloneID);
|
||||
this.grabbing = true;
|
||||
this.targetEntityID = cloneID;
|
||||
this.startNearParentingGrabEntity(controllerData, cloneProps);
|
||||
this.cloneAllowed = false; // prevent another clone call until inputs released
|
||||
}
|
||||
}
|
||||
} else if (targetProps) {
|
||||
this.grabbing = true;
|
||||
|
|
Loading…
Reference in a new issue