// // Created by Bradley Austin Davis 2015/06/17 // Copyright 2013 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // #ifndef hifi_Stats_h #define hifi_Stats_h #include #include #include #include #include #define STATS_PROPERTY(type, name, initialValue) \ Q_PROPERTY(type name READ name NOTIFY name##Changed) \ public: \ type name() { return _##name; }; \ private: \ type _##name{ initialValue }; /*@jsdoc * The Stats API provides statistics on Interface and domain operation, per the statistics overlay. * *

Note: This API is primarily an internal diagnostics tool and is provided "as is".

* * @namespace Stats * * @hifi-interface * @hifi-client-entity * @hifi-avatar * @hifi-server-entity * @hifi-assignment-client * * @property {boolean} expanded - true if the statistics overlay should be in expanded form when the overlay is * displayed, false if it shouldn't be expanded. * @property {boolean} timingExpanded - true if timing details should be displayed when the statistics overlay is * displayed in expanded form, false if timing details should not be displayed. Set by the menu item, * Developer > Timing > Performance Timer > Display Timing Details. * Read-only. * @property {string} monospaceFont - The name of the monospace font used in the statistics overlay. * Read-only. * * @property {number} serverCount - The number of servers that Interface is connected to. * Read-only. * @property {number} renderrate - The rate at which new GPU frames are being created, in Hz. * Read-only. * @property {number} presentrate - The rate at which the display plugin is presenting to the display device, in Hz. * Read-only. * @property {number} stutterrate - The rate at which the display plugin is reprojecting old GPU frames, in Hz. * Read-only. * * @property {number} appdropped - The number of times a frame has not been provided to the display device in time. * Read-only. * @property {number} longsubmits - The number of times the display device has taken longer than 11ms to return after being * given a frame. * Read-only. * @property {number} longrenders - The number of times it has taken longer than 11ms to submit a new frame to the display * device. * Read-only. * @property {number} longframes - The number of times longsubmits + longrenders has taken longer than 15ms. * Read-only. * * @property {number} presentnewrate - The rate at which the display plugin is presenting new GPU frames, in Hz. * Read-only. * @property {number} presentdroprate - The rate at which the display plugin is dropping GPU frames, in Hz. * Read-only. * @property {number} gameLoopRate - The rate at which the game loop is running, in Hz. * Read-only. * @property {number} refreshRateTarget - The current target refresh rate, in Hz, per the current refreshRateMode * and refreshRateRegime if in desktop mode; a higher rate if in VR mode. * Read-only. * @property {RefreshRateProfileName} refreshRateMode - The current refresh rate profile. * Read-only. * @property {RefreshRateRegimeName} refreshRateRegime - The current refresh rate regime. * Read-only. * @property {UXModeName} uxMode - The user experience (UX) mode that Interface is running in. * Read-only. * @property {number} avatarCount - The number of avatars in the domain other than the client's. * Read-only. * @property {number} heroAvatarCount - The number avatars in a "hero" zone in the domain, other than the client's. * Read-only. * @property {number} physicsObjectCount - The number of objects that have collisions enabled. * Read-only. * @property {number} updatedAvatarCount - The number of avatars in the domain, other than the client's, that were updated in * the most recent game loop. * Read-only. * @property {number} updatedHeroAvatarCount - The number of avatars in a "hero" zone in the domain, other than the client's, * that were updated in the most recent game loop. * Read-only. * @property {number} notUpdatedAvatarCount - The number of avatars in the domain, other than the client's, that weren't able * to be updated in the most recent game loop because there wasn't enough time to. * Read-only. * @property {number} packetInCount - The number of packets being received from the domain server, in packets per second. * Read-only. * @property {number} packetOutCount - The number of packets being sent to the domain server, in packets per second. * Read-only. * @property {number} mbpsIn - The amount of data being received from the domain server, in megabits per second. * Read-only. * @property {number} mbpsOut - The amount of data being sent to the domain server, in megabits per second. * Read-only. @property {number} assetMbpsIn - The amount of data being received from the asset server, in megabits per second. * 0.0 if not connected to an avatar mixer. * Read-only. * @property {number} assetMbpsOut - The amount of data being sent to the asset server, in megabits per second. * 0.0 if not connected to an avatar mixer. * Read-only. * @property {number} audioPing - The ping time to the audio mixer, in ms. * -1 if not connected to an audio mixer. * Read-only. * @property {number} avatarPing - The ping time to the avatar mixer, in ms. * -1 if not connected to an avatar mixer. * Read-only. * @property {number} entitiesPing - The average ping time to the entity servers, in ms. * -1 if not connected to an entity server. * Read-only. * @property {number} assetPing - The ping time to the asset server, in ms. * -1 if not connected to an asset server. * Read-only. * @property {number} messagePing - The ping time to the message mixer, in ms. * -1 if not connected to a message mixer. * Read-only. * @property {Vec3} position - The position of the user's avatar. * Read-only. *

Note: Property not available in the API.

* @property {number} speed - The speed of the user's avatar, in m/s. * Read-only. * @property {number} yaw - The yaw of the user's avatar body, in degrees. * Read-only. * @property {number} avatarMixerInKbps - The amount of data being received from the avatar mixer, in kilobits per second. * -1 if not connected to an avatar mixer. * Read-only. * @property {number} avatarMixerInPps - The number of packets being received from the avatar mixer, in packets per second. * -1 if not connected to an avatar mixer. * Read-only. * @property {number} avatarMixerOutKbps - The amount of data being sent to the avatar mixer, in kilobits per second. * -1 if not connected to an avatar mixer. * Read-only. * @property {number} avatarMixerOutPps - The number of packets being sent to the avatar mixer, in packets per second. * -1 if not connected to an avatar mixer. * Read-only. * @property {number} myAvatarSendRate - The number of avatar packets being sent by the user's avatar, in packets per second. * Read-only. * * @property {number} audioMixerInKbps - The amount of data being received from the audio mixer, in kilobits per second. * -1 if not connected to an audio mixer. * Read-only. * @property {number} audioMixerInPps - The number of packets being received from the audio mixer, in packets per second. * -1 if not connected to an audio mixer. * Read-only. * @property {number} audioMixerOutKbps - The amount of data being sent to the audio mixer, in kilobits per second. * -1 if not connected to an audio mixer. * Read-only. * @property {number} audioMixerOutPps - The number of packets being sent to the audio mixer, in packets per second. * -1 if not connected to an audio mixer. * Read-only. * @property {number} audioMixerKbps - The total amount of data being sent to and received from the audio mixer, in kilobits * per second. * -1 if not connected to an audio mixer. * Read-only. * @property {number} audioMixerPps - The total number of packets being sent to and received from the audio mixer, in packets * per second. * -1 if not connected to an audio mixer. * Read-only. * @property {number} audioOutboundPPS - The number of non-silent audio packets being sent by the user, in packets per second. * -1 if not connected to an audio mixer. * Read-only. * @property {number} audioSilentOutboundPPS - The number of silent audio packets being sent by the user, in packets per * second. * -1 if not connected to an audio mixer. * Read-only. * @property {number} audioInboundPPS - The number of non-silent audio packets being received by the user, in packets per * second. * -1 if not connected to an audio mixer. * Read-only. * @property {number} audioAudioInboundPPS - The number of non-silent audio packets being received by the user, in packets per * second. * -1 if not connected to an audio mixer. * Read-only. *

