Browse Source

Removed stat collector code, it hasn't been used in years and is very incomplete.

Jorrit Rouwe 3 years ago
parent
commit
92a117e0f0
39 changed files with 6 additions and 963 deletions
  1. 1 1
      Build/Android/UnitTests/build.gradle
  2. 2 2
      Build/CMakeLists.txt
  3. 0 1
      Build/README.md
  4. 0 1
      Docs/Samples.md
  5. 1 2
      Doxyfile
  6. 0 369
      Jolt/Core/StatCollector.cpp
  7. 0 124
      Jolt/Core/StatCollector.h
  8. 0 2
      Jolt/Jolt.cmake
  9. 0 29
      Jolt/Physics/Body/BodyManager.cpp
  10. 0 5
      Jolt/Physics/Body/BodyManager.h
  11. 0 38
      Jolt/Physics/Collision/CollideConvexVsTriangles.cpp
  12. 0 14
      Jolt/Physics/Collision/CollideConvexVsTriangles.h
  13. 0 38
      Jolt/Physics/Collision/Shape/ConvexShape.cpp
  14. 0 16
      Jolt/Physics/Collision/Shape/ConvexShape.h
  15. 0 5
      Jolt/Physics/Constraints/Constraint.h
  16. 0 12
      Jolt/Physics/Constraints/ConstraintManager.cpp
  17. 0 5
      Jolt/Physics/Constraints/ConstraintManager.h
  18. 0 39
      Jolt/Physics/Constraints/ContactConstraintManager.cpp
  19. 0 13
      Jolt/Physics/Constraints/ContactConstraintManager.h
  20. 0 20
      Jolt/Physics/Constraints/HingeConstraint.cpp
  21. 0 3
      Jolt/Physics/Constraints/HingeConstraint.h
  22. 0 40
      Jolt/Physics/Constraints/PathConstraint.cpp
  23. 0 3
      Jolt/Physics/Constraints/PathConstraint.h
  24. 0 24
      Jolt/Physics/Constraints/SixDOFConstraint.cpp
  25. 0 3
      Jolt/Physics/Constraints/SixDOFConstraint.h
  26. 0 20
      Jolt/Physics/Constraints/SliderConstraint.cpp
  27. 0 3
      Jolt/Physics/Constraints/SliderConstraint.h
  28. 0 16
      Jolt/Physics/Constraints/SwingTwistConstraint.cpp
  29. 0 3
      Jolt/Physics/Constraints/SwingTwistConstraint.h
  30. 0 30
      Jolt/Physics/PhysicsSystem.cpp
  31. 0 11
      Jolt/Physics/PhysicsSystem.h
  32. 1 20
      Samples/SamplesApp.cpp
  33. 0 13
      TestFramework/Application/Application.cpp
  34. 1 15
      WebIncludes/ReadMe.txt
  35. 0 1
      WebIncludes/dygraph.min.css
  36. 0 1
      WebIncludes/dygraph.min.js
  37. BIN
      WebIncludes/icons.gif
  38. 0 16
      WebIncludes/jquery.fancytree-all-deps.min.js
  39. 0 5
      WebIncludes/ui.fancytree.min.css

+ 1 - 1
Build/Android/UnitTests/build.gradle

