ppo-Pyramids-Training
/
Project
/Assets
/ML-Agents
/Examples
/SharedAssets
/Scripts
/ProjectSettingsOverrides.cs
using UnityEngine; | |
using Unity.MLAgents; | |
namespace Unity.MLAgentsExamples | |
{ | |
/// <summary> | |
/// A helper class for the ML-Agents example scenes to override various | |
/// global settings, and restore them afterwards. | |
/// This can modify some Physics and time-stepping properties, so you | |
/// shouldn't copy it into your project unless you know what you're doing. | |
/// </summary> | |
public class ProjectSettingsOverrides : MonoBehaviour | |
{ | |
// Original values | |
Vector3 m_OriginalGravity; | |
float m_OriginalFixedDeltaTime; | |
float m_OriginalMaximumDeltaTime; | |
int m_OriginalSolverIterations; | |
int m_OriginalSolverVelocityIterations; | |
bool m_OriginalReuseCollisionCallbacks; | |
[ | ]|
public float gravityMultiplier = 1.0f; | |
[ | ]|
[ | ]|
public float fixedDeltaTime = .02f; | |
[ | ]|
public float maximumDeltaTime = 1.0f / 3.0f; | |
[ | ]|
public int solverIterations = 6; | |
[ | ]|
public int solverVelocityIterations = 1; | |
[ | ]|
public bool reuseCollisionCallbacks = true; | |
public void Awake() | |
{ | |
// Save the original values | |
m_OriginalGravity = Physics.gravity; | |
m_OriginalFixedDeltaTime = Time.fixedDeltaTime; | |
m_OriginalMaximumDeltaTime = Time.maximumDeltaTime; | |
m_OriginalSolverIterations = Physics.defaultSolverIterations; | |
m_OriginalSolverVelocityIterations = Physics.defaultSolverVelocityIterations; | |
m_OriginalReuseCollisionCallbacks = Physics.reuseCollisionCallbacks; | |
// Override | |
Physics.gravity *= gravityMultiplier; | |
Time.fixedDeltaTime = fixedDeltaTime; | |
Time.maximumDeltaTime = maximumDeltaTime; | |
Physics.defaultSolverIterations = solverIterations; | |
Physics.defaultSolverVelocityIterations = solverVelocityIterations; | |
Physics.reuseCollisionCallbacks = reuseCollisionCallbacks; | |
// Make sure the Academy singleton is initialized first, since it will create the SideChannels. | |
Academy.Instance.EnvironmentParameters.RegisterCallback("gravity", f => { Physics.gravity = new Vector3(0, -f, 0); }); | |
} | |
public void OnDestroy() | |
{ | |
Physics.gravity = m_OriginalGravity; | |
Time.fixedDeltaTime = m_OriginalFixedDeltaTime; | |
Time.maximumDeltaTime = m_OriginalMaximumDeltaTime; | |
Physics.defaultSolverIterations = m_OriginalSolverIterations; | |
Physics.defaultSolverVelocityIterations = m_OriginalSolverVelocityIterations; | |
Physics.reuseCollisionCallbacks = m_OriginalReuseCollisionCallbacks; | |
} | |
} | |
} | |