100 lines · 3.2 KB · C
RawDownload
////  ScriptEngine.h//  hifi////  Created by Brad Hefta-Gaub on 12/14/13.//  Copyright (c) 2013 HighFidelity, Inc. All rights reserved.// #ifndef __hifi__ScriptEngine__#define __hifi__ScriptEngine__ #include <vector> #include <QtScript/QScriptEngine>#include <QtCore/QObject>#include <QtCore/QUrl> #include <AbstractMenuInterface.h>#include <AudioScriptingInterface.h>#include <VoxelsScriptingInterface.h> #include <AvatarData.h> class ParticlesScriptingInterface; #include "AbstractControllerScriptingInterface.h"#include "DataServerScriptingInterface.h" const QString NO_SCRIPT(""); class ScriptEngine : public QObject {    Q_OBJECT        Q_PROPERTY(bool isAvatar READ isAvatar WRITE setIsAvatar)public:    ScriptEngine(const QString& scriptContents = NO_SCRIPT, bool wantMenuItems = false,		 const QString& scriptMenuName = QString(""), AbstractMenuInterface* menu = NULL,                    AbstractControllerScriptingInterface* controllerScriptingInterface = NULL);     ~ScriptEngine();     /// Access the VoxelsScriptingInterface in order to initialize it with a custom packet sender and jurisdiction listener    VoxelsScriptingInterface* getVoxelsScriptingInterface() { return &_voxelsScriptingInterface; }     /// Access the ParticlesScriptingInterface in order to initialize it with a custom packet sender and jurisdiction listener    ParticlesScriptingInterface* getParticlesScriptingInterface() { return &_particlesScriptingInterface; }        /// Access the DataServerScriptingInterface for access to its underlying UUID    const DataServerScriptingInterface& getDataServerScriptingInterface() { return _dataServerScriptingInterface; }     /// sets the script contents, will return false if failed, will fail if script is already running    bool setScriptContents(const QString& scriptContents);     void setupMenuItems();    void cleanMenuItems();     void registerGlobalObject(const QString& name, QObject* object); /// registers a global object by name        void setIsAvatar(bool isAvatar) { _isAvatar = isAvatar; }    bool isAvatar() const { return _isAvatar; }        void setAvatarData(AvatarData* avatarData); public slots:    void init();    void run(); /// runs continuously until Agent.stop() is called    void stop();    void evaluate(); /// initializes the engine, and evaluates the script, but then returns control to caller signals:    void willSendAudioDataCallback();    void willSendVisualDataCallback();    void scriptEnding();    void finished(const QString& fileNameString); protected:    void preEvaluateReset();        QString _scriptContents;    bool _isFinished;    bool _isRunning;    bool _isInitialized;    QScriptEngine _engine;    bool _isAvatar; private:    static VoxelsScriptingInterface _voxelsScriptingInterface;    static ParticlesScriptingInterface _particlesScriptingInterface;    AbstractControllerScriptingInterface* _controllerScriptingInterface;    AudioScriptingInterface _audioScriptingInterface;    DataServerScriptingInterface _dataServerScriptingInterface;    AvatarData* _avatarData;    bool _wantMenuItems;    QString _scriptMenuName;    QString _fileNameString;    AbstractMenuInterface* _menu;    static int _scriptNumber;}; #endif /* defined(__hifi__ScriptEngine__) */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t