Deprecated: This property is deprecated and will be removed. Use audioInboundPPS * instead.

* @property {number} audioSilentInboundPPS - The number of silent audio packets being received by the user, in packets per * second. * -1 if not connected to an audio mixer. * Read-only. * @property {number} audioPacketLoss - The number of audio packets being lost, sent to or received from the audio mixer, in %. * -1 if not connected to an audio mixer. * Read-only. * @property {string} audioCodec - The name of the audio codec. * Read-only. * @property {string} audioNoiseGate - The status of the audio noise gate: "Open" or "Closed". * Read-only. * @property {Vec2} audioInjectors - The number of audio injectors, local and non-local. * Read-only. *

Note: Property not available in the API.

* @property {number} entityPacketsInKbps - The average amount of data being received from entity servers, in kilobits per * second. (Multiply by the number of entity servers to get the total amount of data being received.) * -1 if not connected to an entity server. * Read-only. * * @property {number} downloads - The number of downloads in progress. * Read-only. * @property {number} downloadLimit - The maximum number of concurrent downloads. * Read-only. * @property {number} downloadsPending - The number of downloads pending. * Read-only. * @property {string[]} downloadUrls - The download URLs. * Read-only. * @property {number[]} downloadProgresses - The download progresses. * Read-only. * @property {number[]} downloadPriorities - The download priorities. * Read-only. * @property {number} processing - The number of completed downloads being processed. * Read-only. * @property {number} processingPending - The number of completed downloads waiting to be processed. * Read-only. * @property {number} triangles - The number of triangles in the rendered scene. * Read-only. * @property {number} drawcalls - The number of draw calls made for the rendered scene. * Read-only. * @property {number} materialSwitches - The number of material switches performed for the rendered scene. * Read-only. * @property {number} itemConsidered - The number of item considerations made for rendering. * Read-only. * @property {number} itemOutOfView - The number of items out of view. * Read-only. * @property {number} itemTooSmall - The number of items too small to render. * Read-only. * @property {number} itemRendered - The number of items rendered. * Read-only. * @property {number} shadowConsidered - The number of shadow considerations made for rendering. * Read-only. * @property {number} shadowOutOfView - The number of shadows out of view. * Read-only. * @property {number} shadowTooSmall - The number of shadows too small to render. * Read-only. * @property {number} shadowRendered - The number of shadows rendered. * Read-only. * @property {string} sendingMode - Description of the octree sending mode. * Read-only. * @property {string} packetStats - Description of the octree packet processing state. * Read-only. * @property {number} lodAngle - The target LOD angle, in degrees. * Read-only. * @property {number} lodTargetFramerate - The target LOD frame rate, in Hz. * Read-only. * @property {string} lodStatus - Description of the current LOD. * Read-only. * @property {number} numEntityUpdates - The number of entity updates that happened last frame. * Read-only. * @property {number} numNeededEntityUpdates - The total number of entity updates scheduled for last frame. * Read-only. * @property {string} timingStats - Details of the average time (ms) spent in and number of calls made to different parts of * the code. Provided only if timingExpanded is true. Only the top 10 items are provided if * Developer > Timing > Performance Timer > Only Display Top 10 is enabled. * Read-only. * @property {string} gameUpdateStats - Details of the average time (ms) spent in different parts of the game loop. * Read-only. * @property {number} serverElements - The total number of elements in the server octree. * Read-only. * @property {number} serverInternal - The number of internal elements in the server octree. * Read-only. * @property {number} serverLeaves - The number of leaf elements in the server octree. * Read-only. * @property {number} localElements - The total number of elements in the client octree. * Read-only. * @property {number} localInternal - The number of internal elements in the client octree. * Read-only. * @property {number} localLeaves - The number of leaf elements in the client octree. * Read-only. * @property {number} rectifiedTextureCount - The number of textures that have been resized so that their dimensions is a power * of 2 if smaller than 128 pixels, or a multiple of 128 if greater than 128 pixels. * Read-only. * @property {number} decimatedTextureCount - The number of textures that have been reduced in size because they were over the * maximum allowed dimensions of 8192 pixels on desktop or 2048 pixels on mobile. * Read-only. * @property {number} gpuBuffers - The number of OpenGL buffer objects managed by the GPU back-end. * Read-only. * @property {number} gpuBufferMemory - The total memory size of the gpuBuffers, in MB. * Read-only. * @property {number} gpuTextures - The number of OpenGL textures managed by the GPU back-end. This is the sum of the number of * textures managed for gpuTextureResidentMemory, gpuTextureResourceMemory, and * gpuTextureFramebufferMemory. * Read-only. * @property {number} gpuTextureMemory - The total memory size of the gpuTextures, in MB. This is the sum of * gpuTextureResidentMemory, gpuTextureResourceMemory, and * gpuTextureFramebufferMemory. * Read-only. * @property {number} glContextSwapchainMemory - The estimated memory used by the default OpenGL frame buffer, in MB. * Read-only. * @property {number} qmlTextureMemory - The memory size of textures managed by the offscreen QML surface, in MB. * Read-only. * @property {number} texturePendingTransfers - The memory size of textures pending transfer to the GPU, in MB. * Read-only. * @property {number} gpuTextureResidentMemory - The memory size of the "strict" textures that always have their full * resolution in GPU memory, in MB. * Read-only. * @property {number} gpuTextureFramebufferMemory - The memory size of the frame buffer on the GPU, in MB. * Read-only. * @property {number} gpuTextureResourceMemory - The amount of GPU memory that has been allocated for "variable" textures that * don't necessarily always have their full resolution in GPU memory, in MB. * Read-only. * @property {number} gpuTextureResourceIdealMemory - The amount of memory that "variable" textures would take up if they were * all completely loaded, in MB. * Read-only. * @property {number} gpuTextureResourcePopulatedMemory - How much of the GPU memory allocated has actually been populated, in * MB. * Read-only. * @property {string} gpuTextureMemoryPressureState - The stats of the texture transfer engine. *
    *
  • "Undersubscribed": There is texture data that can fit in memory but that isn't on the GPU, so more * GPU texture memory should be allocated if possible.
  • *
  • "Transfer": More GPU texture memory has been allocated and texture data is being transferred.
  • *
  • "Idle": Either all texture data has been transferred to the GPU or there is nor more space * available.
  • *
* Read-only. * @property {number} gpuFreeMemory - The amount of GPU memory available after all allocations, in MB. * Read-only. *

Note: This is not a reliable number because OpenGL doesn't have an official method of getting this * information.

* @property {number} gpuTextureExternalMemory - The estimated amount of memory consumed by textures being used but that are * not managed by the GPU library, in MB. * Read-only. * @property {Vec2} gpuFrameSize - The dimensions of the frames being rendered, in pixels. * Read-only. *

