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 }
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 }