diff --git a/engine/server/library/serverGame/src/shared/object/IntangibleObject.cpp b/engine/server/library/serverGame/src/shared/object/IntangibleObject.cpp index 0f21840a..6d7b57c4 100644 --- a/engine/server/library/serverGame/src/shared/object/IntangibleObject.cpp +++ b/engine/server/library/serverGame/src/shared/object/IntangibleObject.cpp @@ -404,7 +404,7 @@ void IntangibleObject::onPermanentlyDestroyed() * Persists this object in the database. Will also persist all the objects it * is keeping track of. */ -void IntangibleObject::persist() +bool IntangibleObject::persist() { if (isAuthoritative() && isTheater()) { @@ -412,11 +412,11 @@ void IntangibleObject::persist() { // we are not finished creating our objects, prevent persistance WARNING(true, ("IntangibleObject::persist called before all objects created")); - return; + return false; } if (isPersisted()) - return; + return true; ServerObject::persist(); @@ -470,9 +470,15 @@ void IntangibleObject::persist() } } + return true; + } - else + else { ServerObject::persist(); + return true; + } + + return false; } // IntangibleObject::persist //------------------------------------------------------------------------------------------ diff --git a/engine/server/library/serverGame/src/shared/object/IntangibleObject.h b/engine/server/library/serverGame/src/shared/object/IntangibleObject.h index 1d5a0b85..fc2d4cd4 100644 --- a/engine/server/library/serverGame/src/shared/object/IntangibleObject.h +++ b/engine/server/library/serverGame/src/shared/object/IntangibleObject.h @@ -44,7 +44,7 @@ public: virtual float alter(float time); virtual void onPermanentlyDestroyed(); - virtual void persist(); + virtual bool persist(); virtual bool isVisibleOnClient (const Client & client) const; virtual void getAttributes (stdvector >::fwd &data) const; virtual bool onContainerAboutToTransfer(ServerObject * destination, ServerObject* transferer); diff --git a/engine/server/library/serverGame/src/shared/object/ServerObject.cpp b/engine/server/library/serverGame/src/shared/object/ServerObject.cpp index c2856c47..c830ff31 100644 --- a/engine/server/library/serverGame/src/shared/object/ServerObject.cpp +++ b/engine/server/library/serverGame/src/shared/object/ServerObject.cpp @@ -3214,11 +3214,11 @@ void ServerObject::onRemovedFromTriggerVolume(TriggerVolume & triggerVolume) * After this function is called, changes to this object will be sent to the database. */ -void ServerObject::persist() +bool ServerObject::persist() { // Do not persist buildout objects (buildout objects have negative networkIds) if (getNetworkId() < NetworkId::cms_invalid) - return; + return false; if (isAuthoritative()) { @@ -3232,7 +3232,7 @@ void ServerObject::persist() if (!contained && !isPlayerControlled() && getPosition_p() != Vector::zero) { WARNING_STRICT_FATAL(true, ("Tried to persist non-player object %s in a space scene away from the origin (not persisting).", getDebugInformation().c_str())); - return; + return false; } } else @@ -3257,11 +3257,15 @@ void ServerObject::persist() PositionUpdateTracker::sendPositionUpdate(*this); } + + return true; } else { sendControllerMessageToAuthServer(CM_persistObject, 0); } + + return false; } // ---------------------------------------------------------------------- diff --git a/engine/server/library/serverGame/src/shared/object/ServerObject.h b/engine/server/library/serverGame/src/shared/object/ServerObject.h index e20e0e8e..32192ce3 100644 --- a/engine/server/library/serverGame/src/shared/object/ServerObject.h +++ b/engine/server/library/serverGame/src/shared/object/ServerObject.h @@ -297,7 +297,7 @@ public: bool isInEndBaselines() const; bool isNeedingPobFixup() const; bool permanentlyDestroy (DeleteReasons::Enumerator reason); - virtual void persist (); + virtual bool persist (); virtual void onRemovingFromWorld (); virtual void unload (); void moveToPlayerAndUnload (const NetworkId &player); diff --git a/engine/server/library/serverScript/src/shared/ScriptMethodsObjectCreate.cpp b/engine/server/library/serverScript/src/shared/ScriptMethodsObjectCreate.cpp index ea707e31..37ab2bac 100644 --- a/engine/server/library/serverScript/src/shared/ScriptMethodsObjectCreate.cpp +++ b/engine/server/library/serverScript/src/shared/ScriptMethodsObjectCreate.cpp @@ -1123,8 +1123,11 @@ jboolean JNICALL ScriptMethodsObjectCreateNamespace::persistObject(JNIEnv *env, ServerObject* object = NULL; if (!JavaLibrary::getObject(target, object)) return JNI_FALSE; - object->persist(); - return JNI_TRUE; + if (object->persist()) { + return JNI_TRUE; + } else { + return JNI_FALSE; + } } // JavaLibrary::persistObject /**