Note: Property not available in the API.

* @property {number} gpuFrameTime - The time the GPU is spending on a frame, in ms. * Read-only. * @property {number} gpuFrameTimePerPixel - The time the GPU is spending on a pixel, in ns. * Read-only. * @property {number} batchFrameTime - The time being spent batch processing each frame, in ms. * Read-only. * @property {number} engineFrameTime - The time being spent in the render engine each frame, in ms. * Read-only. * @property {number} avatarSimulationTime - The time being spent simulating avatars each frame, in ms. * Read-only. * * @property {number} stylusPicksCount - The number of stylus picks currently in effect. * Read-only. * @property {number} rayPicksCount - The number of ray picks currently in effect. * Read-only. * @property {number} parabolaPicksCount - The number of parabola picks currently in effect. * Read-only. * @property {number} collisionPicksCount - The number of collision picks currently in effect. * Read-only. * @property {Vec3} stylusPicksUpdated - The number of stylus pick intersection that were found in the most recent game loop: *
    *
  • x = entity intersections.
  • *
  • y = avatar intersections.
  • *
  • z = HUD intersections.
  • *
* Read-only. *

Note: Property not available in the API.

* @property {Vec3} rayPicksUpdated - The number of ray pick intersections that were found in the most recent game loop: *
    *
  • x = entity intersections.
  • *
  • y = avatar intersections.
  • *
  • z = HUD intersections.
  • *
* Read-only. *

Note: Property not available in the API.

* @property {Vec3} parabolaPicksUpdated - The number of parabola pick intersections that were found in the most recent game * loop: *
    *
  • x = entity intersections.
  • *
  • y = avatar intersections.
  • *
  • z = HUD intersections.
  • *
* Read-only. *

Note: Property not available in the API.

* @property {Vec3} collisionPicksUpdated - The number of collision pick intersections that were found in the most recent game * loop: *
    *
  • x = entity intersections.
  • *
  • y = avatar intersections.
  • *
  • z = HUD intersections.
  • *
* Read-only. *

Note: Property not available in the API.

* * @property {boolean} eventQueueDebuggingOn - true if event queue statistics are provided, false if * they're not. * Read-only. * @property {number} mainThreadQueueDepth - The number of events in the main thread's event queue. * Only provided if eventQueueDebuggingOn is true. * Read-only. * @property {number} nodeListThreadQueueDepth - The number of events in the node list thread's event queue. * Only provided if eventQueueDebuggingOn is true. * Read-only. * * @comment The following property is from Stats.qml. It shouldn't be in the API. * @property {string} bgColor * Read-only. *

Deprecated: This property is deprecated and will be removed.

* * @comment The following properties are from QQuickItem. They shouldn't be in the API. * @property {boolean} activeFocus * Read-only. *

Deprecated: This property is deprecated and will be removed.

* @property {boolean} activeFocusOnTab *

Deprecated: This property is deprecated and will be removed.

* @property {object} anchors * Read-only. *

Deprecated: This property is deprecated and will be removed.

* @property {boolean} antialiasing *

Deprecated: This property is deprecated and will be removed.

* @property {number} baselineOffset *

Deprecated: This property is deprecated and will be removed.

* @property {object[]} children * Read-only. *

Note: Property not available in the API.

*

Deprecated: This property is deprecated and will be removed.

* @property {boolean} clip *

Deprecated: This property is deprecated and will be removed.

* @property {object} containmentMask *

Deprecated: This property is deprecated and will be removed.

* @property {boolean} enabled *

Deprecated: This property is deprecated and will be removed.

* @property {boolean} focus *

Deprecated: This property is deprecated and will be removed.

* @property {number} height *

Deprecated: This property is deprecated and will be removed.

* @property {number} implicitHeight *

Deprecated: This property is deprecated and will be removed.

* @property {number} implicitWidth *

Deprecated: This property is deprecated and will be removed.

* @property {object} layer * Read-only. *

Deprecated: This property is deprecated and will be removed.

* @property {number} opacity *

Deprecated: This property is deprecated and will be removed.

* @property {number} rotation *

Deprecated: This property is deprecated and will be removed.

* @property {number} scale *

Deprecated: This property is deprecated and will be removed.

* @property {boolean} smooth *

Deprecated: This property is deprecated and will be removed.

* @property {string} state *

Deprecated: This property is deprecated and will be removed.

* @property {number} transformOrigin *

Deprecated: This property is deprecated and will be removed.

* @property {boolean} visible *

Deprecated: This property is deprecated and will be removed.

* @property {number} width *

Deprecated: This property is deprecated and will be removed.

* @property {number} x *

Deprecated: This property is deprecated and will be removed.

* @property {number} y *

Deprecated: This property is deprecated and will be removed.

* @property {number} z *

Deprecated: This property is deprecated and will be removed.

