diff options
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 28 | ||||
-rw-r--r-- | bin/Ode.NET.dll | bin | 61440 -> 61440 bytes | |||
-rw-r--r-- | bin/OpenSim.ini.example | 11 | ||||
-rw-r--r-- | bin/libode.so | bin | 3259877 -> 3260494 bytes | |||
-rw-r--r-- | bin/ode.dll | bin | 655360 -> 663552 bytes |
5 files changed, 38 insertions, 1 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index 787cb12..81e03ca 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | |||
@@ -30,6 +30,7 @@ using System.Collections.Generic; | |||
30 | using System.Reflection; | 30 | using System.Reflection; |
31 | using System.Runtime.InteropServices; | 31 | using System.Runtime.InteropServices; |
32 | using System.Threading; | 32 | using System.Threading; |
33 | using System.IO; | ||
33 | using Axiom.Math; | 34 | using Axiom.Math; |
34 | using log4net; | 35 | using log4net; |
35 | using Nini.Config; | 36 | using Nini.Config; |
@@ -247,6 +248,11 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
247 | 248 | ||
248 | private IConfigSource m_config; | 249 | private IConfigSource m_config; |
249 | 250 | ||
251 | public bool physics_logging = false; | ||
252 | public int physics_logging_interval = 0; | ||
253 | public bool physics_logging_append_existing_logfile = false; | ||
254 | |||
255 | |||
250 | /// <summary> | 256 | /// <summary> |
251 | /// Initiailizes the scene | 257 | /// Initiailizes the scene |
252 | /// Sets many properties that ODE requires to be stable | 258 | /// Sets many properties that ODE requires to be stable |
@@ -370,6 +376,10 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
370 | avStandupTensor = physicsconfig.GetFloat("av_capsule_standup_tensor_win", 550000f); | 376 | avStandupTensor = physicsconfig.GetFloat("av_capsule_standup_tensor_win", 550000f); |
371 | bodyMotorJointMaxforceTensor = physicsconfig.GetFloat("body_motor_joint_maxforce_tensor_win", 5f); | 377 | bodyMotorJointMaxforceTensor = physicsconfig.GetFloat("body_motor_joint_maxforce_tensor_win", 5f); |
372 | } | 378 | } |
379 | |||
380 | physics_logging = physicsconfig.GetBoolean("physics_logging", false); | ||
381 | physics_logging_interval = physicsconfig.GetInt("physics_logging_interval", 0); | ||
382 | physics_logging_append_existing_logfile = physicsconfig.GetBoolean("physics_logging_append_existing_logfile", false); | ||
373 | } | 383 | } |
374 | } | 384 | } |
375 | 385 | ||
@@ -1759,7 +1769,25 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
1759 | } | 1769 | } |
1760 | } | 1770 | } |
1761 | } | 1771 | } |
1772 | |||
1773 | |||
1774 | // Finished with all sim stepping. If requested, dump world state to file for debugging. | ||
1775 | // TODO: This call to the export function is already inside lock(OdeLock) - but is an extra lock needed? | ||
1776 | // TODO: This overwrites all dump files in-place. Should this be a growing logfile, or separate snapshots? | ||
1777 | if(physics_logging && (physics_logging_interval>0) && (framecount % physics_logging_interval == 0) ) { | ||
1778 | string fname = "state-" + world.ToString() + ".DIF"; // give each physics world a separate filename | ||
1779 | string prefix = "world" + world.ToString(); // prefix for variable names in exported .DIF file | ||
1780 | |||
1781 | if(physics_logging_append_existing_logfile) { | ||
1782 | string header = "-------------- START OF PHYSICS FRAME " + framecount.ToString() + " --------------"; | ||
1783 | TextWriter fwriter = File.AppendText(fname); | ||
1784 | fwriter.WriteLine(header); | ||
1785 | fwriter.Close(); | ||
1786 | } | ||
1787 | d.WorldExportDIF(world, fname, physics_logging_append_existing_logfile, prefix); | ||
1788 | } | ||
1762 | } | 1789 | } |
1790 | |||
1763 | return fps; | 1791 | return fps; |
1764 | } | 1792 | } |
1765 | 1793 | ||
diff --git a/bin/Ode.NET.dll b/bin/Ode.NET.dll index 8826b5e..5b296eb 100644 --- a/bin/Ode.NET.dll +++ b/bin/Ode.NET.dll | |||
Binary files differ | |||
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index d61eef0..eb52e6b 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example | |||
@@ -309,6 +309,15 @@ mesh_lod = 32 | |||
309 | ; number^2 physical level of detail of the sculpt texture. 16x16 - 256 verticies | 309 | ; number^2 physical level of detail of the sculpt texture. 16x16 - 256 verticies |
310 | mesh_physical_lod = 16 | 310 | mesh_physical_lod = 16 |
311 | 311 | ||
312 | ; ## | ||
313 | ; ## Physics logging settings - logfiles are saved to *.DIF files | ||
314 | ; ## | ||
315 | |||
316 | ;physics_logging = true | ||
317 | ;; every n simulation iterations, the physics snapshot file is updated | ||
318 | ;physics_logging_interval = 50 | ||
319 | ;; append to existing physics logfile, or overwrite existing logfiles? | ||
320 | ;physics_logging_append_existing_logfile = true | ||
312 | 321 | ||
313 | [RemoteAdmin] | 322 | [RemoteAdmin] |
314 | enabled = false | 323 | enabled = false |
@@ -617,4 +626,4 @@ EventLimit = 30 | |||
617 | ; If a script overruns it's event limit, kill the script? | 626 | ; If a script overruns it's event limit, kill the script? |
618 | KillTimedOutScripts = false | 627 | KillTimedOutScripts = false |
619 | ; Allow OS console command functionality (VERY DANGEROUS!!) | 628 | ; Allow OS console command functionality (VERY DANGEROUS!!) |
620 | AllowosConsoleCommand = false \ No newline at end of file | 629 | AllowosConsoleCommand = false |
diff --git a/bin/libode.so b/bin/libode.so index b614780..fccdf5b 100644 --- a/bin/libode.so +++ b/bin/libode.so | |||
Binary files differ | |||
diff --git a/bin/ode.dll b/bin/ode.dll index 6fd9f1e..7ac31ad 100644 --- a/bin/ode.dll +++ b/bin/ode.dll | |||
Binary files differ | |||