Exemplo n.º 1
0
    public PlanetSubEditor(StarSystemEditor starSystemEditor, Planet planet)
    {
        this.starSystemEditor = starSystemEditor;
        this.planet           = planet;

        VisualTreeAsset visualTree = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>("Assets/Scripts/Editor/Star System Editor/PlanetSubEditor.uxml");

        visualTree.CloneTree(this);

        StyleSheet stylesheet = AssetDatabase.LoadAssetAtPath <StyleSheet>("Assets/Scripts/Editor/Star System Editor/PlanetSubEditor.uss");

        this.styleSheets.Add(stylesheet);

        this.AddToClassList("planetSubeditor");

        #region Fields
        TextField nameField = this.Query <TextField>("planetName").First();
        nameField.value = planet.name;
        nameField.RegisterCallback <ChangeEvent <string> >(
            e =>
        {
            planet.name = (string)e.newValue;
            EditorUtility.SetDirty(planet);
        }
            );

        // Sprite is displayed the same way as in the Star System Inspector
        VisualElement planetSpriteDisplay = this.Query <VisualElement>("planetSpriteDisplay").First();
        planetSpriteDisplay.style.backgroundImage = planet.sprite ? planet.sprite.texture : null;

        ObjectField spriteField = this.Query <ObjectField>("planetSprite").First();
        spriteField.objectType = typeof(Sprite);
        spriteField.value      = planet.sprite;
        spriteField.RegisterCallback <ChangeEvent <Object> >(
            e =>
        {
            planet.sprite = (Sprite)e.newValue;
            planetSpriteDisplay.style.backgroundImage = planet.sprite.texture;
            EditorUtility.SetDirty(planet);
        }
            );

        FloatField scaleField = this.Query <FloatField>("planetScale").First();
        scaleField.value = planet.scale;
        scaleField.RegisterCallback <ChangeEvent <float> >(
            e =>
        {
            planet.scale = e.newValue;
            EditorUtility.SetDirty(planet);
        }
            );

        FloatField distanceField = this.Query <FloatField>("planetDistance").First();
        distanceField.value = planet.distance;
        distanceField.RegisterCallback <ChangeEvent <float> >(
            e =>
        {
            planet.distance = e.newValue;
            EditorUtility.SetDirty(planet);
        }
            );


        FloatField speedField = this.Query <FloatField>("planetSpeed").First();
        speedField.value = planet.speed;
        speedField.RegisterCallback <ChangeEvent <float> >(
            e =>
        {
            planet.speed = e.newValue;
            EditorUtility.SetDirty(planet);
        }
            );
        #endregion

        #region Buttons
        Button btnAddPlanet = this.Query <Button>("btnRemove").First();
        btnAddPlanet.clickable.clicked += RemovePlanet;
        #endregion
    }
Exemplo n.º 2
0
    public OrbitLineSubEditor(StarSystemEditor starSystemEditor, OrbitLine orbitLine)
    {
        this.starSystemEditor = starSystemEditor;
        this.orbitLine        = orbitLine;

        VisualTreeAsset visualTree = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>("Assets/Examples/StarSystemScene/Scripts/Editor/StarSystemEditor/OrbitLineSubEditor.uxml");

        visualTree.CloneTree(this);

        StyleSheet stylesheet = AssetDatabase.LoadAssetAtPath <StyleSheet>("Assets/Examples/StarSystemScene/Scripts/Editor/StarSystemEditor/OrbitLineSubEditor.uss");

        this.styleSheets.Add(stylesheet);

        this.AddToClassList("orbitLineSubEditor");

        // Store visual element that will contain the planet sub-inspectors.
        planetList = this.Query <VisualElement>("planetList").First();
        UpdatePlanets();

        noteList = this.Query <VisualElement>("noteList").First();
        UpdateNotes();


        #region Fields
        TextField stringField = this.Query <TextField>("orbitName").First();
        stringField.value = orbitLine.name;
        stringField.RegisterCallback <ChangeEvent <string> >(
            e =>
        {
            orbitLine.name = (string)e.newValue;
            EditorUtility.SetDirty(orbitLine);
        }
            );

        Slider distanceField = this.Query <Slider>("orbitDistance").First();
        distanceField.value = orbitLine.orbitDistance;
        distanceField.label = "Orbit Distance " + distanceField.value.ToString("F2");
        distanceField.RegisterCallback <ChangeEvent <float> >(
            e =>
        {
            orbitLine.orbitDistance = e.newValue;
            distanceField.label     = "Orbit Distance " + e.newValue.ToString("F2");
            EditorUtility.SetDirty(orbitLine);
        }
            );


        Slider thicknessField = this.Query <Slider>("thickness").First();
        thicknessField.value = orbitLine.thickness;
        thicknessField.label = "Thickness " + thicknessField.value.ToString("F3");
        thicknessField.RegisterCallback <ChangeEvent <float> >(
            e =>
        {
            orbitLine.thickness  = e.newValue;
            thicknessField.label = "Thickness " + e.newValue.ToString("F3");
            EditorUtility.SetDirty(orbitLine);
        }
            );

        IntegerField segmentsField = this.Query <IntegerField>("segments").First();
        segmentsField.value = orbitLine.segments;
        segmentsField.RegisterCallback <ChangeEvent <int> >(
            e =>
        {
            orbitLine.segments = e.newValue;
            EditorUtility.SetDirty(orbitLine);
        }
            );

        ColorField colorField = this.Query <ColorField>("color").First();
        colorField.value = orbitLine.color;
        colorField.RegisterCallback <ChangeEvent <Color> >(
            e =>
        {
            orbitLine.color = e.newValue;
            EditorUtility.SetDirty(orbitLine);
        }
            );

        Toggle waypointField = this.Query <Toggle>("useWaypoints").First();
        waypointField.value = orbitLine.useWaypoints;
        waypointField.RegisterCallback <ChangeEvent <bool> >(
            e =>
        {
            orbitLine.useWaypoints = e.newValue;
            EditorUtility.SetDirty(orbitLine);
        }
            );

        #endregion

        #region Buttons
        // Assign methods to the click events of the two buttons.
        Button btnAddPlanet = this.Query <Button>("btnAddNewPlanet").First();
        btnAddPlanet.clickable.clicked += AddPlanet;

        Button btnRemoveAllPlanets = this.Query <Button>("btnRemoveAllPlanets").First();
        btnRemoveAllPlanets.clickable.clicked += RemoveAllPlanets;

        // Assign methods to the click events of the two buttons.
        Button btnAddNote = this.Query <Button>("btnAddNewNote").First();
        btnAddNote.clickable.clicked += AddNote;

        Button btnRemoveAllNotes = this.Query <Button>("btnRemoveAllNotes").First();
        btnRemoveAllNotes.clickable.clicked += RemoveAllNotes;



        Button btnRemoveOrbit = this.Query <Button>("btnRemoveOrbitLine").First();
        btnRemoveOrbit.clickable.clicked += RemoveOrbitLine;
        #endregion
    }