| | using System; |
| | using UnityEngine; |
| |
|
| | namespace Unity.MLAgents.SideChannels |
| | { |
| | |
| | |
| | |
| | internal class EngineConfigurationChannel : SideChannel |
| | { |
| | internal enum ConfigurationType : int |
| | { |
| | ScreenResolution = 0, |
| | QualityLevel = 1, |
| | TimeScale = 2, |
| | TargetFrameRate = 3, |
| | CaptureFrameRate = 4 |
| | } |
| |
|
| | const string k_EngineConfigId = "e951342c-4f7e-11ea-b238-784f4387d1f7"; |
| |
|
| | |
| | |
| | |
| | |
| | internal EngineConfigurationChannel() |
| | { |
| | ChannelId = new Guid(k_EngineConfigId); |
| | } |
| |
|
| | |
| | protected override void OnMessageReceived(IncomingMessage msg) |
| | { |
| | var messageType = (ConfigurationType)msg.ReadInt32(); |
| | switch (messageType) |
| | { |
| | case ConfigurationType.ScreenResolution: |
| | var width = msg.ReadInt32(); |
| | var height = msg.ReadInt32(); |
| | Screen.SetResolution(width, height, false); |
| | break; |
| | case ConfigurationType.QualityLevel: |
| | var qualityLevel = msg.ReadInt32(); |
| | QualitySettings.SetQualityLevel(qualityLevel, true); |
| | break; |
| | case ConfigurationType.TimeScale: |
| | var timeScale = msg.ReadFloat32(); |
| |
|
| | |
| | |
| | #if UNITY_EDITOR |
| | const float maxTimeScale = 100f; |
| | #else |
| | const float maxTimeScale = float.PositiveInfinity; |
| | #endif |
| | timeScale = Mathf.Clamp(timeScale, 1, maxTimeScale); |
| | Time.timeScale = timeScale; |
| | break; |
| | case ConfigurationType.TargetFrameRate: |
| | var targetFrameRate = msg.ReadInt32(); |
| | Application.targetFrameRate = targetFrameRate; |
| | break; |
| | case ConfigurationType.CaptureFrameRate: |
| | var captureFrameRate = msg.ReadInt32(); |
| | Time.captureFramerate = captureFrameRate; |
| | break; |
| | default: |
| | Debug.LogWarning( |
| | "Unknown engine configuration received from Python. Make sure" + |
| | " your Unity and Python versions are compatible."); |
| | break; |
| | } |
| | } |
| | } |
| | } |
| |
|