summaryrefslogtreecommitdiff
path: root/Assets/ThirdParty/AdvancedInspector/Examples/CSharp/AIExample39_DynamicStatic.cs
blob: 511eb8379dcd8e8f5ecbfba4e2ea5a18750ad4ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using UnityEngine;
using System.Collections;

using AdvancedInspector;

[AdvancedInspector]
public class AIExample39_DynamicStatic : MonoBehaviour
{
    // A Runtime Dynamic attribute can also recieve the path towards a static method declared in any type.
    // This offers a way to write generic conditionals.
    // The '.' denote a path towards a method. The class owning the method can be nested.
    [Inspect("StaticDynamicExample.Inspect")]
    public bool myVariable;

    public bool displayItem = true;

    // In this example, the button toggle on/off the display of "myVariable".
    [Inspect]
    public void PressMe()
    {
        displayItem = !displayItem;
    }

    [Inspect, Help(HelpAttribute.IsNull, HelpType.Error, "Should not be null!")]
    public Camera nullField;
}

public class StaticDynamicExample
{
    // The delegate should have a single param argument.
    // Usually, Advanced Inspector pass the instance and the value as argument.
    // Other attribute may pass extra argument, such as Regex or the attribute properties. 
    private static bool Inspect(InspectAttribute inspect, object instance, object value)
    {
        AIExample39_DynamicStatic example = instance as AIExample39_DynamicStatic;
        if (example == null)
            return false;

        return example.displayItem;
    }
}