implement scripting interface for LODManager

This commit is contained in:
ZappoMan 2015-03-17 13:17:27 -07:00
parent e5be8d01b6
commit 1e03335012
4 changed files with 38 additions and 9 deletions

View file

@ -0,0 +1,16 @@
LODManager.LODIncreased.connect(function() {
print("LOD has been increased. You can now see "
+ LODManager.getLODFeedbackText()
+ ", fps:" + LODManager.getFPSAverage()
+ ", fast fps:" + LODManager.getFastFPSAverage()
);
});
LODManager.LODDecreased.connect(function() {
print("LOD has been decreased. You can now see "
+ LODManager.getLODFeedbackText()
+ ", fps:" + LODManager.getFPSAverage()
+ ", fast fps:" + LODManager.getFastFPSAverage()
);
});

View file

@ -3570,6 +3570,8 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEngine* scri
scriptEngine->registerGlobalObject("UndoStack", &_undoStackScriptingInterface); scriptEngine->registerGlobalObject("UndoStack", &_undoStackScriptingInterface);
scriptEngine->registerGlobalObject("LODManager", DependencyManager::get<LODManager>().data());
QScriptValue hmdInterface = scriptEngine->registerGlobalObject("HMD", &HMDScriptingInterface::getInstance()); QScriptValue hmdInterface = scriptEngine->registerGlobalObject("HMD", &HMDScriptingInterface::getInstance());
scriptEngine->registerFunction(hmdInterface, "getHUDLookAtPosition2D", HMDScriptingInterface::getHUDLookAtPosition2D, 0); scriptEngine->registerFunction(hmdInterface, "getHUDLookAtPosition2D", HMDScriptingInterface::getHUDLookAtPosition2D, 0);
scriptEngine->registerFunction(hmdInterface, "getHUDLookAtPosition3D", HMDScriptingInterface::getHUDLookAtPosition3D, 0); scriptEngine->registerFunction(hmdInterface, "getHUDLookAtPosition3D", HMDScriptingInterface::getHUDLookAtPosition3D, 0);

View file

@ -75,7 +75,9 @@ void LODManager::autoAdjustLOD(float currentFPS) {
changed = true; changed = true;
_lastAdjust = now; _lastAdjust = now;
qDebug() << "adjusting LOD down... average fps for last approximately 5 seconds=" << _fpsAverage.getAverage() qDebug() << "adjusting LOD down... average fps for last approximately 5 seconds=" << _fpsAverage.getAverage()
<< "_octreeSizeScale=" << _octreeSizeScale; << "_octreeSizeScale=" << _octreeSizeScale;
emit LODDecreased();
} }
if (elapsed > ADJUST_LOD_UP_DELAY && _fpsAverage.getAverage() > ADJUST_LOD_UP_FPS if (elapsed > ADJUST_LOD_UP_DELAY && _fpsAverage.getAverage() > ADJUST_LOD_UP_FPS
@ -87,7 +89,9 @@ void LODManager::autoAdjustLOD(float currentFPS) {
changed = true; changed = true;
_lastAdjust = now; _lastAdjust = now;
qDebug() << "adjusting LOD up... average fps for last approximately 5 seconds=" << _fpsAverage.getAverage() qDebug() << "adjusting LOD up... average fps for last approximately 5 seconds=" << _fpsAverage.getAverage()
<< "_octreeSizeScale=" << _octreeSizeScale; << "_octreeSizeScale=" << _octreeSizeScale;
emit LODIncreased();
} }
if (changed) { if (changed) {

View file

@ -41,7 +41,8 @@ const int ONE_SECOND_OF_FRAMES = 60;
const int FIVE_SECONDS_OF_FRAMES = 5 * ONE_SECOND_OF_FRAMES; const int FIVE_SECONDS_OF_FRAMES = 5 * ONE_SECOND_OF_FRAMES;
class LODManager : public Dependency { class LODManager : public QObject, public Dependency {
Q_OBJECT
SINGLETON_DEPENDENCY SINGLETON_DEPENDENCY
public: public:
@ -55,21 +56,27 @@ public:
float getAvatarLODDistanceMultiplier() const { return _avatarLODDistanceMultiplier; } float getAvatarLODDistanceMultiplier() const { return _avatarLODDistanceMultiplier; }
// User Tweakable LOD Items // User Tweakable LOD Items
QString getLODFeedbackText(); Q_INVOKABLE QString getLODFeedbackText();
void setOctreeSizeScale(float sizeScale); Q_INVOKABLE void setOctreeSizeScale(float sizeScale);
float getOctreeSizeScale() const { return _octreeSizeScale; } Q_INVOKABLE float getOctreeSizeScale() const { return _octreeSizeScale; }
void setBoundaryLevelAdjust(int boundaryLevelAdjust); Q_INVOKABLE void setBoundaryLevelAdjust(int boundaryLevelAdjust);
int getBoundaryLevelAdjust() const { return _boundaryLevelAdjust; } Q_INVOKABLE int getBoundaryLevelAdjust() const { return _boundaryLevelAdjust; }
void autoAdjustLOD(float currentFPS); void autoAdjustLOD(float currentFPS);
void resetLODAdjust(); Q_INVOKABLE void resetLODAdjust();
Q_INVOKABLE float getFPSAverage() const { return _fpsAverage.getAverage(); }
Q_INVOKABLE float getFastFPSAverage() const { return _fastFPSAverage.getAverage(); }
bool shouldRenderMesh(float largestDimension, float distanceToCamera); bool shouldRenderMesh(float largestDimension, float distanceToCamera);
void loadSettings(); void loadSettings();
void saveSettings(); void saveSettings();
signals:
void LODIncreased();
void LODDecreased();
private: private:
LODManager() {} LODManager() {}