@@ -15,7 +15,7 @@ android {
 
         externalNativeBuild {
             cmake {
-                cppFlags '-std=c++17 -Wall -Werror -DJPH_STAT_COLLECTOR -DJPH_PROFILE_ENABLED -DJPH_DEBUG_RENDERER'
+                cppFlags '-std=c++17 -Wall -Werror -DJPH_PROFILE_ENABLED -DJPH_DEBUG_RENDERER'
                 arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=c++_static'
             }
         }

+ 2 - 2
Build/CMakeLists.txt

@@ -22,7 +22,7 @@ if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
 	set(CMAKE_CXX_FLAGS "/std:c++17 /Zc:__cplusplus /GR- /Gm- /Wall /WX /EHsc /nologo /diagnostics:classic /FC /arch:AVX2 /fp:except- /Zc:inline /Zi /DWIN32 /D_WINDOWS /DUNICODE /D_UNICODE")
 	
 	# Set compiler flags for various configurations
-	set(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /GS /Od /Ob0 /RTC1 /DJPH_STAT_COLLECTOR /DJPH_PROFILE_ENABLED /DJPH_DEBUG_RENDERER")
+	set(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /GS /Od /Ob0 /RTC1 /DJPH_PROFILE_ENABLED /DJPH_DEBUG_RENDERER")
 	set(CMAKE_CXX_FLAGS_RELEASE "/DNDEBUG /GS- /GL /Gy /O2 /Oi /Ot /DJPH_PROFILE_ENABLED /DJPH_DEBUG_RENDERER")
 	set(CMAKE_CXX_FLAGS_DISTRIBUTION "/DNDEBUG /GS- /GL /Gy /O2 /Oi /Ot")
 	set(CMAKE_CXX_FLAGS_RELEASEASAN "/DNDEBUG /DJPH_PROFILE_ENABLED /DJPH_DISABLE_TEMP_ALLOCATOR /DJPH_DEBUG_RENDERER -fsanitize=address /Od")
@@ -57,7 +57,7 @@ elseif ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
 	endif()
 
 	# Set compiler flags for various configurations
-	set(CMAKE_CXX_FLAGS_DEBUG "-g -D_DEBUG -DJPH_STAT_COLLECTOR -DJPH_PROFILE_ENABLED -DJPH_DEBUG_RENDERER") # Clang reorders variables so that div by zero occurs if we enable exception checking
+	set(CMAKE_CXX_FLAGS_DEBUG "-g -D_DEBUG -DJPH_PROFILE_ENABLED -DJPH_DEBUG_RENDERER") # Clang reorders variables so that div by zero occurs if we enable exception checking
 	set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -DJPH_PROFILE_ENABLED -DJPH_DEBUG_RENDERER")
 	set(CMAKE_CXX_FLAGS_DISTRIBUTION "-DNDEBUG")
 	set(CMAKE_CXX_FLAGS_RELEASEASAN "-DNDEBUG -DJPH_PROFILE_ENABLED -DJPH_DISABLE_TEMP_ALLOCATOR -DJPH_DEBUG_RENDERER -fsanitize=address")

+ 0 - 1
Build/README.md

@@ -22,7 +22,6 @@ There are a number of user configurable defines that turn on/off certain feature
 
 - JPH_PROFILE_ENABLED - Turns on the internal profiler.
 - JPH_EXTERNAL_PROFILE - Turns on the internal profiler but forwards the information to a user defined external system (see Profiler.h).
-- JPH_STAT_COLLECTOR - Turns on the stat collector system which allows you to see internal properties over time (see StatCollector.h)
 - JPH_DEBUG_RENDERER - Adds support to draw lines and triangles, used to be able to debug draw the state of the world.
 - JPH_DISABLE_TEMP_ALLOCATOR - Disables the temporary memory allocator, used mainly to allow ASAN to do its job.
 - JPH_FLOATING_POINT_EXCEPTIONS_ENABLED - Turns on division by zero and invalid floating point exception support in order to detect bugs (Windows only).

+ 0 - 1
Docs/Samples.md

@@ -24,7 +24,6 @@ This document describes the demos in the Samples application (currently compiles
 * Shift + , - Play reverse (only when Physics Settings / Record State for Playback is on).
 * Shift + . - Replay forward (only when Physics Settings / Record State for Playback is on).
 * T - Dump frame timing information to profile_*.html (when JPH_PROFILE_ENABLED defined).
-* Y - Start / stop recording stats. Stats?.html is written when stopping (when JPH_STAT_COLLECTOR defined).
 
 ## The Tests
 

+ 1 - 2
Doxyfile

@@ -2193,8 +2193,7 @@ INCLUDE_FILE_PATTERNS  =
 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
 
 PREDEFINED             = _WIN32 \
-                         JPH_PROFILE_ENABLED \
-                         JPH_STAT_COLLECTOR
+                         JPH_PROFILE_ENABLED
 
 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
 # tag can be used to specify a list of macro names that should be expanded. The

+ 0 - 369
Jolt/Core/StatCollector.cpp

@@ -1,369 +0,0 @@
-// SPDX-FileCopyrightText: 2021 Jorrit Rouwe
-// SPDX-License-Identifier: MIT
-
-#include <Jolt.h>
-
-#include <Core/StatCollector.h>
-#include <Core/Color.h>
-#include <Core/StringTools.h>
-#include <fstream>
-
-#ifdef JPH_STAT_COLLECTOR
-
-namespace JPH {
-
-StatCollector StatCollector::sInstance;
-
-string StatCollector::Variant::ToString() const
-{
-	switch (mType)
-	{
-	case EType::Float:
-		return ConvertToString(mFloat);
-	case EType::Int:
-		return ConvertToString(mInt);
-	case EType::Bool:
-		return ConvertToString(mBool);
-	case EType::Undefined:
-	default:
-		JPH_ASSERT(false);
-		return "";
-	}
-}
-
-void StatCollector::SetNextFrame()
-{
-	lock_guard lock(mMutex);
-
-	if (mIsCapturing)
-		mCurrentFrame = &mFrames[mCurrentFrameNumber++];
-}
-
-void StatCollector::ResetInternal()
-{
-	mCurrentFrameNumber = 0;
-	mCurrentFrame = nullptr;
-
-	mFrames.clear();
-	mKeys.clear();
-	mNextKey = 0;
-}
-
-void StatCollector::Reset()
-{
-	lock_guard lock(mMutex);
-
-	ResetInternal();	
-}
-
-void StatCollector::StartCapture()
-{
-	lock_guard lock(mMutex);
-
-	ResetInternal();
-
-	mIsCapturing = true;
-}
-
-void StatCollector::AddItem(const string &inName, const Variant &inValue)
-{
-	lock_guard lock(mMutex);
-
-	JPH_ASSERT(mCurrentFrame != nullptr, "Don't forget to call SetFrame(...)");
-
-	// Determine key for inName
-	pair<KeyIDMap::iterator, bool> p = mKeys.insert(KeyIDMap::value_type(inName, mNextKey));
-
-	// Increment key inName was new
-	if (p.second)
-		++mNextKey;
-
-	// Take key from map
-	int key = p.first->second;
-
-	// Store value
-	(*mCurrentFrame)[key] = inValue;
-}
-
-void StatCollector::AddItem(const string &inName, Vec3Arg inValue)
-{
-	AddItem(inName + ".X", inValue.GetX());
-	AddItem(inName + ".Y", inValue.GetY());
-	AddItem(inName + ".Z", inValue.GetZ());
-}
-
-void StatCollector::AddItem(const string &inName, QuatArg inValue)
-{
-	Vec3 axis;
-	float angle;
-	inValue.GetAxisAngle(axis, angle);
-	AddItem(inName + ".Axis", axis);
-	AddItem(inName + ".Angle", RadiansToDegrees(angle));
-}
-
-struct StatTreeNode
-{
-	using Children = map<string, StatTreeNode>;
-
-	int			mIndex = -1;
-	Children	mChildren;
-};
-
-static void sWriteStatTree(ofstream &ioStream, const StatTreeNode &inNode)
-{
-	bool first = true;
-	for (const StatTreeNode::Children::value_type &c : inNode.mChildren)
-	{
-		// Write comma if this is not the first line
-		if (!first)
-			ioStream << ",";
-		first = false;
-
-		// Write title
-		ioStream << "{title:\"" + c.first + "\"";
-		
-		// Write key
-		ioStream << ",key:\"" + ConvertToString(c.second.mIndex) + "\"";
-		
-		// Write children
-		if (!c.second.mChildren.empty())
-		{
-			ioStream << ",children:[";
-				sWriteStatTree(ioStream, c.second);
-			ioStream << "]";
-		}
-
-		ioStream << "}";
-	}
-}
-
-void StatCollector::StopCapture(const char *inFileName)
-{
-	lock_guard lock(mMutex);
-
-	// Stop capturing
-	mIsCapturing = false;
-
-	// Open file
-	ofstream f;
-	f.open(inFileName, ofstream::out | ofstream::trunc);
-	if (!f.is_open()) 
-		return;
-
-	// Start html file
-	f << R"(<!DOCTYPE html>
-<html>
-	<head>
-		<title>Stats</title>
-		<script type="text/javascript" src="WebIncludes/jquery-3.2.1.min.js"></script>
-		<script src="WebIncludes/dygraph.min.js"></script>
-		<link rel="stylesheet" href="WebIncludes/dygraph.min.css"/>
-		<script src="WebIncludes/jquery.fancytree-all-deps.min.js"></script>
-		<link rel="stylesheet" href="WebIncludes/ui.fancytree.min.css"/>
-		<style>
-			#labelsdiv>span { display: block; }
-			ul.fancytree-container { border: 0px; }
-		</style>	
-	</head>
-	<body>
-	<div style="width: 100%; height: 50vh;">
-		<div id="graphdiv" style="float: left; width:60%; height: 50vh; overflow: hidden;"></div>
-		<div id="labelsdiv" style="float: right; width:39%; height: 50vh; overflow-x: hidden; overflow-y: scroll;"></div>
-	</div>
-	<p>
-		<button id="btnSelectAll">Select All</button> &nbsp; 
-		<button id="btnDeselectAll">Deselect All</button> &nbsp; 
-		<input id="search" placeholder="Filter..." autocomplete="off">
-		<button id="btnResetSearch">&times;</button>
-		<span id="matches"></span>
-	</p>
-	<div style="width:100%; height: 40vh; overflow-x: hidden; overflow-y: scroll;">
-		<div id="tree" style="width:100%;">
-		</div>
-	</div>
-	<script type="text/javascript">
-		"use strict";
-)";
-
-	// Write all data points
-	f << "var point_data = [";
-	bool first = true;
-	for (const FrameMap::value_type &entry : mFrames)
-	{
-		// Don't write empty samples
-		if (entry.second.empty())
-			continue;
-
-		// Write comma at start of each next line
-		if (!first)
-			f << ",";
-		first = false;
-
-		// Write frame number
-		f << "[" << entry.first;
-
-		// Write all columns
-		for (const KeyIDMap::value_type &key : mKeys)
-		{
-			KeyValueMap::const_iterator v = entry.second.find(key.second);
-			if (v == entry.second.end())
-				f << ",NaN";
-			else
-				f << "," << v->second.ToString();
-		}
-
-		f << "]\n";
-	}
-	f << "];\n";
-
-	// Write labels
-	f << "var labels_data = [\"Frame\"";
-	for (const KeyIDMap::value_type &key : mKeys)
-		f << ",\"" << key.first << "\"";
-	f << "];\n";
-
-	// Write colors
-	f << "var colors_data = ['rgb(0,0,0)'";
-	for (int i = 0; i < (int)mKeys.size() - 1; ++i)
-	{
-		Color c = Color::sGetDistinctColor(i);
-		f << ",'rgb(" << (int)c.r << "," << (int)c.g << "," << (int)c.b << ")'";
-	}
-	f << "];\n";
-
-	// Calculate tree
-	StatTreeNode root;
-	int index = 0;
-	for (const KeyIDMap::value_type &key : mKeys)
-	{
-		// Split parts of key
-		vector<string> parts;
-		StringToVector(key.first, parts, ".");
-
-		// Create tree nodes
-		StatTreeNode *cur = &root;
-		for (string p : parts)
-			cur = &cur->mChildren[p];
-
-		// Set index on leaf node
-		cur->mIndex = index;
-		++index;
-	}
-
-	// Output tree
-	f << "var tree_data = [";
-	sWriteStatTree(f, root);
-	f << "];\n";
-
-	// Write main script
-	f << R"-(
-		var graph = new Dygraph(
-			document.getElementById("graphdiv"),
-			point_data,
-			{ 
-			labels: labels_data,
-			colors: colors_data,
-			labelsDiv: labelsdiv,
-			hideOverlayOnMouseOut: false,
-			showRangeSelector: true,
-			xlabel: "Frame",
-			ylabel: "Value"
-		});
-
-		function sync_enabled_series(tree, graph) {
-			var is_visible = [];
-			for (var i = 0; i < graph.numColumns() - 1; ++i)
-				is_visible[i] = false;
-
-			var selected_nodes = tree.getSelectedNodes(false);
-			for (var i = 0; i < selected_nodes.length; ++i)
-			{
-				var key = parseInt(selected_nodes[i].key);
-				if (key >= 0)
-					is_visible[key] = true;
-			}
-				
-			graph.setVisibility(is_visible);
-		};
-
-		$(function() {
-			$("#tree").fancytree({
-				extensions: ["filter"],
-				quicksearch: true,
-				source: tree_data,
-				icon: false,
-				checkbox: true,
-				selectMode: 3,
-				keyboard: true,
-				quicksearch: true,
-				filter: {
-					autoExpand: true,			
-					mode: "hide"
-				},
-				select: function(event, data) {
-					sync_enabled_series(tree, graph);
-				}
-			});
-		
-			var tree = $("#tree").fancytree("getTree");
-		
-			var no_events = { noEvents: true };
-
-			tree.enableUpdate(false);
-			tree.visit(function(node) {
-				node.setExpanded(true);
-				node.setSelected(true, no_events);
-			});	
-			tree.enableUpdate(true);
-		
-			$("#search").keyup(function(e) {
-				var match = $(this).val();
-				if (e && e.which === $.ui.keyCode.ESCAPE || $.trim(match) === "") {
-					$("#btnResetSearch").click();
-					return;
-				}
-				var n = tree.filterBranches.call(tree, match, { autoExpand: true });
-				$("#btnResetSearch").attr("disabled", false);
-				$("#matches").text("(" + n + " matches)");
-			}).focus();
-
-			$("#btnResetSearch").click(function(e) {
-				$("#search").val("");
-				$("#btnResetSearch").attr("disabled", true);
-				$("#matches").text("");
-				tree.clearFilter();
-			}).attr("disabled", true);
-
-			$("#btnDeselectAll").click(function() {
-				tree.enableUpdate(false);
-				tree.visit(function(node) {
-					if (node.isMatched())
-						node.setSelected(false, no_events);
-					});
-				tree.enableUpdate(true);
-				sync_enabled_series(tree, graph);
-				return false;
-			});
-		
-			$("#btnSelectAll").click(function() {
-				tree.enableUpdate(false);
-				tree.visit(function(node) {
-					if (node.isMatched())
-						node.setSelected(true, no_events);
-					});
-				tree.enableUpdate(true);
-				sync_enabled_series(tree, graph);
-				return false;
-			});
-		});
-	</script>
-	</body>
-</html>)-";
-
-	// Remove all collected data
-	ResetInternal();
-}
-
-} // JPH
-
-#endif // JPH_STAT_COLLECTOR

+ 0 - 124
Jolt/Core/StatCollector.h

@@ -1,124 +0,0 @@
-// SPDX-FileCopyrightText: 2021 Jorrit Rouwe
-// SPDX-License-Identifier: MIT
-
-#pragma once
-
-#include <Core/Mutex.h>
-#include <Core/NonCopyable.h>
-#include <map>
-
-#ifdef JPH_STAT_COLLECTOR
-
-namespace JPH {
-
-/// Singleton class for collacting simple stat values
-///
-/// Usage:
-///
-/// To start recording call:
-///
-///		JPH_STAT_COLLECTOR_START_CAPTURE()
-///
-/// Then start the next frame:
-///
-///		JPH_STAT_COLLECTOR_SET_NEXT_FRAME()
-///
-/// To add a stat:
-///
-///		STAT_COLLETOR_ADD("Path.To.Name", <value>)
-///
-/// where value is an int, float, bool, Vec3 or Quat
-///
-/// To dump the stats to a file call:
-///
-///		JPH_STAT_COLLECTOR_STOP_CAPTURE()
-class StatCollector : public NonCopyable
-{
-public:
-	/// Reset all stats
-	void						Reset();
-
-	/// Start / stop capture
-	void						StartCapture();
-	void						StopCapture(const char *inFileName);
-	bool						IsCapturing() const				{ return mIsCapturing; }
-
-	/// Increments the frame counter
-	void						SetNextFrame();
-
-	/// Helper class that stores data points
-	class Variant
-	{
-	public:
-		enum class EType
-		{
-			Undefined,
-			Float,
-			Int,
-			Bool,
-		};
-
-								Variant() : mType(EType::Undefined) { }
-								Variant(float inFloat) : mType(EType::Float), mFloat(inFloat) { }
-								Variant(int inInt) : mType(EType::Int), mInt(inInt) { }
-								Variant(bool inBool) : mType(EType::Bool), mBool(inBool) { }
-
-		string					ToString() const;
-
-	private:
-		EType					mType;
-
-		union
-		{
-			float				mFloat;
-			int					mInt;
-			bool				mBool;
-		};
-	};
-	
-	/// Add an item
-	void						AddItem(const string &inName, const Variant &inValue);
-	void						AddItem(const string &inName, Vec3Arg inValue);
-	void						AddItem(const string &inName, QuatArg inValue);
-
-	/// Singleton instance
-	static StatCollector		sInstance;
-								
-private:
-	/// Internal variant of Reset that does not take the lock
-	void						ResetInternal();
-
-	using KeyValueMap = map<int, Variant>;
-	using FrameMap = map<int, KeyValueMap>;
-	using KeyIDMap = map<string, int>;
-
-	Mutex						mMutex;
-	bool						mIsCapturing = false;
-	FrameMap					mFrames;
-	KeyIDMap					mKeys;
-	int							mNextKey = 0;
-	int							mCurrentFrameNumber = 0;
-	KeyValueMap *				mCurrentFrame = nullptr;
-};							
-
-#define JPH_IF_STAT_COLLECTOR(...)					__VA_ARGS__
-#define JPH_STAT_COLLECTOR_SET_NEXT_FRAME()			StatCollector::sInstance.SetNextFrame()
-#define JPH_STAT_COLLECTOR_ADD(name, value)			StatCollector::sInstance.AddItem(name, value)
-#define JPH_STAT_COLLECTOR_START_CAPTURE()			StatCollector::sInstance.StartCapture()
-#define JPH_STAT_COLLECTOR_STOP_CAPTURE(file_name)	StatCollector::sInstance.StopCapture(file_name)
-#define JPH_STAT_COLLECTOR_IS_CAPTURING()			StatCollector::sInstance.IsCapturing()
-#define JPH_STAT_COLLECTOR_RESET()					StatCollector::sInstance.Reset()
-
-} // JPH
-
-#else
-
-#define JPH_IF_STAT_COLLECTOR(...)
-#define JPH_STAT_COLLECTOR_SET_NEXT_FRAME()
-#define JPH_STAT_COLLECTOR_ADD(name, value)
-#define JPH_STAT_COLLECTOR_START_CAPTURE()		
-#define JPH_STAT_COLLECTOR_STOP_CAPTURE(file_name)		
-#define JPH_STAT_COLLECTOR_IS_CAPTURING()			false
-#define JPH_STAT_COLLECTOR_RESET()
-
-#endif

+ 0 - 2
Jolt/Jolt.cmake

@@ -44,8 +44,6 @@ set(JOLT_PHYSICS_SRC_FILES
 	${JOLT_PHYSICS_ROOT}/Core/Result.h
 	${JOLT_PHYSICS_ROOT}/Core/RTTI.cpp
 	${JOLT_PHYSICS_ROOT}/Core/RTTI.h
-	${JOLT_PHYSICS_ROOT}/Core/StatCollector.cpp
-	${JOLT_PHYSICS_ROOT}/Core/StatCollector.h
 	${JOLT_PHYSICS_ROOT}/Core/StaticArray.h
 	${JOLT_PHYSICS_ROOT}/Core/StreamIn.h
 	${JOLT_PHYSICS_ROOT}/Core/StreamOut.h

+ 0 - 29
Jolt/Physics/Body/BodyManager.cpp

@@ -10,7 +10,6 @@
 #include <Physics/Body/BodyActivationListener.h>
 #include <Physics/StateRecorder.h>
 #include <Core/StringTools.h>
-#include <Core/StatCollector.h>
 #ifdef JPH_DEBUG_RENDERER
 	#include <Renderer/DebugRenderer.h>
 #endif // JPH_DEBUG_RENDERER
@@ -727,34 +726,6 @@ void BodyManager::ValidateContactCacheForAllBodies()
 	mBodiesCacheInvalid.clear();
 }
 
-#ifdef JPH_STAT_COLLECTOR
-void BodyManager::CollectStats() const
-{
-	JPH_PROFILE_FUNCTION();
-
-	BodyLockInterfaceLocking lock_interface(const_cast<BodyManager &>(*this));
-
-	BodyIDVector active_body_ids;
-	GetActiveBodies(active_body_ids);
-
-	for (const BodyID &id : active_body_ids)
-	{
-		BodyLockRead body_lock(lock_interface, id);
-		if (body_lock.SucceededAndIsInBroadPhase())
-		{
-			const Body &body = body_lock.GetBody();
-			string prefix = "Body." + body.GetDebugName();
-			JPH_STAT_COLLECTOR_ADD(prefix + ".Position", body.GetPosition());
-			JPH_STAT_COLLECTOR_ADD(prefix + ".Rotation", body.GetRotation());
-			JPH_STAT_COLLECTOR_ADD(prefix + ".LinearVelocity", body.GetLinearVelocity());
-			JPH_STAT_COLLECTOR_ADD(prefix + ".LinearVelocity.Length", body.GetLinearVelocity().Length());
-			JPH_STAT_COLLECTOR_ADD(prefix + ".AngularVelocity", body.GetAngularVelocity());
-			JPH_STAT_COLLECTOR_ADD(prefix + ".AngularVelocity.Length", body.GetAngularVelocity().Length());
-		}
-	}
-}
-#endif // JPH_STAT_COLLECTOR
-
 #ifdef _DEBUG
 void BodyManager::ValidateActiveBodyBounds()
 {

+ 0 - 5
Jolt/Physics/Body/BodyManager.h

@@ -180,11 +180,6 @@ public:
 	void							Draw(const DrawSettings &inSettings, const PhysicsSettings &inPhysicsSettings, DebugRenderer *inRenderer);
 #endif // JPH_DEBUG_RENDERER
 
-#ifdef JPH_STAT_COLLECTOR
-	/// Collect stats for all bodies
-	void							CollectStats() const;
-#endif // JPH_STAT_COLLECTOR
-
 #ifdef JPH_ENABLE_ASSERTS
 	/// Lock the active body list, asserts when Activate/DeactivateBody is called.
 	void							SetActiveBodiesLocked(bool inLocked)		{ mActiveBodiesLocked = inLocked; }

+ 0 - 38
Jolt/Physics/Collision/CollideConvexVsTriangles.cpp

@@ -9,19 +9,11 @@
 #include <Physics/Collision/TransformedShape.h>
 #include <Physics/Collision/ActiveEdges.h>
 #include <Physics/Collision/NarrowPhaseStats.h>
-#include <Core/StatCollector.h>
 #include <Geometry/EPAPenetrationDepth.h>
 #include <Geometry/Plane.h>
 
 namespace JPH {
 
-#ifdef JPH_STAT_COLLECTOR
-alignas(JPH_CACHE_LINE_SIZE) atomic<int> CollideConvexVsTriangles::sNumCollideChecks { 0 };
-alignas(JPH_CACHE_LINE_SIZE) atomic<int> CollideConvexVsTriangles::sNumGJKChecks { 0 };
-alignas(JPH_CACHE_LINE_SIZE) atomic<int> CollideConvexVsTriangles::sNumEPAChecks { 0 };
-alignas(JPH_CACHE_LINE_SIZE) atomic<int> CollideConvexVsTriangles::sNumCollisions { 0 };
-#endif // JPH_STAT_COLLECTOR
-
 CollideConvexVsTriangles::CollideConvexVsTriangles(const ConvexShape *inShape1, Vec3Arg inScale1, Vec3Arg inScale2, Mat44Arg inCenterOfMassTransform1, Mat44Arg inCenterOfMassTransform2, const SubShapeID &inSubShapeID1, const CollideShapeSettings &inCollideShapeSettings, CollideShapeCollector &ioCollector) :
 	mCollideShapeSettings(inCollideShapeSettings),
 	mCollector(ioCollector),
@@ -49,8 +41,6 @@ void CollideConvexVsTriangles::Collide(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2,
 {
 	JPH_PROFILE_FUNCTION();
 
-	JPH_IF_STAT_COLLECTOR(sNumCollideChecks++;)
-
 	// Scale triangle and transform it to the space of 1
 	Vec3 v0 = mTransform2To1 * (mScale2 * inV0); 
 	Vec3 v1 = mTransform2To1 * (mScale2 * inV1);
@@ -80,8 +70,6 @@ void CollideConvexVsTriangles::Collide(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2,
 	EPAPenetrationDepth pen_depth;
 	EPAPenetrationDepth::EStatus status;
 
-	JPH_IF_STAT_COLLECTOR(sNumGJKChecks++;)
-
 	// Get the support function
 	if (mShape1ExCvxRadius == nullptr)
 		mShape1ExCvxRadius = mShape1->GetSupportFunction(ConvexShape::ESupportMode::ExcludeConvexRadius, mBufferExCvxRadius, mScale1);
@@ -95,7 +83,6 @@ void CollideConvexVsTriangles::Collide(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2,
 	else if (status == EPAPenetrationDepth::EStatus::Indeterminate)
 	{
 		// Need to run expensive EPA algorithm
-		JPH_IF_STAT_COLLECTOR(sNumEPAChecks++;)
 
 		// Get the support function
 		if (mShape1IncCvxRadius == nullptr)
@@ -156,34 +143,9 @@ void CollideConvexVsTriangles::Collide(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2,
 			p = mTransform1 * p;
 	}
 	
-	JPH_IF_STAT_COLLECTOR(sNumCollisions++;)
-
 	// Notify the collector
 	JPH_IF_TRACK_NARROWPHASE_STATS(TrackNarrowPhaseCollector track;)
 	mCollector.AddHit(result);
 }
 
-#ifdef JPH_STAT_COLLECTOR
-void CollideConvexVsTriangles::sResetStats()
-{
-	sNumCollideChecks = 0;
-	sNumGJKChecks = 0;
-	sNumEPAChecks = 0;
-	sNumCollisions = 0;
-}
-
-void CollideConvexVsTriangles::sCollectStats()
-{
-	JPH_PROFILE_FUNCTION();
-
-	JPH_STAT_COLLECTOR_ADD("ConvexVsTriangles.NumChecks", int(sNumCollideChecks));
-	JPH_STAT_COLLECTOR_ADD("ConvexVsTriangles.NumCollisions", int(sNumCollisions));
-	if (sNumCollideChecks > 0)
-	{
-		JPH_STAT_COLLECTOR_ADD("ConvexVsTriangles.GJKCheckPercentage", 100.0f * sNumGJKChecks / sNumCollideChecks);
-		JPH_STAT_COLLECTOR_ADD("ConvexVsTriangles.EPACheckPercentage", 100.0f * sNumEPAChecks / sNumCollideChecks);
-	}
-}
-#endif // JPH_STAT_COLLECTOR
-
 } // JPH

+ 0 - 14
Jolt/Physics/Collision/CollideConvexVsTriangles.h

@@ -35,21 +35,7 @@ public:
 	/// @param inSubShapeID2 The sub shape ID for the triangle
 	void							Collide(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2, uint8 inActiveEdges, const SubShapeID &inSubShapeID2);
 
-#ifdef JPH_STAT_COLLECTOR
-	/// Collect stats of the previous time step
-	static void						sResetStats();
-	static void						sCollectStats();
-#endif // JPH_STAT_COLLECTOR
-
 protected:
-#ifdef JPH_STAT_COLLECTOR
-	// Statistics
-	alignas(JPH_CACHE_LINE_SIZE) static atomic<int>	sNumCollideChecks;
-	alignas(JPH_CACHE_LINE_SIZE) static atomic<int>	sNumGJKChecks;
-	alignas(JPH_CACHE_LINE_SIZE) static atomic<int>	sNumEPAChecks;
-	alignas(JPH_CACHE_LINE_SIZE) static atomic<int>	sNumCollisions;
-#endif // JPH_STAT_COLLECTOR
-
 	const CollideShapeSettings &	mCollideShapeSettings;					///< Settings for this collision operation
 	CollideShapeCollector &			mCollector;								///< The collector that will receive the results
 	const ConvexShape *				mShape1;								///< The shape that we're colliding with

+ 0 - 38
Jolt/Physics/Collision/Shape/ConvexShape.cpp

@@ -16,7 +16,6 @@
 #include <Physics/Collision/CollisionDispatch.h>
 #include <Physics/Collision/NarrowPhaseStats.h>
 #include <Physics/PhysicsSettings.h>
-#include <Core/StatCollector.h>
 #include <Core/StreamIn.h>
 #include <Core/StreamOut.h>
 #include <Geometry/EPAPenetrationDepth.h>
@@ -25,13 +24,6 @@
 
 namespace JPH {
 
-#ifdef JPH_STAT_COLLECTOR
-alignas(JPH_CACHE_LINE_SIZE) atomic<int> ConvexShape::sNumCollideChecks { 0 };
-alignas(JPH_CACHE_LINE_SIZE) atomic<int> ConvexShape::sNumGJKChecks { 0 };
-alignas(JPH_CACHE_LINE_SIZE) atomic<int> ConvexShape::sNumEPAChecks { 0 };
-alignas(JPH_CACHE_LINE_SIZE) atomic<int> ConvexShape::sNumCollisions { 0 };
-#endif // JPH_STAT_COLLECTOR
-
 JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(ConvexShapeSettings)
 {
 	JPH_ADD_BASE_CLASS(ConvexShapeSettings, ShapeSettings)
@@ -53,8 +45,6 @@ void ConvexShape::sCollideConvexVsConvex(const Shape *inShape1, const Shape *inS
 {
 	JPH_PROFILE_FUNCTION();
 
-	JPH_IF_STAT_COLLECTOR(sNumCollideChecks++;)
-
 	// Get the shapes
 	JPH_ASSERT(inShape1->GetType() == EShapeType::Convex);
 	JPH_ASSERT(inShape2->GetType() == EShapeType::Convex);
@@ -80,8 +70,6 @@ void ConvexShape::sCollideConvexVsConvex(const Shape *inShape1, const Shape *inS
 
 	// Scope to limit lifetime of SupportBuffer
 	{
-		JPH_IF_STAT_COLLECTOR(sNumGJKChecks++;)
-
 		// Create support function
 		SupportBuffer buffer1_excl_cvx_radius, buffer2_excl_cvx_radius;
 		const Support *shape1_excl_cvx_radius = shape1->GetSupportFunction(ConvexShape::ESupportMode::ExcludeConvexRadius, buffer1_excl_cvx_radius, inScale1);
@@ -106,7 +94,6 @@ void ConvexShape::sCollideConvexVsConvex(const Shape *inShape1, const Shape *inS
 	case EPAPenetrationDepth::EStatus::Indeterminate:
 		{
 			// Need to run expensive EPA algorithm
-			JPH_IF_STAT_COLLECTOR(sNumEPAChecks++;)
 
 			// Create support function
 			SupportBuffer buffer1_incl_cvx_radius, buffer2_incl_cvx_radius;
@@ -162,8 +149,6 @@ void ConvexShape::sCollideConvexVsConvex(const Shape *inShape1, const Shape *inS
 			p = inCenterOfMassTransform2 * p;
 	}
 
-	JPH_IF_STAT_COLLECTOR(sNumCollisions++;)
-
 	// Notify the collector
 	JPH_IF_TRACK_NARROWPHASE_STATS(TrackNarrowPhaseCollector track;)
 	ioCollector.AddHit(result);
@@ -542,29 +527,6 @@ void ConvexShape::DrawGetSupportingFace(DebugRenderer *inRenderer, Mat44Arg inCe
 }
 #endif // JPH_DEBUG_RENDERER
 
-#ifdef JPH_STAT_COLLECTOR
-void ConvexShape::sResetStats()
-{
-	sNumCollideChecks = 0;
-	sNumGJKChecks = 0;
-	sNumEPAChecks = 0;
-	sNumCollisions = 0;
-}
-
-void ConvexShape::sCollectStats()
-{
-	JPH_PROFILE_FUNCTION();
-
-	JPH_STAT_COLLECTOR_ADD("ConvexVsConvex.NumChecks", int(sNumCollideChecks));
-	JPH_STAT_COLLECTOR_ADD("ConvexVsConvex.NumCollisions", int(sNumCollisions));
-	if (sNumCollideChecks > 0)
-	{
-		JPH_STAT_COLLECTOR_ADD("ConvexVsConvex.GJKCheckPercentage", 100.0f * sNumGJKChecks / sNumCollideChecks);
-		JPH_STAT_COLLECTOR_ADD("ConvexVsConvex.EPACheckPercentage", 100.0f * sNumEPAChecks / sNumCollideChecks);
-	}
-}
-#endif // JPH_STAT_COLLECTOR
-
 void ConvexShape::SaveBinaryState(StreamOut &inStream) const
 {
 	Shape::SaveBinaryState(inStream);

+ 0 - 16
Jolt/Physics/Collision/Shape/ConvexShape.h

@@ -126,14 +126,6 @@ public:
 	virtual void					DrawGetSupportingFace(DebugRenderer *inRenderer, Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override;
 #endif // JPH_DEBUG_RENDERER
 
-#ifdef JPH_STAT_COLLECTOR
-	/// Reset stats collected during the previous time step
-	static void						sResetStats();
-
-	/// Collect stats of the previous time step
-	static void						sCollectStats();
-#endif // JPH_STAT_COLLECTOR
-
 	// See Shape
 	virtual void					SaveBinaryState(StreamOut &inStream) const override;
 	virtual void					SaveMaterialState(PhysicsMaterialList &outMaterials) const override;
@@ -157,14 +149,6 @@ private:
 	static void						sCollideConvexVsConvex(const Shape *inShape1, const Shape *inShape2, Vec3Arg inScale1, Vec3Arg inScale2, Mat44Arg inCenterOfMassTransform1, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, const CollideShapeSettings &inCollideShapeSettings, CollideShapeCollector &ioCollector);
 	static void						sCastConvexVsConvex(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
 
-#ifdef JPH_STAT_COLLECTOR
-	// Statistics
-	alignas(JPH_CACHE_LINE_SIZE) static atomic<int>	sNumCollideChecks;
-	alignas(JPH_CACHE_LINE_SIZE) static atomic<int>	sNumGJKChecks;
-	alignas(JPH_CACHE_LINE_SIZE) static atomic<int>	sNumEPAChecks;
-	alignas(JPH_CACHE_LINE_SIZE) static atomic<int>	sNumCollisions;
-#endif // JPH_STAT_COLLECTOR
-
 	// Properties
 	RefConst<PhysicsMaterial>		mMaterial;													///< Material assigned to this shape
 	float							mDensity = 1000.0f;											///< Uniform density of the interior of the convex object (kg / m^3)

+ 0 - 5
Jolt/Physics/Constraints/Constraint.h

@@ -99,11 +99,6 @@ public:
 	/// Link bodies that are connected by this constraint in the island builder
 	virtual void				BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) = 0;
 
-#ifdef JPH_STAT_COLLECTOR
-	/// Collect stats
-	virtual void				CollectStats() const						{ }
-#endif // JPH_STAT_COLLECTOR
-
 #ifdef JPH_DEBUG_RENDERER
 	// Drawing interface
 	virtual void				DrawConstraint(DebugRenderer *inRenderer) const = 0;

+ 0 - 12
Jolt/Physics/Constraints/ConstraintManager.cpp

@@ -156,18 +156,6 @@ bool ConstraintManager::SolvePositionConstraints(Constraint **inActiveConstraint
 	return any_impulse_applied;
 }
 
-#ifdef JPH_STAT_COLLECTOR
-void ConstraintManager::CollectStats() const
-{
-	JPH_PROFILE_FUNCTION();
-
-	UniqueLock lock(mConstraintsMutex, EPhysicsLockTypes::ConstraintsList);
-
-	for (const Ref<Constraint> &c : mConstraints)			
-		c->CollectStats();
-}
-#endif // JPH_STAT_COLLECTOR
-
 #ifdef JPH_DEBUG_RENDERER
 void ConstraintManager::DrawConstraints(DebugRenderer *inRenderer) const
 {

+ 0 - 5
Jolt/Physics/Constraints/ConstraintManager.h

@@ -54,11 +54,6 @@ public:
 	/// This function is called multiple times to iteratively come to a solution that meets all position constraints
 	bool					SolvePositionConstraints(Constraint **inActiveConstraints, const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd, float inDeltaTime, float inBaumgarte);
 
-#ifdef JPH_STAT_COLLECTOR
-	/// Collect stats for all constraints
-	void					CollectStats() const;
-#endif // JPH_STAT_COLLECTOR
-
 #ifdef JPH_DEBUG_RENDERER
 	/// Draw all constraints
 	void					DrawConstraints(DebugRenderer *inRenderer) const;

+ 0 - 39
Jolt/Physics/Constraints/ContactConstraintManager.cpp

@@ -8,7 +8,6 @@
 #include <Physics/PhysicsUpdateContext.h>
 #include <Physics/PhysicsSettings.h>
 #include <Physics/IslandBuilder.h>
-#include <Core/StatCollector.h>
 #include <Core/TempAllocator.h>
 #ifdef JPH_DEBUG_RENDERER
 	#include <Renderer/DebugRenderer.h>
@@ -23,13 +22,6 @@ bool ContactConstraintManager::sDrawContactPointReduction = false;
 bool ContactConstraintManager::sDrawContactManifolds = false;
 #endif // JPH_DEBUG_RENDERER
 
-#ifdef JPH_STAT_COLLECTOR
-alignas(JPH_CACHE_LINE_SIZE) atomic<int> ContactConstraintManager::sNumBodyPairCacheChecks { 0 };
-alignas(JPH_CACHE_LINE_SIZE) atomic<int> ContactConstraintManager::sNumBodyPairCacheHits { 0 };
-alignas(JPH_CACHE_LINE_SIZE) atomic<int> ContactConstraintManager::sNumContactPointsAdded { 0 };
-alignas(JPH_CACHE_LINE_SIZE) atomic<int> ContactConstraintManager::sNumContactPointsLambdasSet { 0 };
-#endif // JPH_STAT_COLLECTOR
-
 //#define JPH_MANIFOLD_CACHE_DEBUG
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -600,14 +592,6 @@ void ContactConstraintManager::PrepareConstraintBuffer(PhysicsUpdateContext *inC
 
 	// Use the amount of contacts from the last iteration to determine the amount of buckets to use in the hash map for this frame
 	mCache[mCacheWriteIdx].Prepare(mCache[mCacheWriteIdx ^ 1]);
-
-#ifdef JPH_STAT_COLLECTOR
-	// Reset stats
-	sNumBodyPairCacheChecks = 0;
-	sNumBodyPairCacheHits = 0;
-	sNumContactPointsAdded = 0;
-	sNumContactPointsLambdasSet = 0;
-#endif // JPH_STAT_COLLECTOR
 }
 
 // Get the orientation of body 2 in local space of body 1
@@ -630,8 +614,6 @@ void ContactConstraintManager::GetContactsFromCache(Body &inBody1, Body &inBody2
 {
 	JPH_PROFILE_FUNCTION();
 
-	JPH_IF_STAT_COLLECTOR(sNumBodyPairCacheChecks++;)
-
 	// Start with nothing found and not handled
 	outContactFound = false;
 	outPairHandled = false;
@@ -676,8 +658,6 @@ void ContactConstraintManager::GetContactsFromCache(Body &inBody1, Body &inBody2
 	if (delta_rotation.Dot(old_delta_rotation) < mPhysicsSettings.mBodyPairCacheCosMaxDeltaRotation)
 		return;
 
-	JPH_IF_STAT_COLLECTOR(sNumBodyPairCacheHits++;)
-
 	// The cache is valid, return that we've handled this body pair
 	outPairHandled = true;
 
@@ -993,8 +973,6 @@ void ContactConstraintManager::AddContactConstraint(BodyPairHandle inBodyPairHan
 		// Get time step
 		float delta_time = mUpdateContext->mSubStepDeltaTime;
 
-		JPH_IF_STAT_COLLECTOR(sNumContactPointsAdded += num_contact_points;)
-
 		// Calculate tangents
 		Vec3 t1, t2;
 		constraint.GetTangents(t1, t2);
@@ -1017,8 +995,6 @@ void ContactConstraintManager::AddContactConstraint(BodyPairHandle inBodyPairHan
 				if (Vec3::sLoadFloat3Unsafe(ccp->mPosition1).IsClose(p1_ls, mPhysicsSettings.mContactPointPreserveLambdaMaxDistSq) 
 					&& Vec3::sLoadFloat3Unsafe(ccp->mPosition2).IsClose(p2_ls, mPhysicsSettings.mContactPointPreserveLambdaMaxDistSq))
 				{
-					JPH_IF_STAT_COLLECTOR(sNumContactPointsLambdasSet++;)
-
 					// Get lambdas from previous frame
 					wcp.mNonPenetrationConstraint.SetTotalLambda(ccp->mNonPenetrationLambda);
 					wcp.mFrictionConstraint1.SetTotalLambda(ccp->mFrictionLambda[0]);
@@ -1378,19 +1354,4 @@ bool ContactConstraintManager::RestoreState(StateRecorder &inStream)
 	return success;
 }
 
-#ifdef JPH_STAT_COLLECTOR
-void ContactConstraintManager::CollectStats()
-{
-	JPH_PROFILE_FUNCTION();
-
-	JPH_STAT_COLLECTOR_ADD("ContactConstraint.BodyPairCacheChecks", int(sNumBodyPairCacheChecks));
-	if (sNumBodyPairCacheChecks > 0)
-		JPH_STAT_COLLECTOR_ADD("ContactConstraint.BodyPairCacheHitPercentage", 100.0f * sNumBodyPairCacheHits / sNumBodyPairCacheChecks);
-
-	JPH_STAT_COLLECTOR_ADD("ContactConstraint.ContactPointsAdded", int(sNumContactPointsAdded));
-	if (sNumContactPointsAdded > 0)
-		JPH_STAT_COLLECTOR_ADD("ContactConstraint.ContactPointsLambdasSetPercentage", 100.0f * sNumContactPointsLambdasSet / sNumContactPointsAdded);
-}
-#endif // JPH_STAT_COLLECTOR
-
 } // JPH

+ 0 - 13
Jolt/Physics/Constraints/ContactConstraintManager.h

@@ -215,20 +215,7 @@ public:
 	/// Restoring state for replay. Returns false when failed.
 	bool						RestoreState(StateRecorder &inStream);
 
-#ifdef JPH_STAT_COLLECTOR
-	/// Collect stats of the previous time step
-	void						CollectStats();
-#endif // JPH_STAT_COLLECTOR
-
 private:
-#ifdef JPH_STAT_COLLECTOR
-	// Statistics
-	alignas(JPH_CACHE_LINE_SIZE) static atomic<int> sNumBodyPairCacheChecks;
-	alignas(JPH_CACHE_LINE_SIZE) static atomic<int> sNumBodyPairCacheHits;
-	alignas(JPH_CACHE_LINE_SIZE) static atomic<int> sNumContactPointsAdded;
-	alignas(JPH_CACHE_LINE_SIZE) static atomic<int> sNumContactPointsLambdasSet;
-#endif // JPH_STAT_COLLECTOR
-	
 	/// Local space contact point, used for caching impulses
 	class CachedContactPoint
 	{

+ 0 - 20
Jolt/Physics/Constraints/HingeConstraint.cpp

@@ -5,7 +5,6 @@
 
 #include <Physics/Constraints/HingeConstraint.h>
 #include <Physics/Body/Body.h>
-#include <Core/StatCollector.h>
 #include <ObjectStream/TypeDeclarations.h>
 #include <Core/StreamIn.h>
 #include <Core/StreamOut.h>
@@ -282,25 +281,6 @@ bool HingeConstraint::SolvePositionConstraint(float inDeltaTime, float inBaumgar
 	return pos || rot || limit;
 }
 
-#ifdef JPH_STAT_COLLECTOR
-void HingeConstraint::CollectStats() const
-{
-	string prefix = "Constraint." + mBody1->GetDebugName() + "-" + mBody2->GetDebugName();
-
-	JPH_STAT_COLLECTOR_ADD(prefix + ".HingeAngle", RadiansToDegrees(mTheta));
-
-	JPH_STAT_COLLECTOR_ADD(prefix + ".Point.TotalLambda", mPointConstraintPart.GetTotalLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".Rotation.TotalLambda0", mRotationConstraintPart.GetTotalLambda()[0]);
-	JPH_STAT_COLLECTOR_ADD(prefix + ".Rotation.TotalLambda1", mRotationConstraintPart.GetTotalLambda()[1]);
-
-	if (mRotationLimitsConstraintPart.IsActive())
-		JPH_STAT_COLLECTOR_ADD(prefix + ".Limit.TotalLambda", mRotationLimitsConstraintPart.GetTotalLambda());
-
-	if (mMotorConstraintPart.IsActive())
-		JPH_STAT_COLLECTOR_ADD(prefix + ".Motor.TotalLambda", mMotorConstraintPart.GetTotalLambda());
-}
-#endif // JPH_STAT_COLECTOR
-
 #ifdef JPH_DEBUG_RENDERER
 void HingeConstraint::DrawConstraint(DebugRenderer *inRenderer) const
 {

+ 0 - 3
Jolt/Physics/Constraints/HingeConstraint.h

@@ -63,9 +63,6 @@ public:
 	virtual void				WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
 	virtual bool				SolveVelocityConstraint(float inDeltaTime) override;
 	virtual bool				SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
-#ifdef JPH_STAT_COLLECTOR
-	virtual void				CollectStats() const override;
-#endif // JPH_STAT_COLLECTOR
 #ifdef JPH_DEBUG_RENDERER
 	virtual void				DrawConstraint(DebugRenderer *inRenderer) const override;
 	virtual void				DrawConstraintLimits(DebugRenderer *inRenderer) const override;

+ 0 - 40
Jolt/Physics/Constraints/PathConstraint.cpp

@@ -6,7 +6,6 @@
 #include <Physics/Constraints/PathConstraint.h>
 #include <Physics/Body/Body.h>
 #include <Core/StringTools.h>
-#include <Core/StatCollector.h>
 #include <ObjectStream/TypeDeclarations.h>
 #include <Core/StreamIn.h>
 #include <Core/StreamOut.h>
@@ -351,45 +350,6 @@ bool PathConstraint::SolvePositionConstraint(float inDeltaTime, float inBaumgart
 	return pos || limit || rot;
 }
 
-#ifdef JPH_STAT_COLLECTOR
-void PathConstraint::CollectStats() const
-{
-	string prefix = "Constraint." + mBody1->GetDebugName() + "-" + mBody2->GetDebugName();
-
-	JPH_STAT_COLLECTOR_ADD(prefix + ".PathFraction", mPathFraction);
-
-	JPH_STAT_COLLECTOR_ADD(prefix + ".DualAxis.TotalLambda0", mPositionConstraintPart.GetTotalLambda()[0]);
-	JPH_STAT_COLLECTOR_ADD(prefix + ".DualAxis.TotalLambda1", mPositionConstraintPart.GetTotalLambda()[1]);
-
-	switch (mRotationConstraintType)
-	{
-	case EPathRotationConstraintType::Free:
-		// No rotational limits
-		break;
-
-	case EPathRotationConstraintType::ConstrainAroundTangent:
-	case EPathRotationConstraintType::ConstrainAroundNormal:
-	case EPathRotationConstraintType::ConstrainAroundBinormal:
-		JPH_STAT_COLLECTOR_ADD(prefix + ".Hinge.TotalLambda0", mHingeConstraintPart.GetTotalLambda()[0]);
-		JPH_STAT_COLLECTOR_ADD(prefix + ".Hinge.TotalLambda1", mHingeConstraintPart.GetTotalLambda()[1]);
-		break;
-
-	case EPathRotationConstraintType::ConstaintToPath:
-	case EPathRotationConstraintType::FullyConstrained:
-		JPH_STAT_COLLECTOR_ADD(prefix + ".Rotation.TotalLambda0", mRotationConstraintPart.GetTotalLambda()[0]);
-		JPH_STAT_COLLECTOR_ADD(prefix + ".Rotation.TotalLambda1", mRotationConstraintPart.GetTotalLambda()[1]);
-		JPH_STAT_COLLECTOR_ADD(prefix + ".Rotation.TotalLambda2", mRotationConstraintPart.GetTotalLambda()[2]);
-		break;
-	}
-
-	if (mPositionLimitsConstraintPart.IsActive())
-		JPH_STAT_COLLECTOR_ADD(prefix + ".PositionLimit.TotalLambda", mPositionLimitsConstraintPart.GetTotalLambda());
-
-	if (mPositionMotorConstraintPart.IsActive())
-		JPH_STAT_COLLECTOR_ADD(prefix + ".PositionMotor.TotalLambda", mPositionMotorConstraintPart.GetTotalLambda());
-}
-#endif // JPH_STAT_COLLECTOR
-
 #ifdef JPH_DEBUG_RENDERER
 void PathConstraint::DrawConstraint(DebugRenderer *inRenderer) const
 {

+ 0 - 3
Jolt/Physics/Constraints/PathConstraint.h

@@ -75,9 +75,6 @@ public:
 	virtual void					WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
 	virtual bool					SolveVelocityConstraint(float inDeltaTime) override;
 	virtual bool					SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
-#ifdef JPH_STAT_COLLECTOR
-	virtual void					CollectStats() const override;
-#endif // JPH_STAT_COLLECTOR
 #ifdef JPH_DEBUG_RENDERER
 	virtual void					DrawConstraint(DebugRenderer *inRenderer) const override;
 #endif // JPH_DEBUG_RENDERER

+ 0 - 24
Jolt/Physics/Constraints/SixDOFConstraint.cpp

@@ -6,7 +6,6 @@
 #include <Physics/Constraints/SixDOFConstraint.h>
 #include <Physics/Body/Body.h>
 #include <Geometry/Ellipse.h>
-#include <Core/StatCollector.h>
 #include <ObjectStream/TypeDeclarations.h>
 #include <Core/StreamIn.h>
 #include <Core/StreamOut.h>
@@ -633,29 +632,6 @@ bool SixDOFConstraint::SolvePositionConstraint(float inDeltaTime, float inBaumga
 	return impulse;
 }
 
-#ifdef JPH_STAT_COLLECTOR
-void SixDOFConstraint::CollectStats() const
-{
-	string prefix = "Constraint." + mBody1->GetDebugName() + "-" + mBody2->GetDebugName();
-	JPH_STAT_COLLECTOR_ADD(prefix + ".Point.TotalLambda", mPointConstraintPart.GetTotalLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".Point.TotalLambda.Length", mPointConstraintPart.GetTotalLambda().Length());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".TranslationX.TotalLambda", mTranslationConstraintPart[0].GetTotalLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".TranslationY.TotalLambda", mTranslationConstraintPart[1].GetTotalLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".TranslationZ.TotalLambda", mTranslationConstraintPart[2].GetTotalLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".Rotation.TotalLambda", mRotationConstraintPart.GetTotalLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".Rotation.TotalLambda.Length", mRotationConstraintPart.GetTotalLambda().Length());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".SwingYLimit.TotalLambda", mSwingTwistConstraintPart.GetTotalSwingYLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".SwingZLimit.TotalLambda", mSwingTwistConstraintPart.GetTotalSwingZLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".TwistLimit.TotalLambda", mSwingTwistConstraintPart.GetTotalTwistLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".MotorTranslationX.TotalLambda", mMotorTranslationConstraintPart[0].GetTotalLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".MotorTranslationY.TotalLambda", mMotorTranslationConstraintPart[1].GetTotalLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".MotorTranslationZ.TotalLambda", mMotorTranslationConstraintPart[2].GetTotalLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".MotorRotationX.TotalLambda", mMotorRotationConstraintPart[0].GetTotalLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".MotorRotationY.TotalLambda", mMotorRotationConstraintPart[1].GetTotalLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".MotorRotationZ.TotalLambda", mMotorRotationConstraintPart[2].GetTotalLambda());
-}
-#endif // JPH_STAT_COLLECTOR
-
 #ifdef JPH_DEBUG_RENDERER
 void SixDOFConstraint::DrawConstraint(DebugRenderer *inRenderer) const
 {

+ 0 - 3
Jolt/Physics/Constraints/SixDOFConstraint.h

@@ -99,9 +99,6 @@ public:
 	virtual void				WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
 	virtual bool				SolveVelocityConstraint(float inDeltaTime) override;
 	virtual bool				SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
-#ifdef JPH_STAT_COLLECTOR
-	virtual void				CollectStats() const override;
-#endif // JPH_STAT_COLLECTOR
 #ifdef JPH_DEBUG_RENDERER
 	virtual void				DrawConstraint(DebugRenderer *inRenderer) const override;
 	virtual void				DrawConstraintLimits(DebugRenderer *inRenderer) const override;

+ 0 - 20
Jolt/Physics/Constraints/SliderConstraint.cpp

@@ -5,7 +5,6 @@
 
 #include <Physics/Constraints/SliderConstraint.h>
 #include <Physics/Body/Body.h>
-#include <Core/StatCollector.h>
 #include <ObjectStream/TypeDeclarations.h>
 #include <Core/StreamIn.h>
 #include <Core/StreamOut.h>
@@ -263,25 +262,6 @@ bool SliderConstraint::SolvePositionConstraint(float inDeltaTime, float inBaumga
 	return pos || rot || limit;
 }
 
-#ifdef JPH_STAT_COLLECTOR
-void SliderConstraint::CollectStats() const
-{
-	string prefix = "Constraint." + mBody1->GetDebugName() + "-" + mBody2->GetDebugName();
-
-	JPH_STAT_COLLECTOR_ADD(prefix + ".SlideDistance", mD);
-
-	JPH_STAT_COLLECTOR_ADD(prefix + ".DualAxis.TotalLambda0", mPositionConstraintPart.GetTotalLambda()[0]);
-	JPH_STAT_COLLECTOR_ADD(prefix + ".DualAxis.TotalLambda1", mPositionConstraintPart.GetTotalLambda()[1]);
-	JPH_STAT_COLLECTOR_ADD(prefix + ".Rotation.TotalLambda", mRotationConstraintPart.GetTotalLambda());
-
-	if (mPositionLimitsConstraintPart.IsActive())
-		JPH_STAT_COLLECTOR_ADD(prefix + ".Limit.TotalLambda", mPositionLimitsConstraintPart.GetTotalLambda());
-
-	if (mMotorConstraintPart.IsActive())
-		JPH_STAT_COLLECTOR_ADD(prefix + ".Motor.TotalLambda", mMotorConstraintPart.GetTotalLambda());
-}
-#endif // JPH_STAT_COLLECTOR
-
 #ifdef JPH_DEBUG_RENDERER
 void SliderConstraint::DrawConstraint(DebugRenderer *inRenderer) const
 {

+ 0 - 3
Jolt/Physics/Constraints/SliderConstraint.h

@@ -54,9 +54,6 @@ public:
 	virtual void				WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
 	virtual bool				SolveVelocityConstraint(float inDeltaTime) override;
 	virtual bool				SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
-#ifdef JPH_STAT_COLLECTOR
-	virtual void				CollectStats() const override;
-#endif // JPH_STAT_COLLECTOR
 #ifdef JPH_DEBUG_RENDERER
 	virtual void				DrawConstraint(DebugRenderer *inRenderer) const override;
 	virtual void				DrawConstraintLimits(DebugRenderer *inRenderer) const override;

+ 0 - 16
Jolt/Physics/Constraints/SwingTwistConstraint.cpp

@@ -5,7 +5,6 @@
 
 #include <Physics/Constraints/SwingTwistConstraint.h>
 #include <Physics/Body/Body.h>
-#include <Core/StatCollector.h>
 #include <ObjectStream/TypeDeclarations.h>
 #include <Core/StreamIn.h>
 #include <Core/StreamOut.h>
@@ -378,21 +377,6 @@ bool SwingTwistConstraint::SolvePositionConstraint(float inDeltaTime, float inBa
 	return impulse;
 }
 
-#ifdef JPH_STAT_COLLECTOR
-void SwingTwistConstraint::CollectStats() const
-{
-	string prefix = "Constraint." + mBody1->GetDebugName() + "-" + mBody2->GetDebugName();
-	JPH_STAT_COLLECTOR_ADD(prefix + ".Point.TotalLambda", mPointConstraintPart.GetTotalLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".Point.TotalLambda.Length", mPointConstraintPart.GetTotalLambda().Length());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".SwingYLimit.TotalLambda", mSwingTwistConstraintPart.GetTotalSwingYLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".SwingZLimit.TotalLambda", mSwingTwistConstraintPart.GetTotalSwingZLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".TwistLimit.TotalLambda", mSwingTwistConstraintPart.GetTotalTwistLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".MotorX.TotalLambda", mMotorConstraintPart[0].GetTotalLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".MotorY.TotalLambda", mMotorConstraintPart[1].GetTotalLambda());
-	JPH_STAT_COLLECTOR_ADD(prefix + ".MotorZ.TotalLambda", mMotorConstraintPart[2].GetTotalLambda());
-}
-#endif // JPH_STAT_COLLECTOR
-
 #ifdef JPH_DEBUG_RENDERER
 void SwingTwistConstraint::DrawConstraint(DebugRenderer *inRenderer) const
 {

+ 0 - 3
Jolt/Physics/Constraints/SwingTwistConstraint.h

@@ -73,9 +73,6 @@ public:
 	virtual void				WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
 	virtual bool				SolveVelocityConstraint(float inDeltaTime) override;
 	virtual bool				SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
-#ifdef JPH_STAT_COLLECTOR
-	virtual void				CollectStats() const override;
-#endif // JPH_STAT_COLLECTOR
 #ifdef JPH_DEBUG_RENDERER
 	virtual void				DrawConstraint(DebugRenderer *inRenderer) const override;
 	virtual void				DrawConstraintLimits(DebugRenderer *inRenderer) const override;

+ 0 - 30
Jolt/Physics/PhysicsSystem.cpp

@@ -21,7 +21,6 @@
 #include <Physics/Constraints/ConstraintPart/AxisConstraintPart.h>
 #include <Geometry/RayAABox.h>
 #include <Core/JobSystem.h>
-#include <Core/StatCollector.h>
 #include <Core/TempAllocator.h>
 
 namespace JPH {
@@ -122,14 +121,6 @@ void PhysicsSystem::Update(float inDeltaTime, int inCollisionSteps, int inIntegr
 	JPH_ASSERT(inDeltaTime >= 0.0f);
 	JPH_ASSERT(inIntegrationSubSteps <= PhysicsUpdateContext::cMaxSubSteps);
 
-#ifdef JPH_STAT_COLLECTOR
-	// Reset stats
-	mManifoldsBeforeReduction = 0;
-	mManifoldsAfterReduction = 0;
-	CollideConvexVsTriangles::sResetStats();
-	ConvexShape::sResetStats();
-#endif // JPH_STAT_COLLECTOR
-
 	// Sync point for the broadphase. This will allow it to do clean up operations without having any mutexes locked yet.
 	mBroadPhase->FrameSync();
 
@@ -1024,9 +1015,6 @@ void PhysicsSystem::ProcessBodyPair(const BodyPair &inBodyPair)
 						}
 					}
 
-					// Count amount of manifolds before reduction
-					JPH_IF_STAT_COLLECTOR(++mSystem->mManifoldsBeforeReduction;)
-
 					// Calculate normal
 					Vec3 world_space_normal = inResult.mPenetrationAxis.Normalized();
 			
@@ -1064,9 +1052,6 @@ void PhysicsSystem::ProcessBodyPair(const BodyPair &inBodyPair)
 							// Not full, create new manifold
 							mManifolds.push_back({ { world_space_normal, inResult.mPenetrationDepth, inResult.mSubShapeID1, inResult.mSubShapeID2, { }, { } }, world_space_normal });
 							manifold = mManifolds.end() - 1;
-
-							// Count manifolds after reduction
-							JPH_IF_STAT_COLLECTOR(mSystem->mManifoldsAfterReduction++;)
 						}
 					}
 
@@ -2134,21 +2119,6 @@ void PhysicsSystem::JobSolvePositionConstraints(PhysicsUpdateContext *ioContext,
 	}
 }
 
-#ifdef JPH_STAT_COLLECTOR
-void PhysicsSystem::CollectStats()
-{
-	JPH_PROFILE_FUNCTION();
-
-	JPH_STAT_COLLECTOR_ADD("ContactConstraint.ManifoldReductionPercentage", mManifoldsBeforeReduction > 0? 100.0f * (mManifoldsBeforeReduction - mManifoldsAfterReduction) / mManifoldsBeforeReduction : 0.0f);
-
-	mBodyManager.CollectStats();
-	mConstraintManager.CollectStats();
-	mContactManager.CollectStats();
-	CollideConvexVsTriangles::sCollectStats();
-	ConvexShape::sCollectStats();
-}
-#endif // JPH_STAT_COLLECTOR
-
 void PhysicsSystem::SaveState(StateRecorder &inStream) const
 {
 	JPH_PROFILE_FUNCTION();

+ 0 - 11
Jolt/Physics/PhysicsSystem.h

@@ -99,11 +99,6 @@ public:
 	/// consists of collision detection followed by inIntegrationSubSteps integration steps.
 	void						Update(float inDeltaTime, int inCollisionSteps, int inIntegrationSubSteps, TempAllocator *inTempAllocator, JobSystem *inJobSystem);
 
-#ifdef JPH_STAT_COLLECTOR
-	/// Collect stats of the previous time step
-	void						CollectStats();
-#endif // JPH_STAT_COLLECTOR
-
 	/// Saving state for replay
 	void						SaveState(StateRecorder &inStream) const;
 
@@ -264,12 +259,6 @@ private:
 
 	/// Simulation settings
 	PhysicsSettings				mPhysicsSettings;
-
-#ifdef JPH_STAT_COLLECTOR
-	/// Statistics
-	alignas(JPH_CACHE_LINE_SIZE) atomic<int> mManifoldsBeforeReduction { 0 };
-	alignas(JPH_CACHE_LINE_SIZE) atomic<int> mManifoldsAfterReduction { 0 };
-#endif // JPH_STAT_COLLECTOR
 };
 
 } // JPH

+ 1 - 20
Samples/SamplesApp.cpp

@@ -5,7 +5,6 @@
 
 #include <SamplesApp.h>
 #include <Application/EntryPoint.h>
-#include <Core/StatCollector.h>
 #include <Core/JobSystemThreadPool.h>
 #include <Core/TempAllocator.h>
 #include <Geometry/OrientedBox.h>
@@ -433,8 +432,7 @@ SamplesApp::SamplesApp()
 			".: Step forward (only when Physics Settings / Record State for Playback is on).\n"
 			"Shift + ,: Play reverse (only when Physics Settings / Record State for Playback is on).\n"
 			"Shift + .: Replay forward (only when Physics Settings / Record State for Playback is on).\n"
-			"T: Dump frame timing information to profile_*.html (when JPH_PROFILE_ENABLED defined).\n"
-			"Y: Start / stop recording stats. Stats?.html is written when stopping (when JPH_STAT_COLLECTOR defined)."
+			"T: Dump frame timing information to profile_*.html (when JPH_PROFILE_ENABLED defined)."
 		);
 		mDebugUI->ShowMenu(help);
 	});
@@ -499,9 +497,6 @@ void SamplesApp::StartTest(const RTTI *inRTTI)
 	delete mContactListener;
 	delete mPhysicsSystem;
 
-	// Start at frame 0
-	JPH_STAT_COLLECTOR_RESET();
-
 	// Create physics system
 	mPhysicsSystem = new PhysicsSystem();
 	mPhysicsSystem->Init(cNumBodies, cNumBodyMutexes, cMaxBodyPairs, cMaxContactConstraints, GetObjectToBroadPhaseLayer(), BroadPhaseCanCollide, ObjectCanCollide);
@@ -1837,9 +1832,6 @@ bool SamplesApp::RenderFrame(float inDeltaTime)
 				SaveState(mPlaybackFrames.back());
 			}
 
-			// Set next frame for the stat collector
-			JPH_STAT_COLLECTOR_SET_NEXT_FRAME();
-
 			// Physics world is drawn using debug lines, when not paused
 			// Draw state prior to step so that debug lines are created from the same state
 			// (the constraints are solved on the current state and then the world is stepped)
@@ -1869,17 +1861,6 @@ bool SamplesApp::RenderFrame(float inDeltaTime)
 				// Validate that the result is the same
 				ValidateState(post_step_state);
 			}
-
-#ifdef JPH_STAT_COLLECTOR
-			if (JPH_STAT_COLLECTOR_IS_CAPTURING())
-			{
-				// Record FPS as stat
-				JPH_STAT_COLLECTOR_ADD("General.FPS", 1.0f / inDeltaTime);
-
-				// Collect stats for previous time step
-				mPhysicsSystem->CollectStats();
-			}
-#endif // JPH_STAT_COLLECTOR
 		}
 	}
 

+ 0 - 13
TestFramework/Application/Application.cpp

@@ -4,7 +4,6 @@
 #include <TestFramework.h>
 
 #include <Application/Application.h>
-#include <Core/StatCollector.h>
 #include <UI/UIManager.h>
 #include <Application/DebugUI.h>
 #include <Core/FPException.h>
@@ -135,18 +134,6 @@ void Application::Run()
 					JPH_PROFILE_DUMP();
 					break;
 
-				case DIK_Y:
-					if (JPH_STAT_COLLECTOR_IS_CAPTURING())
-					{
-						static int number = 0;
-						++number;
-						string path = StringFormat("stats%d.html", number);
-						JPH_STAT_COLLECTOR_STOP_CAPTURE(path.c_str());
-					}
-					else
-						JPH_STAT_COLLECTOR_START_CAPTURE();
-					break;
-
 				case DIK_ESCAPE:
 					mDebugUI->ToggleVisibility();
 					break;

+ 1 - 15
WebIncludes/ReadMe.txt

@@ -4,17 +4,6 @@ JQuery (https://jquery.com/):
 
 https://code.jquery.com/jquery-3.2.1.min.js
 
-DyGraphs (http://dygraphs.com/):
-
-https://cdnjs.cloudflare.com/ajax/libs/dygraph/2.0.0/dygraph.min.js
-https://cdnjs.cloudflare.com/ajax/libs/dygraph/2.0.0/dygraph.min.css
-
-FancyTree (https://github.com/mar10/fancytree):
-
-https://cdnjs.cloudflare.com/ajax/libs/jquery.fancytree/2.24.0/jquery.fancytree-all-deps.min.js
-https://cdnjs.cloudflare.com/ajax/libs/jquery.fancytree/2.24.0/skin-win8/ui.fancytree.min.css
-https://cdnjs.cloudflare.com/ajax/libs/jquery.fancytree/2.24.0/skin-win8/icons.gif
-
 Semantic UI (https://semantic-ui.com/):
 
 https://cdn.jsdelivr.net/semantic-ui/2.2.10/semantic.min.css
@@ -22,7 +11,4 @@ https://cdn.jsdelivr.net/semantic-ui/2.2.10/semantic.min.js
 https://cdn.jsdelivr.net/semantic-ui/2.2.10/themes/...
 http://semantic-ui.com/javascript/library/tablesort.js
 
-These files are used by the samples when:
-
-- You capture a profile in profile_*.html (key: T).
-- When you capture stats in stats?.html (key: Y to start collecting, Y to end collecting).
+These files are used by the samples when you capture a profile in profile_*.html (key: T).

+ 0 - 1
WebIncludes/dygraph.min.css

@@ -1 +0,0 @@
-.dygraph-annotation,.dygraph-legend{overflow:hidden}.dygraph-legend{position:absolute;font-size:14px;z-index:10;width:250px;background:#fff;line-height:normal;text-align:left}.dygraph-legend-dash,.dygraph-legend-line{display:inline-block;position:relative;bottom:.5ex;height:1px;border-bottom-width:2px;border-bottom-style:solid}.dygraph-legend-line{padding-left:1em}.dygraph-annotation,.dygraph-roller{position:absolute;z-index:10}.dygraph-default-annotation{border:1px solid #000;background-color:#fff;text-align:center}.dygraph-axis-label{z-index:10;line-height:normal;overflow:hidden;color:#000}.dygraph-title{font-weight:700;z-index:10;text-align:center}.dygraph-xlabel{text-align:center}.dygraph-label-rotate-left{text-align:center;transform:rotate(90deg);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg)}.dygraph-label-rotate-right{text-align:center;transform:rotate(-90deg);-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);-ms-transform:rotate(-90deg)}/*# sourceMappingURL=dygraph.min.css.map */

File diff suppressed because it is too large
+ 0 - 1
WebIncludes/dygraph.min.js


BIN
WebIncludes/icons.gif


File diff suppressed because it is too large
+ 0 - 16
WebIncludes/jquery.fancytree-all-deps.min.js


File diff suppressed because it is too large
+ 0 - 5
WebIncludes/ui.fancytree.min.css


Some files were not shown because too many files changed in this diff