*/ // Properties from x onwards are QQuickItem properties. class Stats : public QQuickItem { Q_OBJECT HIFI_QML_DECL Q_PROPERTY(bool expanded READ isExpanded WRITE setExpanded NOTIFY expandedChanged) Q_PROPERTY(bool timingExpanded READ isTimingExpanded NOTIFY timingExpandedChanged) Q_PROPERTY(QString monospaceFont READ monospaceFont CONSTANT) STATS_PROPERTY(int, serverCount, 0) // How often the app is creating new gpu::Frames STATS_PROPERTY(float, renderrate, 0) // How often the display plugin is presenting to the device STATS_PROPERTY(float, presentrate, 0) // How often the display device reprojecting old frames STATS_PROPERTY(float, stutterrate, 0) STATS_PROPERTY(int, appdropped, 0) STATS_PROPERTY(int, longsubmits, 0) STATS_PROPERTY(int, longrenders, 0) STATS_PROPERTY(int, longframes, 0) STATS_PROPERTY(float, presentnewrate, 0) STATS_PROPERTY(float, presentdroprate, 0) STATS_PROPERTY(int, gameLoopRate, 0) STATS_PROPERTY(int, avatarCount, 0) STATS_PROPERTY(int, refreshRateTarget, 0) STATS_PROPERTY(QString, refreshRateMode, QString()) STATS_PROPERTY(QString, refreshRateRegime, QString()) STATS_PROPERTY(QString, uxMode, QString()) STATS_PROPERTY(int, heroAvatarCount, 0) STATS_PROPERTY(int, physicsObjectCount, 0) STATS_PROPERTY(int, updatedAvatarCount, 0) STATS_PROPERTY(int, updatedHeroAvatarCount, 0) STATS_PROPERTY(int, notUpdatedAvatarCount, 0) STATS_PROPERTY(int, packetInCount, 0) STATS_PROPERTY(int, packetOutCount, 0) STATS_PROPERTY(float, mbpsIn, 0) STATS_PROPERTY(float, mbpsOut, 0) STATS_PROPERTY(float, assetMbpsIn, 0) STATS_PROPERTY(float, assetMbpsOut, 0) STATS_PROPERTY(int, audioPing, 0) STATS_PROPERTY(int, avatarPing, 0) STATS_PROPERTY(int, entitiesPing, 0) STATS_PROPERTY(int, assetPing, 0) STATS_PROPERTY(int, messagePing, 0) STATS_PROPERTY(QVector3D, position, QVector3D(0, 0, 0)) STATS_PROPERTY(float, speed, 0) STATS_PROPERTY(float, yaw, 0) STATS_PROPERTY(int, avatarMixerInKbps, 0) STATS_PROPERTY(int, avatarMixerInPps, 0) STATS_PROPERTY(int, avatarMixerOutKbps, 0) STATS_PROPERTY(int, avatarMixerOutPps, 0) STATS_PROPERTY(float, myAvatarSendRate, 0) STATS_PROPERTY(int, audioMixerInKbps, 0) STATS_PROPERTY(int, audioMixerInPps, 0) STATS_PROPERTY(int, audioMixerOutKbps, 0) STATS_PROPERTY(int, audioMixerOutPps, 0) STATS_PROPERTY(int, audioMixerKbps, 0) STATS_PROPERTY(int, audioMixerPps, 0) STATS_PROPERTY(int, audioOutboundPPS, 0) STATS_PROPERTY(int, audioSilentOutboundPPS, 0) STATS_PROPERTY(int, audioInboundPPS, 0) STATS_PROPERTY(int, audioAudioInboundPPS, 0) STATS_PROPERTY(int, audioSilentInboundPPS, 0) STATS_PROPERTY(int, audioPacketLoss, 0) STATS_PROPERTY(QString, audioCodec, QString()) STATS_PROPERTY(QString, audioNoiseGate, QString()) STATS_PROPERTY(QVector2D, audioInjectors, QVector2D()); STATS_PROPERTY(int, entityPacketsInKbps, 0) STATS_PROPERTY(int, downloads, 0) STATS_PROPERTY(int, downloadLimit, 0) STATS_PROPERTY(int, downloadsPending, 0) Q_PROPERTY(QStringList downloadUrls READ downloadUrls NOTIFY downloadUrlsChanged) Q_PROPERTY(QList downloadProgresses READ downloadProgresses NOTIFY downloadProgressesChanged) Q_PROPERTY(QList downloadPriorities READ downloadPriorities NOTIFY downloadPrioritiesChanged) STATS_PROPERTY(int, processing, 0) STATS_PROPERTY(int, processingPending, 0) STATS_PROPERTY(int, triangles, 0) STATS_PROPERTY(quint32 , drawcalls, 0) STATS_PROPERTY(int, materialSwitches, 0) STATS_PROPERTY(int, itemConsidered, 0) STATS_PROPERTY(int, itemOutOfView, 0) STATS_PROPERTY(int, itemTooSmall, 0) STATS_PROPERTY(int, itemRendered, 0) STATS_PROPERTY(int, shadowConsidered, 0) STATS_PROPERTY(int, shadowOutOfView, 0) STATS_PROPERTY(int, shadowTooSmall, 0) STATS_PROPERTY(int, shadowRendered, 0) STATS_PROPERTY(QString, sendingMode, QString()) STATS_PROPERTY(QString, packetStats, QString()) STATS_PROPERTY(int, lodAngle, 0) STATS_PROPERTY(int, lodTargetFramerate, 0) STATS_PROPERTY(QString, lodStatus, QString()) STATS_PROPERTY(quint64, numEntityUpdates, 0) STATS_PROPERTY(quint64, numNeededEntityUpdates, 0) STATS_PROPERTY(QString, timingStats, QString()) STATS_PROPERTY(QString, gameUpdateStats, QString()) STATS_PROPERTY(int, serverElements, 0) STATS_PROPERTY(int, serverInternal, 0) STATS_PROPERTY(int, serverLeaves, 0) STATS_PROPERTY(int, localElements, 0) STATS_PROPERTY(int, localInternal, 0) STATS_PROPERTY(int, localLeaves, 0) STATS_PROPERTY(int, rectifiedTextureCount, 0) STATS_PROPERTY(int, decimatedTextureCount, 0) STATS_PROPERTY(int, gpuBuffers, 0) STATS_PROPERTY(int, gpuBufferMemory, 0) STATS_PROPERTY(int, gpuTextures, 0) STATS_PROPERTY(int, glContextSwapchainMemory, 0) STATS_PROPERTY(int, qmlTextureMemory, 0) STATS_PROPERTY(int, texturePendingTransfers, 0) STATS_PROPERTY(int, gpuTextureMemory, 0) STATS_PROPERTY(int, gpuTextureResidentMemory, 0) STATS_PROPERTY(int, gpuTextureFramebufferMemory, 0) STATS_PROPERTY(int, gpuTextureResourceMemory, 0) STATS_PROPERTY(int, gpuTextureResourceIdealMemory, 0) STATS_PROPERTY(int, gpuTextureResourcePopulatedMemory, 0) STATS_PROPERTY(int, gpuTextureExternalMemory, 0) STATS_PROPERTY(QString, gpuTextureMemoryPressureState, QString()) STATS_PROPERTY(int, gpuFreeMemory, 0) STATS_PROPERTY(QVector2D, gpuFrameSize, QVector2D(0,0)) STATS_PROPERTY(float, gpuFrameTime, 0) STATS_PROPERTY(float, gpuFrameTimePerPixel, 0) STATS_PROPERTY(float, batchFrameTime, 0) STATS_PROPERTY(float, engineFrameTime, 0) STATS_PROPERTY(float, avatarSimulationTime, 0) STATS_PROPERTY(int, stylusPicksCount, 0) STATS_PROPERTY(int, rayPicksCount, 0) STATS_PROPERTY(int, parabolaPicksCount, 0) STATS_PROPERTY(int, collisionPicksCount, 0) STATS_PROPERTY(QVector3D, stylusPicksUpdated, QVector3D(0, 0, 0)) STATS_PROPERTY(QVector3D, rayPicksUpdated, QVector3D(0, 0, 0)) STATS_PROPERTY(QVector3D, parabolaPicksUpdated, QVector3D(0, 0, 0)) STATS_PROPERTY(QVector3D, collisionPicksUpdated, QVector3D(0, 0, 0)) STATS_PROPERTY(int, mainThreadQueueDepth, -1); STATS_PROPERTY(int, nodeListThreadQueueDepth, -1); #ifdef DEBUG_EVENT_QUEUE STATS_PROPERTY(bool, eventQueueDebuggingOn, true) #else STATS_PROPERTY(bool, eventQueueDebuggingOn, false) #endif // DEBUG_EVENT_QUEUE public: static Stats* getInstance(); Stats(QQuickItem* parent = nullptr); bool includeTimingRecord(const QString& name); void setRenderDetails(const render::RenderDetails& details); const QString& monospaceFont() { return _monospaceFont; } void updateStats(bool force = false); bool isExpanded() { return _expanded; } bool isTimingExpanded() { return _showTimingDetails; } void setExpanded(bool expanded) { if (_expanded != expanded) { _expanded = expanded; emit expandedChanged(); } } QStringList downloadUrls() { return _downloadUrls; } QList downloadProgresses() { return _downloadProgresses; } QList downloadPriorities() { return _downloadPriorities; } public slots: /*@jsdoc * Updates statistics to make current values available to scripts even though the statistics overlay may not be displayed. * (Many statistics values are normally updated only if the statistics overlay is displayed.) *

