1
1
using UnityEngine ;
2
2
using UnityEditor ;
3
3
using Barracuda ;
4
+ using MLAgents . Sensor ;
4
5
5
6
namespace MLAgents
6
7
{
@@ -11,41 +12,41 @@ This code is meant to modify the behavior of the inspector on Agent Components.
11
12
[ CanEditMultipleObjects ]
12
13
public class BehaviorParametersEditor : Editor
13
14
{
14
- private const float k_TimeBetweenModelReloads = 2f ;
15
+ const float k_TimeBetweenModelReloads = 2f ;
15
16
// Time since the last reload of the model
16
- private float m_TimeSinceModelReload ;
17
+ float m_TimeSinceModelReload ;
17
18
// Whether or not the model needs to be reloaded
18
- private bool m_RequireReload ;
19
+ bool m_RequireReload ;
19
20
20
21
public override void OnInspectorGUI ( )
21
22
{
22
- var serializedObject = base . serializedObject ;
23
- serializedObject . Update ( ) ;
23
+ var so = serializedObject ;
24
+ so . Update ( ) ;
24
25
25
26
// Drawing the Behavior Parameters
26
27
EditorGUI . BeginChangeCheck ( ) ;
27
28
EditorGUI . indentLevel ++ ;
28
- EditorGUILayout . PropertyField ( serializedObject . FindProperty ( "m_BehaviorName" ) ) ;
29
- EditorGUILayout . PropertyField ( serializedObject . FindProperty ( "m_BrainParameters" ) , true ) ;
30
- EditorGUILayout . PropertyField ( serializedObject . FindProperty ( "m_Model" ) , true ) ;
29
+ EditorGUILayout . PropertyField ( so . FindProperty ( "m_BehaviorName" ) ) ;
30
+ EditorGUILayout . PropertyField ( so . FindProperty ( "m_BrainParameters" ) , true ) ;
31
+ EditorGUILayout . PropertyField ( so . FindProperty ( "m_Model" ) , true ) ;
31
32
EditorGUI . indentLevel ++ ;
32
- EditorGUILayout . PropertyField ( serializedObject . FindProperty ( "m_InferenceDevice" ) , true ) ;
33
+ EditorGUILayout . PropertyField ( so . FindProperty ( "m_InferenceDevice" ) , true ) ;
33
34
EditorGUI . indentLevel -- ;
34
- EditorGUILayout . PropertyField ( serializedObject . FindProperty ( "m_UseHeuristic " ) ) ;
35
+ EditorGUILayout . PropertyField ( so . FindProperty ( "m_BehaviorType " ) ) ;
35
36
// EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Heuristic"), true);
36
37
EditorGUI . indentLevel -- ;
37
38
if ( EditorGUI . EndChangeCheck ( ) )
38
39
{
39
40
m_RequireReload = true ;
40
41
}
41
42
DisplayFailedModelChecks ( ) ;
42
- serializedObject . ApplyModifiedProperties ( ) ;
43
+ so . ApplyModifiedProperties ( ) ;
43
44
}
44
45
45
46
/// <summary>
46
47
/// Must be called within OnEditorGUI()
47
48
/// </summary>
48
- private void DisplayFailedModelChecks ( )
49
+ void DisplayFailedModelChecks ( )
49
50
{
50
51
if ( m_RequireReload && m_TimeSinceModelReload > k_TimeBetweenModelReloads )
51
52
{
@@ -56,15 +57,17 @@ private void DisplayFailedModelChecks()
56
57
D . logEnabled = false ;
57
58
Model barracudaModel = null ;
58
59
var model = ( NNModel ) serializedObject . FindProperty ( "m_Model" ) . objectReferenceValue ;
59
- var brainParameters = ( ( BehaviorParameters ) target ) . brainParameters ;
60
+ var behaviorParameters = ( BehaviorParameters ) target ;
61
+ var sensorComponents = behaviorParameters . GetComponents < SensorComponent > ( ) ;
62
+ var brainParameters = behaviorParameters . brainParameters ;
60
63
if ( model != null )
61
64
{
62
65
barracudaModel = ModelLoader . Load ( model . Value ) ;
63
66
}
64
67
if ( brainParameters != null )
65
68
{
66
69
var failedChecks = InferenceBrain . BarracudaModelParamLoader . CheckModel (
67
- barracudaModel , brainParameters ) ;
70
+ barracudaModel , brainParameters , sensorComponents ) ;
68
71
foreach ( var check in failedChecks )
69
72
{
70
73
if ( check != null )
0 commit comments