private void OnEditMenuItemSelected(object sender, NativeMenuItemEventArgs e) { var menuItem = e.MenuItem; if (menuItem.Tag is Tuple <PropertyInfo, object> propertyInfo) { var result = GetInputResult(propertyInfo.Item1.PropertyType, propertyInfo.Item1.GetValue(propertyInfo.Item2)); if (result != null) { propertyInfo.Item1.SetValue(propertyInfo.Item2, result); menuItem.Value = result; } } else if (menuItem.Tag is Tuple <FieldInfo, object> fieldInfo) { var result = GetInputResult(fieldInfo.Item1.FieldType, fieldInfo.Item1.GetValue(fieldInfo.Item2)); if (result != null) { fieldInfo.Item1.SetValue(fieldInfo.Item2, result); menuItem.Value = result; } } }
private void OnEntitySpawnItemSelected(object sender, NativeMenuItemEventArgs e) { if (e.MenuItem.Tag is string model) { var prop = GTAUtil.CreateProp(model, activateLevelMetadata.Position); if (prop != null) { var spawnOffset = CameraManager.LevelEditorCamera.Direction * 1500; var spawnPos = CameraManager.LevelEditorCamera.Position + spawnOffset; var planetMeta = new Planet { Model = model, Offset = spawnPos - activateLevelMetadata.Position, }; if (activateLevelMetadata.Planets == null) { activateLevelMetadata.Planets = new List <Planet>(); } activateLevelMetadata.Planets.Add(planetMeta); if (activateLevel.PropManager.Planets == null) { activateLevel.PropManager.Planets = new List <PlanetEntity>(); } var planetEntity = new PlanetEntity(prop, planetMeta); activateLevel.PropManager.Planets.Add(planetEntity); var menu = CreateMenuForObject(planetMeta, model); menu.Init(); MenuManager.NativeMenuManager.AddMenu(menu); MenuManager.NativeMenuManager.CloseAllMenus(); menu.Visible = true; AddEditMenuBinding(planetEntity, menu); InitEntityDatabase(); } } }
private void OnFileSelected(object sender, NativeMenuItemEventArgs e) { if (e.MenuItem == null) { return; } var levelMetadata = (SpaceLevel)e.MenuItem.Tag; if (levelMetadata == null) { return; } Level = new RuntimeLevel(levelMetadata); SpaceLevelEditor.BeginEdit(Level); }
private void OnSaveSelected(object sender, NativeMenuItemEventArgs e) { Serializer.Serialize(activateLevelMetadata, activateLevelMetadata.FilePath); UI.Notify("Saved!"); }