mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-10 00:36:34 +02:00
return ScriptAvatarData raw pointer from getAvatar
This commit is contained in:
parent
54ca8bd89e
commit
84a5807ff1
9 changed files with 22 additions and 39 deletions
|
@ -28,7 +28,6 @@
|
||||||
#include <NodeList.h>
|
#include <NodeList.h>
|
||||||
#include <udt/PacketHeaders.h>
|
#include <udt/PacketHeaders.h>
|
||||||
#include <ResourceCache.h>
|
#include <ResourceCache.h>
|
||||||
#include <ScriptAvatarData.h>
|
|
||||||
#include <ScriptCache.h>
|
#include <ScriptCache.h>
|
||||||
#include <ScriptEngines.h>
|
#include <ScriptEngines.h>
|
||||||
#include <SoundCache.h>
|
#include <SoundCache.h>
|
||||||
|
@ -344,9 +343,6 @@ void Agent::executeScript() {
|
||||||
// give this AvatarData object to the script engine
|
// give this AvatarData object to the script engine
|
||||||
_scriptEngine->registerGlobalObject("Avatar", scriptedAvatar.data());
|
_scriptEngine->registerGlobalObject("Avatar", scriptedAvatar.data());
|
||||||
|
|
||||||
// register meta types for retrieval of ScriptAvatarData objects
|
|
||||||
qScriptRegisterMetaType(_scriptEngine.get(), avatarDataToScriptValue, avatarDataFromScriptValue);
|
|
||||||
|
|
||||||
auto player = DependencyManager::get<recording::Deck>();
|
auto player = DependencyManager::get<recording::Deck>();
|
||||||
connect(player.data(), &recording::Deck::playbackStateChanged, [=] {
|
connect(player.data(), &recording::Deck::playbackStateChanged, [=] {
|
||||||
if (player->isPlaying()) {
|
if (player->isPlaying()) {
|
||||||
|
|
|
@ -5438,9 +5438,6 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEngine* scri
|
||||||
// AvatarManager has some custom types
|
// AvatarManager has some custom types
|
||||||
AvatarManager::registerMetaTypes(scriptEngine);
|
AvatarManager::registerMetaTypes(scriptEngine);
|
||||||
|
|
||||||
// register meta types for retrieval of Avatar objects
|
|
||||||
qScriptRegisterMetaType(scriptEngine, avatarToScriptValue, avatarFromScriptValue);
|
|
||||||
|
|
||||||
if (property(hifi::properties::TEST).isValid()) {
|
if (property(hifi::properties::TEST).isValid()) {
|
||||||
scriptEngine->registerGlobalObject("Test", TestScriptingInterface::getInstance());
|
scriptEngine->registerGlobalObject("Test", TestScriptingInterface::getInstance());
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,10 @@ public:
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
std::shared_ptr<MyAvatar> getMyAvatar() { return _myAvatar; }
|
std::shared_ptr<MyAvatar> getMyAvatar() { return _myAvatar; }
|
||||||
|
|
||||||
|
// Null/Default-constructed QUuids will return MyAvatar
|
||||||
|
virtual ScriptAvatar* getAvatar(QUuid avatarID) override { return new ScriptAvatarData(getAvatarBySessionID(avatarID)); }
|
||||||
|
|
||||||
AvatarSharedPointer getAvatarBySessionID(const QUuid& sessionID) const override;
|
AvatarSharedPointer getAvatarBySessionID(const QUuid& sessionID) const override;
|
||||||
|
|
||||||
int getNumAvatarsUpdated() const { return _numAvatarsUpdated; }
|
int getNumAvatarsUpdated() const { return _numAvatarsUpdated; }
|
||||||
|
|
|
@ -11,16 +11,6 @@
|
||||||
|
|
||||||
#include "ScriptAvatar.h"
|
#include "ScriptAvatar.h"
|
||||||
|
|
||||||
QScriptValue avatarToScriptValue(QScriptEngine* engine, const AvatarSharedPointer& in) {
|
|
||||||
return engine->newQObject(new ScriptAvatar(in), QScriptEngine::ScriptOwnership);
|
|
||||||
}
|
|
||||||
|
|
||||||
void avatarFromScriptValue(const QScriptValue& object, AvatarSharedPointer& out) {
|
|
||||||
// This is not implemented because there are no slots/properties that take an std::shared_ptr<Avatar> from a script
|
|
||||||
assert(false);
|
|
||||||
out = std::shared_ptr<Avatar>();
|
|
||||||
}
|
|
||||||
|
|
||||||
ScriptAvatar::ScriptAvatar(AvatarSharedPointer avatarData) :
|
ScriptAvatar::ScriptAvatar(AvatarSharedPointer avatarData) :
|
||||||
ScriptAvatarData(avatarData)
|
ScriptAvatarData(avatarData)
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,7 +55,4 @@ private:
|
||||||
std::weak_ptr<AvatarData> _avatarData;
|
std::weak_ptr<AvatarData> _avatarData;
|
||||||
};
|
};
|
||||||
|
|
||||||
QScriptValue avatarToScriptValue(QScriptEngine* engine, const AvatarSharedPointer& in);
|
|
||||||
void avatarFromScriptValue(const QScriptValue& object, AvatarSharedPointer& out);
|
|
||||||
|
|
||||||
#endif // hifi_ScriptAvatar_h
|
#endif // hifi_ScriptAvatar_h
|
||||||
|
|
|
@ -25,6 +25,8 @@
|
||||||
#include <NLPacket.h>
|
#include <NLPacket.h>
|
||||||
#include <Node.h>
|
#include <Node.h>
|
||||||
|
|
||||||
|
#include "ScriptAvatarData.h"
|
||||||
|
|
||||||
#include "AvatarData.h"
|
#include "AvatarData.h"
|
||||||
|
|
||||||
class AvatarHashMap : public QObject, public Dependency {
|
class AvatarHashMap : public QObject, public Dependency {
|
||||||
|
@ -37,8 +39,9 @@ public:
|
||||||
|
|
||||||
// Currently, your own avatar will be included as the null avatar id.
|
// Currently, your own avatar will be included as the null avatar id.
|
||||||
Q_INVOKABLE QVector<QUuid> getAvatarIdentifiers();
|
Q_INVOKABLE QVector<QUuid> getAvatarIdentifiers();
|
||||||
|
|
||||||
// Null/Default-constructed QUuids will return MyAvatar
|
// Null/Default-constructed QUuids will return MyAvatar
|
||||||
Q_INVOKABLE AvatarSharedPointer getAvatar(QUuid avatarID) { return getAvatarBySessionID(avatarID); }
|
virtual ScriptAvatarData* getAvatar(QUuid avatarID) { return new ScriptAvatarData(getAvatarBySessionID(avatarID)); }
|
||||||
|
|
||||||
virtual AvatarSharedPointer getAvatarBySessionID(const QUuid& sessionID) const { return findAvatar(sessionID); }
|
virtual AvatarSharedPointer getAvatarBySessionID(const QUuid& sessionID) const { return findAvatar(sessionID); }
|
||||||
int numberOfAvatarsInRange(const glm::vec3& position, float rangeMeters);
|
int numberOfAvatarsInRange(const glm::vec3& position, float rangeMeters);
|
||||||
|
|
|
@ -9,26 +9,14 @@
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "ScriptEngineLogging.h"
|
|
||||||
#include "ScriptAvatarData.h"
|
#include "ScriptAvatarData.h"
|
||||||
|
|
||||||
QScriptValue avatarDataToScriptValue(QScriptEngine* engine, const AvatarSharedPointer& in) {
|
|
||||||
return engine->newQObject(new ScriptAvatarData(in), QScriptEngine::ScriptOwnership);
|
|
||||||
}
|
|
||||||
|
|
||||||
void avatarDataFromScriptValue(const QScriptValue& object, AvatarSharedPointer& out) {
|
|
||||||
// This is not implemented because there are no slots/properties that take an AvatarSharedPointer from a script
|
|
||||||
assert(false);
|
|
||||||
out = AvatarSharedPointer(nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
ScriptAvatarData::ScriptAvatarData(AvatarSharedPointer avatarData) :
|
ScriptAvatarData::ScriptAvatarData(AvatarSharedPointer avatarData) :
|
||||||
_avatarData(avatarData)
|
_avatarData(avatarData)
|
||||||
{
|
{
|
||||||
QObject::connect(avatarData.get(), &AvatarData::displayNameChanged, this, &ScriptAvatarData::displayNameChanged);
|
QObject::connect(avatarData.get(), &AvatarData::displayNameChanged, this, &ScriptAvatarData::displayNameChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// PHYSICAL PROPERTIES: POSITION AND ORIENTATION
|
// PHYSICAL PROPERTIES: POSITION AND ORIENTATION
|
||||||
// START
|
// START
|
|
@ -13,7 +13,8 @@
|
||||||
#define hifi_ScriptAvatarData_h
|
#define hifi_ScriptAvatarData_h
|
||||||
|
|
||||||
#include <QtCore/QObject>
|
#include <QtCore/QObject>
|
||||||
#include <AvatarData.h>
|
|
||||||
|
#include "AvatarData.h"
|
||||||
|
|
||||||
class ScriptAvatarData : public QObject {
|
class ScriptAvatarData : public QObject {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -134,9 +135,4 @@ private:
|
||||||
std::weak_ptr<AvatarData> _avatarData;
|
std::weak_ptr<AvatarData> _avatarData;
|
||||||
};
|
};
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(AvatarSharedPointer)
|
|
||||||
|
|
||||||
QScriptValue avatarDataToScriptValue(QScriptEngine* engine, const AvatarSharedPointer& in);
|
|
||||||
void avatarDataFromScriptValue(const QScriptValue& object, AvatarSharedPointer& out);
|
|
||||||
|
|
||||||
#endif // hifi_ScriptAvatarData_h
|
#endif // hifi_ScriptAvatarData_h
|
|
@ -44,6 +44,7 @@
|
||||||
#include <PathUtils.h>
|
#include <PathUtils.h>
|
||||||
#include <ResourceScriptingInterface.h>
|
#include <ResourceScriptingInterface.h>
|
||||||
#include <NodeList.h>
|
#include <NodeList.h>
|
||||||
|
#include <ScriptAvatarData.h>
|
||||||
#include <udt/PacketHeaders.h>
|
#include <udt/PacketHeaders.h>
|
||||||
#include <UUID.h>
|
#include <UUID.h>
|
||||||
#include <ui/Menu.h>
|
#include <ui/Menu.h>
|
||||||
|
@ -535,6 +536,16 @@ static QScriptValue createScriptableResourcePrototype(QScriptEngine* engine) {
|
||||||
return prototype;
|
return prototype;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QScriptValue avatarDataToScriptValue(QScriptEngine* engine, ScriptAvatarData* const& in) {
|
||||||
|
return engine->newQObject(in, QScriptEngine::ScriptOwnership, DEFAULT_QOBJECT_WRAP_OPTIONS);
|
||||||
|
}
|
||||||
|
|
||||||
|
void avatarDataFromScriptValue(const QScriptValue& object, ScriptAvatarData*& out) {
|
||||||
|
// This is not implemented because there are no slots/properties that take an AvatarSharedPointer from a script
|
||||||
|
assert(false);
|
||||||
|
out = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
void ScriptEngine::resetModuleCache(bool deleteScriptCache) {
|
void ScriptEngine::resetModuleCache(bool deleteScriptCache) {
|
||||||
if (QThread::currentThread() != thread()) {
|
if (QThread::currentThread() != thread()) {
|
||||||
executeOnScriptThread([=]() { resetModuleCache(deleteScriptCache); });
|
executeOnScriptThread([=]() { resetModuleCache(deleteScriptCache); });
|
||||||
|
@ -614,6 +625,7 @@ void ScriptEngine::init() {
|
||||||
|
|
||||||
qScriptRegisterMetaType(this, injectorToScriptValue, injectorFromScriptValue);
|
qScriptRegisterMetaType(this, injectorToScriptValue, injectorFromScriptValue);
|
||||||
qScriptRegisterMetaType(this, inputControllerToScriptValue, inputControllerFromScriptValue);
|
qScriptRegisterMetaType(this, inputControllerToScriptValue, inputControllerFromScriptValue);
|
||||||
|
qScriptRegisterMetaType(this, avatarDataToScriptValue, avatarDataFromScriptValue);
|
||||||
qScriptRegisterMetaType(this, animationDetailsToScriptValue, animationDetailsFromScriptValue);
|
qScriptRegisterMetaType(this, animationDetailsToScriptValue, animationDetailsFromScriptValue);
|
||||||
qScriptRegisterMetaType(this, webSocketToScriptValue, webSocketFromScriptValue);
|
qScriptRegisterMetaType(this, webSocketToScriptValue, webSocketFromScriptValue);
|
||||||
qScriptRegisterMetaType(this, qWSCloseCodeToScriptValue, qWSCloseCodeFromScriptValue);
|
qScriptRegisterMetaType(this, qWSCloseCodeToScriptValue, qWSCloseCodeFromScriptValue);
|
||||||
|
|
Loading…
Reference in a new issue