Note: Not all statistics values are updated when the statistics overlay isn't displayed or * expanded.

* @function Stats.forceUpdateStats * @example Report avatar mixer data and packet rates. * // The statistics to report. * var stats = [ * "avatarMixerInKbps", * "avatarMixerInPps", * "avatarMixerOutKbps", * "avatarMixerOutPps" * ]; * * // Update the statistics for the script. * Stats.forceUpdateStats(); * * // Report the statistics. * for (var i = 0; i < stats.length; i++) { * print(stats[i], "=", Stats[stats[i]]); * } */ void forceUpdateStats() { updateStats(true); } signals: // Signals for properties... /*@jsdoc * Triggered when the value of the expanded property changes. * @function Stats.expandedChanged * @returns {Signal} */ void expandedChanged(); /*@jsdoc * Triggered when the value of the timingExpanded property changes. * @function Stats.timingExpandedChanged * @returns {Signal} */ void timingExpandedChanged(); /*@jsdoc * Triggered when the value of the serverCount property changes. * @function Stats.serverCountChanged * @returns {Signal} */ void serverCountChanged(); /*@jsdoc * Triggered when the value of the renderrate property changes. * @function Stats.renderrateChanged * @returns {Signal} */ void renderrateChanged(); /*@jsdoc * Triggered when the value of the presentrate property changes. * @function Stats.presentrateChanged * @returns {Signal} */ void presentrateChanged(); /*@jsdoc * Triggered when the value of the stutterrate property changes. * @function Stats.stutterrateChanged * @returns {Signal} */ void stutterrateChanged(); /*@jsdoc * Triggered when the value of the appdropped property changes. * @function Stats.appdroppedChanged * @returns {Signal} */ void appdroppedChanged(); /*@jsdoc * Triggered when the value of the longsubmits property changes. * @function Stats.longsubmitsChanged * @returns {Signal} */ void longsubmitsChanged(); /*@jsdoc * Triggered when the value of the longrenders property changes. * @function Stats.longrendersChanged * @returns {Signal} */ void longrendersChanged(); /*@jsdoc * Triggered when the value of the longframes property changes. * @function Stats.longframesChanged * @returns {Signal} */ void longframesChanged(); /*@jsdoc * Triggered when the value of the presentnewrate property changes. * @function Stats.presentnewrateChanged * @returns {Signal} */ void presentnewrateChanged(); /*@jsdoc * Triggered when the value of the presentdroprate property changes. * @function Stats.presentdroprateChanged * @returns {Signal} */ void presentdroprateChanged(); /*@jsdoc * Triggered when the value of the gameLoopRate property changes. * @function Stats.gameLoopRateChanged * @returns {Signal} */ void gameLoopRateChanged(); /*@jsdoc * Triggered when the value of the avatarCount property changes. * @function Stats.avatarCountChanged * @returns {Signal} */ void avatarCountChanged(); /*@jsdoc * Triggered when the value of the refreshRateTarget property changes. * @function Stats.refreshRateTargetChanged * @returns {Signal} */ void refreshRateTargetChanged(); /*@jsdoc * Triggered when the value of the refreshRateMode property changes. * @function Stats.refreshRateModeChanged * @returns {Signal} */ void refreshRateModeChanged(); /*@jsdoc * Triggered when the value of the refreshRateRegime property changes. * @function Stats.refreshRateRegimeChanged * @returns {Signal} */ void refreshRateRegimeChanged(); /*@jsdoc * Triggered when the value of the uxMode property changes. * @function Stats.uxModeChanged * @returns {Signal} */ void uxModeChanged(); /*@jsdoc * Triggered when the value of the heroAvatarCount property changes. * @function Stats.heroAvatarCountChanged * @returns {Signal} */ void heroAvatarCountChanged(); /*@jsdoc * Triggered when the value of the physicsObjectCount property changes. * @function Stats.physicsObjectCountChanged * @returns {Signal} */ void physicsObjectCountChanged(); /*@jsdoc * Triggered when the value of the updatedAvatarCount property changes. * @function Stats.updatedAvatarCountChanged * @returns {Signal} */ void updatedAvatarCountChanged(); /*@jsdoc * Triggered when the value of the updatedHeroAvatarCount property changes. * @function Stats.updatedHeroAvatarCountChanged * @returns {Signal} */ void updatedHeroAvatarCountChanged(); /*@jsdoc * Triggered when the value of the notUpdatedAvatarCount property changes. * @function Stats.notUpdatedAvatarCountChanged * @returns {Signal} */ void notUpdatedAvatarCountChanged(); /*@jsdoc * Triggered when the value of the packetInCount property changes. * @function Stats.packetInCountChanged * @returns {Signal} */ void packetInCountChanged(); /*@jsdoc * Triggered when the value of the packetOutCount property changes. * @function Stats.packetOutCountChanged * @returns {Signal} */ void packetOutCountChanged(); /*@jsdoc * Triggered when the value of the mbpsIn property changes. * @function Stats.mbpsInChanged * @returns {Signal} */ void mbpsInChanged(); /*@jsdoc * Triggered when the value of the mbpsOut property changes. * @function Stats.mbpsOutChanged * @returns {Signal} */ void mbpsOutChanged(); /*@jsdoc * Triggered when the value of the assetMbpsIn property changes. * @function Stats.assetMbpsInChanged * @returns {Signal} */ void assetMbpsInChanged(); /*@jsdoc * Triggered when the value of the assetMbpsOut property changes. * @function Stats.assetMbpsOutChanged * @returns {Signal} */ void assetMbpsOutChanged(); /*@jsdoc * Triggered when the value of the audioPing property changes. * @function Stats.audioPingChanged * @returns {Signal} */ void audioPingChanged(); /*@jsdoc * Triggered when the value of the avatarPing property changes. * @function Stats.avatarPingChanged * @returns {Signal} */ void avatarPingChanged(); /*@jsdoc * Triggered when the value of the entitiesPing property changes. * @function Stats.entitiesPingChanged * @returns {Signal} */ void entitiesPingChanged(); /*@jsdoc * Triggered when the value of the assetPing property changes. * @function Stats.assetPingChanged * @returns {Signal} */ void assetPingChanged(); /*@jsdoc * Triggered when the value of the messagePing property changes. * @function Stats.messagePingChanged * @returns {Signal} */ void messagePingChanged(); /*@jsdoc * Triggered when the value of the position property changes. * @function Stats.positionChanged * @returns {Signal} */ void positionChanged(); /*@jsdoc * Triggered when the value of the speed property changes. * @function Stats.speedChanged * @returns {Signal} */ void speedChanged(); /*@jsdoc * Triggered when the value of the yaw property changes. * @function Stats.yawChanged * @returns {Signal} */ void yawChanged(); /*@jsdoc * Triggered when the value of the avatarMixerInKbps property changes. * @function Stats.avatarMixerInKbpsChanged * @returns {Signal} */ void avatarMixerInKbpsChanged(); /*@jsdoc * Triggered when the value of the avatarMixerInPps property changes. * @function Stats.avatarMixerInPpsChanged * @returns {Signal} */ void avatarMixerInPpsChanged(); /*@jsdoc * Triggered when the value of the avatarMixerOutKbps property changes. * @function Stats.avatarMixerOutKbpsChanged * @returns {Signal} */ void avatarMixerOutKbpsChanged(); /*@jsdoc * Triggered when the value of the avatarMixerOutPps property changes. * @function Stats.avatarMixerOutPpsChanged * @returns {Signal} */ void avatarMixerOutPpsChanged(); /*@jsdoc * Triggered when the value of the myAvatarSendRate property changes. * @function Stats.myAvatarSendRateChanged * @returns {Signal} */ void myAvatarSendRateChanged(); /*@jsdoc * Triggered when the value of the audioMixerInKbps property changes. * @function Stats.audioMixerInKbpsChanged * @returns {Signal} */ void audioMixerInKbpsChanged(); /*@jsdoc * Triggered when the value of the audioMixerInPps property changes. * @function Stats.audioMixerInPpsChanged * @returns {Signal} */ void audioMixerInPpsChanged(); /*@jsdoc * Triggered when the value of the audioMixerOutKbps property changes. * @function Stats.audioMixerOutKbpsChanged * @returns {Signal} */ void audioMixerOutKbpsChanged(); /*@jsdoc * Triggered when the value of the audioMixerOutPps property changes. * @function Stats.audioMixerOutPpsChanged * @returns {Signal} */ void audioMixerOutPpsChanged(); /*@jsdoc * Triggered when the value of the audioMixerKbps property changes. * @function Stats.audioMixerKbpsChanged * @returns {Signal} */ void audioMixerKbpsChanged(); /*@jsdoc * Triggered when the value of the audioMixerPps property changes. * @function Stats.audioMixerPpsChanged * @returns {Signal} */ void audioMixerPpsChanged(); /*@jsdoc * Triggered when the value of the audioOutboundPPS property changes. * @function Stats.audioOutboundPPSChanged * @returns {Signal} */ void audioOutboundPPSChanged(); /*@jsdoc * Triggered when the value of the audioSilentOutboundPPS property changes. * @function Stats.audioSilentOutboundPPSChanged * @returns {Signal} */ void audioSilentOutboundPPSChanged(); /*@jsdoc * Triggered when the value of the audioInboundPPS property changes. * @function Stats.audioInboundPPSChanged * @returns {Signal} */ void audioInboundPPSChanged(); /*@jsdoc * Triggered when the value of the audioAudioInboundPPS property changes. * @function Stats.audioAudioInboundPPSChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. Use * {@link Stats.audioInboundPPSChanged|audioInboundPPSChanged} instead. */ void audioAudioInboundPPSChanged(); /*@jsdoc * Triggered when the value of the audioSilentInboundPPS property changes. * @function Stats.audioSilentInboundPPSChanged * @returns {Signal} */ void audioSilentInboundPPSChanged(); /*@jsdoc * Triggered when the value of the audioPacketLoss property changes. * @function Stats.audioPacketLossChanged * @returns {Signal} */ void audioPacketLossChanged(); /*@jsdoc * Triggered when the value of the audioCodec property changes. * @function Stats.audioCodecChanged * @returns {Signal} */ void audioCodecChanged(); /*@jsdoc * Triggered when the value of the audioNoiseGate property changes. * @function Stats.audioNoiseGateChanged * @returns {Signal} */ void audioNoiseGateChanged(); /*@jsdoc * Triggered when the value of the audioInjectors property changes. * @function Stats.audioInjectorsChanged * @returns {Signal} */ void audioInjectorsChanged(); /*@jsdoc * Triggered when the value of the entityPacketsInKbps property changes. * @function Stats.entityPacketsInKbpsChanged * @returns {Signal} */ void entityPacketsInKbpsChanged(); /*@jsdoc * Triggered when the value of the downloads property changes. * @function Stats.downloadsChanged * @returns {Signal} */ void downloadsChanged(); /*@jsdoc * Triggered when the value of the downloadLimit property changes. * @function Stats.downloadLimitChanged * @returns {Signal} */ void downloadLimitChanged(); /*@jsdoc * Triggered when the value of the downloadsPending property changes. * @function Stats.downloadsPendingChanged * @returns {Signal} */ void downloadsPendingChanged(); /*@jsdoc * Triggered when the value of the downloadUrls property changes. * @function Stats.downloadUrlsChanged * @returns {Signal} */ void downloadUrlsChanged(); /*@jsdoc * Triggered when the value of the downloadProgresses property changes. * @function Stats.downloadProgressesChanged * @returns {Signal} */ void downloadProgressesChanged(); /*@jsdoc * Triggered when the value of the downloadPriorities property changes. * @function Stats.downloadPrioritiesChanged * @returns {Signal} */ void downloadPrioritiesChanged(); /*@jsdoc * Triggered when the value of the processing property changes. * @function Stats.processingChanged * @returns {Signal} */ void processingChanged(); /*@jsdoc * Triggered when the value of the processingPending property changes. * @function Stats.processingPendingChanged * @returns {Signal} */ void processingPendingChanged(); /*@jsdoc * Triggered when the value of the triangles property changes. * @function Stats.trianglesChanged * @returns {Signal} */ void trianglesChanged(); /*@jsdoc * Triggered when the value of the drawcalls property changes. * @function Stats.drawcallsChanged * @returns {Signal} */ void drawcallsChanged(); /*@jsdoc * Triggered when the value of the materialSwitches property changes. * @function Stats.materialSwitchesChanged * @returns {Signal} */ void materialSwitchesChanged(); /*@jsdoc * Triggered when the value of the itemConsidered property changes. * @function Stats.itemConsideredChanged * @returns {Signal} */ void itemConsideredChanged(); /*@jsdoc * Triggered when the value of the itemOutOfView property changes. * @function Stats.itemOutOfViewChanged * @returns {Signal} */ void itemOutOfViewChanged(); /*@jsdoc * Triggered when the value of the itemTooSmall property changes. * @function Stats.itemTooSmallChanged * @returns {Signal} */ void itemTooSmallChanged(); /*@jsdoc * Triggered when the value of the itemRendered property changes. * @function Stats.itemRenderedChanged * @returns {Signal} */ void itemRenderedChanged(); /*@jsdoc * Triggered when the value of the shadowConsidered property changes. * @function Stats.shadowConsideredChanged * @returns {Signal} */ void shadowConsideredChanged(); /*@jsdoc * Triggered when the value of the shadowOutOfView property changes. * @function Stats.shadowOutOfViewChanged * @returns {Signal} */ void shadowOutOfViewChanged(); /*@jsdoc * Triggered when the value of the shadowTooSmall property changes. * @function Stats.shadowTooSmallChanged * @returns {Signal} */ void shadowTooSmallChanged(); /*@jsdoc * Triggered when the value of the shadowRendered property changes. * @function Stats.shadowRenderedChanged * @returns {Signal} */ void shadowRenderedChanged(); /*@jsdoc * Triggered when the value of the sendingMode property changes. * @function Stats.sendingModeChanged * @returns {Signal} */ void sendingModeChanged(); /*@jsdoc * Triggered when the value of the packetStats property changes. * @function Stats.packetStatsChanged * @returns {Signal} */ void packetStatsChanged(); /*@jsdoc * Triggered when the value of the lodAngle property changes. * @function Stats.lodAngleChanged * @returns {Signal} */ void lodAngleChanged(); /*@jsdoc * Triggered when the value of the lodTargetFramerate property changes. * @function Stats.lodTargetFramerateChanged * @returns {Signal} */ void lodTargetFramerateChanged(); /*@jsdoc * Triggered when the value of the lodStatus property changes. * @function Stats.lodStatusChanged * @returns {Signal} */ void lodStatusChanged(); /*@jsdoc * Triggered when the value of the numEntityUpdates property changes. * @function Stats.numEntityUpdatesChanged * @returns {Signal} */ void numEntityUpdatesChanged(); /*@jsdoc * Triggered when the value of the numNeededEntityUpdates property changes. * @function Stats.numNeededEntityUpdatesChanged * @returns {Signal} */ void numNeededEntityUpdatesChanged(); /*@jsdoc * Triggered when the value of the timingStats property changes. * @function Stats.timingStatsChanged * @returns {Signal} */ void timingStatsChanged(); /*@jsdoc * Triggered when the value of the gameUpdateStats property changes. * @function Stats.gameUpdateStatsChanged * @returns {Signal} */ void gameUpdateStatsChanged(); /*@jsdoc * Triggered when the value of the serverElements property changes. * @function Stats.serverElementsChanged * @returns {Signal} */ void serverElementsChanged(); /*@jsdoc * Triggered when the value of the serverInternal property changes. * @function Stats.serverInternalChanged * @returns {Signal} */ void serverInternalChanged(); /*@jsdoc * Triggered when the value of the serverLeaves property changes. * @function Stats.serverLeavesChanged * @returns {Signal} */ void serverLeavesChanged(); /*@jsdoc * Triggered when the value of the localElements property changes. * @function Stats.localElementsChanged * @returns {Signal} */ void localElementsChanged(); /*@jsdoc * Triggered when the value of the localInternal property changes. * @function Stats.localInternalChanged * @returns {Signal} */ void localInternalChanged(); /*@jsdoc * Triggered when the value of the localLeaves property changes. * @function Stats.localLeavesChanged * @returns {Signal} */ void localLeavesChanged(); /*@jsdoc * Triggered when the value of the rectifiedTextureCount property changes. * @function Stats.rectifiedTextureCountChanged * @returns {Signal} */ void rectifiedTextureCountChanged(); /*@jsdoc * Triggered when the value of the decimatedTextureCount property changes. * @function Stats.decimatedTextureCountChanged * @returns {Signal} */ void decimatedTextureCountChanged(); /*@jsdoc * Triggered when the value of the gpuBuffers property changes. * @function Stats.gpuBuffersChanged * @returns {Signal} */ void gpuBuffersChanged(); /*@jsdoc * Triggered when the value of the gpuBufferMemory property changes. * @function Stats.gpuBufferMemoryChanged * @returns {Signal} */ void gpuBufferMemoryChanged(); /*@jsdoc * Triggered when the value of the gpuTextures property changes. * @function Stats.gpuTexturesChanged * @returns {Signal} */ void gpuTexturesChanged(); /*@jsdoc * Triggered when the value of the glContextSwapchainMemory property changes. * @function Stats.glContextSwapchainMemoryChanged * @returns {Signal} */ void glContextSwapchainMemoryChanged(); /*@jsdoc * Triggered when the value of the qmlTextureMemory property changes. * @function Stats.qmlTextureMemoryChanged * @returns {Signal} */ void qmlTextureMemoryChanged(); /*@jsdoc * Triggered when the value of the texturePendingTransfers property changes. * @function Stats.texturePendingTransfersChanged * @returns {Signal} */ void texturePendingTransfersChanged(); /*@jsdoc * Triggered when the value of the gpuTextureMemory property changes. * @function Stats.gpuTextureMemoryChanged * @returns {Signal} */ void gpuTextureMemoryChanged(); /*@jsdoc * Triggered when the value of the gpuTextureResidentMemory property changes. * @function Stats.gpuTextureResidentMemoryChanged * @returns {Signal} */ void gpuTextureResidentMemoryChanged(); /*@jsdoc * Triggered when the value of the gpuTextureFramebufferMemory property changes. * @function Stats.gpuTextureFramebufferMemoryChanged * @returns {Signal} */ void gpuTextureFramebufferMemoryChanged(); /*@jsdoc * Triggered when the value of the gpuTextureResourceMemory property changes. * @function Stats.gpuTextureResourceMemoryChanged * @returns {Signal} */ void gpuTextureResourceMemoryChanged(); /*@jsdoc * Triggered when the value of the gpuTextureResourceIdealMemory property changes. * @function Stats.gpuTextureResourceIdealMemoryChanged * @returns {Signal} */ void gpuTextureResourceIdealMemoryChanged(); /*@jsdoc * Triggered when the value of the gpuTextureResourcePopulatedMemory property changes. * @function Stats.gpuTextureResourcePopulatedMemoryChanged * @returns {Signal} */ void gpuTextureResourcePopulatedMemoryChanged(); /*@jsdoc * Triggered when the value of the gpuTextureExternalMemory property changes. * @function Stats.gpuTextureExternalMemoryChanged * @returns {Signal} */ void gpuTextureExternalMemoryChanged(); /*@jsdoc * Triggered when the value of the gpuTextureMemoryPressureState property changes. * @function Stats.gpuTextureMemoryPressureStateChanged * @returns {Signal} */ void gpuTextureMemoryPressureStateChanged(); /*@jsdoc * Triggered when the value of the gpuFreeMemory property changes. * @function Stats.gpuFreeMemoryChanged * @returns {Signal} */ void gpuFreeMemoryChanged(); /*@jsdoc * Triggered when the value of the gpuFrameSize property changes. * @function Stats.gpuFrameSizeChanged * @returns {Signal} */ void gpuFrameSizeChanged(); /*@jsdoc * Triggered when the value of the gpuFrameTime property changes. * @function Stats.gpuFrameTimeChanged * @returns {Signal} */ void gpuFrameTimeChanged(); /*@jsdoc * Triggered when the value of the gpuFrameTimePerPixel property changes. * @function Stats.gpuFrameTimePerPixelChanged * @returns {Signal} */ void gpuFrameTimePerPixelChanged(); /*@jsdoc * Triggered when the value of the batchFrameTime property changes. * @function Stats.batchFrameTimeChanged * @returns {Signal} */ void batchFrameTimeChanged(); /*@jsdoc * Triggered when the value of the engineFrameTime property changes. * @function Stats.engineFrameTimeChanged * @returns {Signal} */ void engineFrameTimeChanged(); /*@jsdoc * Triggered when the value of the avatarSimulationTime property changes. * @function Stats.avatarSimulationTimeChanged * @returns {Signal} */ void avatarSimulationTimeChanged(); /*@jsdoc * Triggered when the value of the stylusPicksCount property changes. * @function Stats.stylusPicksCountChanged * @returns {Signal} */ void stylusPicksCountChanged(); /*@jsdoc * Triggered when the value of the rayPicksCount property changes. * @function Stats.rayPicksCountChanged * @returns {Signal} */ void rayPicksCountChanged(); /*@jsdoc * Triggered when the value of the parabolaPicksCount property changes. * @function Stats.parabolaPicksCountChanged * @returns {Signal} */ void parabolaPicksCountChanged(); /*@jsdoc * Triggered when the value of the collisionPicksCount property changes. * @function Stats.collisionPicksCountChanged * @returns {Signal} */ void collisionPicksCountChanged(); /*@jsdoc * Triggered when the value of the stylusPicksUpdated property changes. * @function Stats.stylusPicksUpdatedChanged * @returns {Signal} */ void stylusPicksUpdatedChanged(); /*@jsdoc * Triggered when the value of the rayPicksUpdated property changes. * @function Stats.rayPicksUpdatedChanged * @returns {Signal} */ void rayPicksUpdatedChanged(); /*@jsdoc * Triggered when the value of the parabolaPicksUpdated property changes. * @function Stats.parabolaPicksUpdatedChanged * @returns {Signal} */ void parabolaPicksUpdatedChanged(); /*@jsdoc * Triggered when the value of the collisionPicksUpdated property changes. * @function Stats.collisionPicksUpdatedChanged * @returns {Signal} */ void collisionPicksUpdatedChanged(); /*@jsdoc * Triggered when the value of the mainThreadQueueDepth property changes. * @function Stats.mainThreadQueueDepthChanged * @returns {Signal} */ void mainThreadQueueDepthChanged(); /*@jsdoc * Triggered when the value of the nodeListThreadQueueDepth property changes. * @function Stats.nodeListThreadQueueDepth * @returns {Signal} */ void nodeListThreadQueueDepthChanged(); /*@jsdoc * Triggered when the value of the eventQueueDebuggingOn property changes. * @function Stats.eventQueueDebuggingOnChanged * @returns {Signal} */ void eventQueueDebuggingOnChanged(); // Stats.qml signals: shouldn't be in the API. /*@jsdoc * Triggered when the value of the bgColor property changes. * @function Stats.bgColorChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ // QQuickItem signals: shouldn't be in the API. /*@jsdoc * Triggered when the value of the activeFocus property changes. * @function Stats.activeFocusChanged * @param {boolean} activeFocus - Active focus. * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the activeFocusOnTab property changes. * @function Stats.activeFocusOnTabChanged * @param {boolean} activeFocusOnTab - Active focus on tab. * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the antialiasing property changes. * @function Stats.antialiasingChanged * @param {boolean} antialiasing - Antialiasing. * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the baselineOffset property changes. * @function Stats.baselineOffsetChanged * @param {number} baselineOffset - Baseline offset. * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the children property changes. * @function Stats.childrenChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the position and size of the rectangle containing the children changes. * @function Stats.childrenRectChanged * @param {Rect} childrenRect - Children rect. * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the clip property changes. * @function Stats.clipChanged * @param {boolean} clip - Clip. * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the containmentMask property changes. * @function Stats.containmentMaskChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the enabled property changes. * @function Stats.enabledChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the focus property changes. * @function Stats.focusChanged * @param {boolean} focus - Focus. * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the height property changes. * @function Stats.heightChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the implicitHeight property changes. * @function Stats.implicitHeightChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the implicitWidth property changes. * @function Stats.implicitWidthChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the opacity property changes. * @function Stats.opacityChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the parent item changes. * @function Stats.parentChanged * @param {object} parent - Parent. * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the rotation property changes. * @function Stats.rotationChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the scale property changes. * @function Stats.scaleChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the smooth property changes. * @function Stats.smoothChanged * @param {boolean} smooth - Smooth. * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the state property changes. * @function Stats.stateChanged * @paramm {string} state - State. * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the transformOrigin property changes. * @function Stats.transformOriginChanged * @param {number} transformOrigin - Transformm origin. * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the visibleChanged property changes. * @function Stats.visibleChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the list of visible children changes. * @function Stats.visibleChildrenChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the width property changes. * @function Stats.widthChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the stats window changes. * @function Stats.windowChanged * @param {object} window - Window. * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the x property changes. * @function Stats.xChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the y property changes. * @function Stats.yChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ /*@jsdoc * Triggered when the value of the z property changes. * @function Stats.zChanged * @returns {Signal} * @deprecated This signal is deprecated and will be removed. */ // QQuickItem methods: shouldn't be in the API. /*@jsdoc * @function Stats.childAt * @param {number} x - X. * @param {number} y - Y. * @returns {object} * @deprecated This method is deprecated and will be removed. */ /*@jsdoc * @function Stats.contains * @param {Vec2} point - Point * @returns {boolean} * @deprecated This method is deprecated and will be removed. */ /*@jsdoc * @function Stats.forceActiveFocus * @param {number} [reason=7] - Reason * @deprecated This method is deprecated and will be removed. */ /*@jsdoc * @function Stats.grabToImage * @param {object} callback - Callback. * @param {Size} [targetSize=0,0] - Target size. * @returns {boolean} * @deprecated This method is deprecated and will be removed. */ /*@jsdoc * @function Stats.mapFromGlobal * @param {object} global - Global. * @deprecated This method is deprecated and will be removed. */ /*@jsdoc * @function Stats.mapFromItem * @param {object} item - Item. * @deprecated This method is deprecated and will be removed. */ /*@jsdoc * @function Stats.mapToGlobal * @param {object} global - Global. * @deprecated This method is deprecated and will be removed. */ /*@jsdoc * @function Stats.mapToItem * @param {object} item - Item * @deprecated This method is deprecated and will be removed. */ /*@jsdoc * @function Stats.nextItemInFocusChain * @param {boolean} [forward=true] - Forward. * @returns {object} * @deprecated This method is deprecated and will be removed. */ /*@jsdoc * @function Stats.update * @deprecated This method is deprecated and will be removed. */ private: int _recentMaxPackets { 0 } ; // recent max incoming voxel packets to process bool _resetRecentMaxPacketsSoon { true }; bool _expanded { false }; bool _showTimingDetails { false }; bool _showGameUpdateStats { false }; QString _monospaceFont; const AudioIOStats* _audioStats; QStringList _downloadUrls { QStringList() }; QList _downloadProgresses { QList() }; QList _downloadPriorities { QList() }; }; #endif // hifi_Stats_h