mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 21:51:36 +02:00
implement scripting interface for LODManager
This commit is contained in:
parent
e5be8d01b6
commit
1e03335012
4 changed files with 38 additions and 9 deletions
16
examples/example/ui/LODManagerExample.js
Normal file
16
examples/example/ui/LODManagerExample.js
Normal 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()
|
||||||
|
);
|
||||||
|
});
|
|
@ -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);
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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() {}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue