Esempio n. 1
0
        public TileDetails(TileConfig tc) : this()
        {
            _tileConfig = tc;
            IsEdit      = true;

            PopulateControls();
        }
Esempio n. 2
0
        public void wordt_de_juiste_tegel_gevonden()
        {
            var config = new TileConfig
            {
                Naam         = nameof(wordt_de_juiste_tegel_gevonden),
                LinksBoven   = new Coordinaat(116000, 580000),
                TegelBreedte = 1000,
                TegelHoogte  = 1000,
                Url          = "{X_Links},{Y_Boven},{X_Rechts},{Y_Onder},{Rij},{Kolom}",
            };

            var tiles = config.GetTilesForRectangle(new[] { new Coordinaat(config.LinksBoven.X + 1, config.LinksBoven.Y - 1), new Coordinaat(config.LinksBoven.X + 2, config.LinksBoven.Y - 2) });

            PAssert.That(() => tiles.Count() == 1);

            var tile = tiles.Single();

            PAssert.That(() => tile.TopLeft.X == config.LinksBoven.X);
            PAssert.That(() => tile.TopLeft.Y == config.LinksBoven.Y);

            PAssert.That(() => tile.BottomRight.X == config.LinksBoven.X + config.TegelBreedte);
            PAssert.That(() => tile.BottomRight.Y == config.LinksBoven.Y - config.TegelHoogte);

            PAssert.That(() => tile.Rij == 1);
            PAssert.That(() => tile.Kolom == 1);

            PAssert.That(() => tile.FormattedUrl() == "116000,580000,117000,579000,1,1");
        }
Esempio n. 3
0
        public void CreateTilesFromConfiguration(TileConfig tileConfig, UnityObject prefab)
        {
            Vector2  coordinate = tileConfig.coordinate;
            TileType type       = tileConfig.type;
            State    state      = tileConfig.state;

            int tileCoordinateX = (int)coordinate.x;
            int tileCoordinateY = (int)coordinate.y;

            BaseTile tile = null;

            switch (type)
            {
            case TileType.Water:
                tile = waterTilePrefab;
                break;

            case TileType.Asphalt:
                tile = asphaltTilePrefab;
                break;

            case TileType.Grass:
                tile = grassTilePrefab;
                break;
            }

            InstantiateSavedTile(tileCoordinateX, tileCoordinateY, tile);
            InstantiateSavedUnityObject(tileCoordinateX, tileCoordinateY, prefab);
            SetState(tileCoordinateX, tileCoordinateY, state);
        }
Esempio n. 4
0
 /// <summary>
 /// Initialize the generation context: settings, logger,
 /// tiles configuration and tile generator.
 /// </summary>
 private void Init()
 {
     // Load settings
     try {
         _settings = Settings.LoadOrDefault(Settings.SETTINGS_PATH);
         _logger   = new Logger(_settings.LogFilePath);
     } catch (Exception ex) {
         _msg.InvalidSettings(ex);
         Environment.Exit(11);
         return;
     }
     // Initialize the logger
     _msg.Logger = _logger;
     try {
         _logger.Init();
     } catch (Exception ex) {
         _msg.InvalidLogFile(ex);
         Environment.Exit(12);
         return;
     }
     _logger.Success("Loaded settings");
     // Load tiles configuration
     try {
         _tilesConfig = TileConfig.Load(_settings.TilesConfigPath);
     } catch (Exception ex) {
         _msg.InvalidTilesConfig(ex);
         Environment.Exit(13);
     }
     _logger.Success("Loaded tiles configuration");
     // Initialize the tile generator
     _generator = new TileGenerator(_settings, _logger);
     _logger.Success("Initialized tiles generator");
 }
Esempio n. 5
0
        public EditorTiles(string stage_directory, string palleteDir = null)
        {
            Image = new GIF(Path.Combine(stage_directory, "16x16Tiles.gif"), palleteDir);
            //ImageTransparent = new GIF(SetImageOpacity(Image.ToBitmap(), (float)0.1));
            //IDImage = new GIF(Environment.CurrentDirectory + "\\Resources\\Tile Overlays\\" + "16x16Tiles_ID.gif");
            //EditorImage = new GIF(Environment.CurrentDirectory + "\\Resources\\Tile Overlays\\" + "16x16Tiles_Edit.gif");
            if (File.Exists(Path.Combine(stage_directory, "TileConfig.bin")))
            {
                Config = new TileConfig(Path.Combine(stage_directory, "TileConfig.bin"));
                Bitmap SheetA = new Bitmap(16, 16 * 1024);
                Bitmap SheetB = new Bitmap(16, 16 * 1024);

                using (Graphics g = Graphics.FromImage(SheetA))
                {
                    for (int i = 0; i < 1024; i++)
                    {
                        g.DrawImage(Config.CollisionPath1[i].DrawCMask(System.Drawing.Color.FromArgb(0, 0, 0, 0), System.Drawing.Color.White), new Point(0, 16 * i));
                    }
                }

                using (Graphics g = Graphics.FromImage(SheetB))
                {
                    for (int i = 0; i < 1024; i++)
                    {
                        g.DrawImage(Config.CollisionPath2[i].DrawCMask(System.Drawing.Color.FromArgb(0, 0, 0, 0), System.Drawing.Color.White), new Point(0, 16 * i));
                    }
                }

                CollisionMaskA = new GIF(SheetA);
                CollisionMaskB = new GIF(SheetB);
            }
        }
Esempio n. 6
0
        private static void AchtergrondCommand_(TileConfig tileConfig)
        {
            try
            {
                var location = AutocadUtils.GetRectangle();
                if (location == null)
                {
                    return;
                }

                var tileNames = tileConfig.GetTileByLocation(location).ToArray();
                if (!tileNames.Any())
                {
                    Application.ShowAlertDialog(GeenAchtergrondGevonden);
                }
                foreach (var tileName in tileNames)
                {
                    var num = (short)Application.GetSystemVariable("FILEDIA");
                    Application.DocumentManager.CurrentDocument.SendStringToExecute("_FILEDIA " + 0 + " ", true, false,
                                                                                    false);
                    var str = $"_MAPIINSERT \"{tileName}\" N ";
                    Application.DocumentManager.CurrentDocument.SendStringToExecute(str, false, true, true);
                    Application.DocumentManager.CurrentDocument.SendStringToExecute("_FILEDIA " + num + " ", true, false,
                                                                                    false);
                }
            }
            catch (Exception ex)
            {
                Utilities.HandleError(ex);
            }
        }
Esempio n. 7
0
 public Key(DataSource dataSource, TileConfig config)
 {
     DataSourceId = dataSource.DataSourceId;
     ZoomLevel    = config.ZoomLevel;
     TileX        = config.TileX;
     TileY        = config.TileY;
 }
Esempio n. 8
0
        private void radButtonDelete_Click(object sender, EventArgs e)
        {
            List <TileConfig> lTileConfig = _lTileConfig != null ? _lTileConfig : new List <TileConfig>();

            if (this.radGridViewTileConfig.CurrentRow is GridViewDataRowInfo)
            {
                TileConfig targetTileConfig = (TileConfig)radGridViewTileConfig.CurrentRow.DataBoundItem;

                if (lTileConfig.Count(x => x.TileconfigID == targetTileConfig.ID) > 0)
                {
                    System.Diagnostics.Debug.WriteLine("Cannot delete ID: {0}, since sub tiles exist", targetTileConfig.ID);

                    this.ShowAlertBox("Options", "Sub tiles exist under parent tile, cannot delete parent tile!");
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine("Delete ID: {0}", targetTileConfig.ID);
                    DialogResult dr = RadMessageBox.Show(this, "Are you sure delete the tile? This operation cannot be undone!", "Delete Tile", MessageBoxButtons.YesNo, RadMessageIcon.Question);

                    if (dr == DialogResult.Yes)
                    {
                        SetCurrentSelectionIndex();
                        NetworkFunction.DeleteTileConfig(targetTileConfig);
                    }
                }
            }
        }
Esempio n. 9
0
        private void SetAllTileConfigFromServer(TileConfig tileConfig)
        {
            string dataFolder = Utility.GetGameSelectorDataFolder();

            Utility.MakeSureFolderExist(dataFolder + @"Images");

            _internalTileConfig = null;

            if (PopulateImageFolder(tileConfig.MainScreenTiles, dataFolder))
            {
                _internalTileConfig = tileConfig;

                if (_internalClientRunningMode != null && (_internalClientRunningMode.RunningMode == Enums.ClientRunningMode.TIMING_ON || _internalClientRunningMode.RunningMode == Enums.ClientRunningMode.NO_TIMING_ON))
                {
                    Tile playTile = _internalTileConfig.MainScreenTiles.Where(x => x.TileID == _internalClientRunningMode.CurrentRunningTileID.ToString()).FirstOrDefault();

                    if (playTile != null)
                    {
                        _internalCurrentPlayingTile = playTile;
                    }
                }

                _isRequestingTileWithImage = false;

                Debug.WriteLine("========IMAGE GOOD");
            }
            else
            {
                // some image not exist / not match
                _isRequestingTileWithImage = true;

                Debug.WriteLine("========IMAGE NOT GOOD");
            }
        }
Esempio n. 10
0
 private static void AchtergrondCommand(TileConfig tileConfig)
 {
     using (var tr = Application.DocumentManager.CurrentDocument.TransactionManager.StartTransaction()) {
         var i = new GeomapImage();
         tr.GetObject(Application.DocumentManager.CurrentDocument.Database.CurrentSpaceId, OpenMode.ForWrite);
         var ri = RasterImageDef.GetImageDictionary(Application.DocumentManager.MdiActiveDocument.Database);
     }
 }
Esempio n. 11
0
 public NeighborData(TileConfig leftNeighborConfig, TileConfig rightNeighborConfig, int leftRotation, int rightRotation, bool horizontal = true)
 {
     LeftNeighborConfig  = leftNeighborConfig;
     RightNeighborConfig = rightNeighborConfig;
     LeftRotation        = leftRotation;
     RightRotation       = rightRotation;
     Horizontal          = horizontal;
 }
Esempio n. 12
0
 public void GenerateMap()
 {
     TileConfig[,] tileConfigs = new TileConfig[, ] {
         { land, mountain, land },
         { land, mountain, land },
         { mountain, mountain, land }
     };
     MeshMap.GenerateMap(transform, tileConfigs);
 }
Esempio n. 13
0
        private void buttonTileConfigDown_Click(object sender, EventArgs e)
        {
            if (this.radGridViewTileConfig.CurrentRow is GridViewDataRowInfo)
            {
                TileConfig targetTileConfig = (TileConfig)radGridViewTileConfig.CurrentRow.DataBoundItem;

                SetCurrentSelectionIndex();

                NetworkFunction.ReOrderDownTileConfig(targetTileConfig);
            }
        }
Esempio n. 14
0
        public static void GetTileConfig(int tileConfigSetID)
        {
            TileConfig tc = new TileConfig()
            {
                TileConfigSetID = tileConfigSetID
            };

            VRCommandServer cmd = new VRCommandServer(Enums.ControlMessage.GET_TILE_CONFIG, tc);

            SendCommandToServer(cmd);
        }
Esempio n. 15
0
 public StageTiles(string stage_directory, string palleteDir = null)
 {
     Image            = new GIF(Path.Combine(stage_directory, "16x16Tiles.gif"), palleteDir);
     ImageTransparent = new GIF(SetImageOpacity(Image.ToBitmap(), (float)0.1));
     IDImage          = new GIF(Environment.CurrentDirectory + "\\Resources\\Tile Overlays\\" + "16x16Tiles_ID.gif");
     EditorImage      = new GIF(Environment.CurrentDirectory + "\\Resources\\Tile Overlays\\" + "16x16Tiles_Edit.gif");
     if (File.Exists(Path.Combine(stage_directory, "TileConfig.bin")))
     {
         Config = new TileConfig(Path.Combine(stage_directory, "TileConfig.bin"));
     }
 }
Esempio n. 16
0
        /// <summary>
        /// Generate tiles for an application and update the shortcut.
        /// </summary>
        /// <param name="tileConfig">Tile generation configuration</param>
        /// <param name="app">Application shortcut and executable information</param>
        /// <param name="sizes">Tiles dimensions</param>
        /// <param name="overwrite">Overwrite existing tiles</param>
        public static void GenerateTileSet(TileConfig tileConfig, AppShortcut app, TileSetSizes sizes, bool overwrite = false)
        {
            // Prepare assets directory and make some verifications
            string appPath    = Path.GetDirectoryName(app.ExecutablePath);
            string assetsPath = Path.Combine(appPath, AssetsConstants.AssetsFolderName);
            string xml        = Path.Combine(appPath, Path.GetFileNameWithoutExtension(app.ExecutablePath)
                                             + AssetsConstants.VisualElementsManifestXmlFileExtension);
            string mediumTilePath = Path.Combine(assetsPath, AssetsConstants.MediumTileFileName);
            string smallTilePath  = Path.Combine(assetsPath, AssetsConstants.SmallTileFileName);

            if (File.Exists(xml) && Directory.Exists(assetsPath) && !File.Exists(mediumTilePath) && !File.Exists(smallTilePath))
            {
                // Assets (not generated by Tile) already exist in the application directory
                throw new Exception("Application already have built-in custom assets");
            }
            else if (!overwrite && File.Exists(xml))
            {
                // Custom assets (generated by Tile) already exist
                throw new Exception("Custom assets already exist, delete them or set the override flag to true");
            }
            // else: create the assets directory
            Directory.CreateDirectory(assetsPath);

            // Generate the XML file (background color, logo paths, foreground color, and XML filename)
            File.WriteAllText(xml, GenerateXMLVisualElements(
                                  tileConfig.BackgroundColorAsObj, tileConfig.ForegroundTextAsEnum, tileConfig.ShowNameOnMediumTile));

            // Tile generation
            Image mediumTile, smallTile;

            if (tileConfig.GenerationModeAsEnum == TileGenerationMode.Custom)
            {
                mediumTile = GenerateTile(sizes.Medium.TileSize, tileConfig.BackgroundColorAsObj,
                                          tileConfig.IconPath, sizes.Medium.TileSize);
                smallTile = GenerateTile(sizes.Small.TileSize, tileConfig.BackgroundColorAsObj,
                                         tileConfig.IconPath, sizes.Small.TileSize);
            }
            else
            {
                int shift = (int)(ADJUSTED_ICON_Y_SHIFT * sizes.Medium.TileSize.Height);
                mediumTile = GenerateTile(sizes.Medium.TileSize, tileConfig.BackgroundColorAsObj,
                                          tileConfig.IconPath, sizes.Medium.IconSize.Scale(tileConfig.IconScale.MediumTile),
                                          tileConfig.GenerationModeAsEnum == TileGenerationMode.Adjusted ? shift : 0);
                smallTile = GenerateTile(sizes.Small.TileSize, tileConfig.BackgroundColorAsObj,
                                         tileConfig.IconPath, sizes.Small.IconSize.Scale(tileConfig.IconScale.SmallTile));
            }

            // Save tiles in assets directory
            mediumTile.Save(mediumTilePath, ImageFormat.Png);
            smallTile.Save(smallTilePath, ImageFormat.Png);

            // Set shortcut last write time to now (to update tile)
            File.SetLastWriteTime(app.ShortcutPath, DateTime.Now);
        }
Esempio n. 17
0
        private void radGridViewTileConfig_DoubleClick(object sender, EventArgs e)
        {
            if (this.radGridViewTileConfig.CurrentRow is GridViewDataRowInfo)
            {
                TileConfig targetTileConfig = (TileConfig)radGridViewTileConfig.CurrentRow.DataBoundItem;

                SetCurrentSelectionIndex();

                TileDetails td = new TileDetails(targetTileConfig);
                td.ShowDialog();
            }
        }
Esempio n. 18
0
        private void buttonSendTileConfig_Click(object sender, EventArgs e)
        {
            List <Connection> currentConnections = NetworkComms.GetExistingConnection();
            TileConfig        tc = BuildMockTileData();

            foreach (Connection conn in currentConnections)
            {
                VRCommand cmd = new VRCommand(tc);

                SendCommandToClientSpecific(conn, cmd);
            }
        }
Esempio n. 19
0
 /// <summary>
 /// Reload the tiles configuration file.
 /// </summary>
 /// <param name="sender">Event sender</param>
 /// <param name="e">Event arguments</param>
 private void ReloadTilesConfigurationFile(object sender, RoutedEventArgs e)
 {
     try {
         _tilesConfig            = TileConfig.Load(_settings.TilesConfigPath);
         _apps                   = null;
         _viewModel.SelectedApps = null;
         _viewModel.IsReady      = false;
         _msg.LoadedTilesConfigFile();
         LookupApplications();
     } catch (Exception ex) {
         _msg.InvalidTilesConfig(ex);
     }
 }
Esempio n. 20
0
        public List <Feature> Fetch(TileConfig config, DataSource dataSource)
        {
            //Don't cache high levels
            if (config.ZoomLevel < _minLevelToCache)
            {
                return(dataSource.Fetch(config.PaddedEnvelope));
            }

            var key = new Key(dataSource, config);

            return(_lurchTable.GetOrAdd(key, delegate
            {
                return dataSource.Fetch(config.PaddedEnvelope);
            }));
        }
Esempio n. 21
0
        /// <summary>
        /// Copy the embedded tiles configuration file next to the application executable
        /// to allow the user to customize tile generation.
        /// </summary>
        /// <param name="sender">Event sender</param>
        /// <param name="e">Event arguments</param>
        private void ExposeTilesConfigurationFile(object sender, RoutedEventArgs e)
        {
            string path = _settings.TilesConfigPath;

            if (File.Exists(path) && !_msg.OverwriteTilesConfigFile())
            {
                return;
            } // else
            try {
                TileConfig.ExportEmbeddedConfiguration(path);
                _msg.ExposedTilesConfigFile(path);
            } catch (Exception ex) {
                _msg.FailedExposingTilesConfigFile(ex);
            }
        }
Esempio n. 22
0
        public void buiten_het_raster_geen_tegel_boven()
        {
            var config = new TileConfig
            {
                Naam         = nameof(buiten_het_raster_geen_tegel_links),
                LinksBoven   = new Coordinaat(116000, 580000),
                TegelBreedte = 1000,
                TegelHoogte  = 1000,
                Url          = "{X_Links},{Y_Boven},{X_Rechts},{Y_Onder},{Rij},{Kolom}",
            };

            var tiles = config.GetTilesForRectangle(new[] { new Coordinaat(config.LinksBoven.X, config.LinksBoven.Y - 1), new Coordinaat(config.LinksBoven.X + 1, config.LinksBoven.Y - 2) });

            PAssert.That(() => tiles.Count() == 0);
        }
Esempio n. 23
0
        private void SetClientUITileConfig()
        {
            if (_internalTileConfig != null)
            {
                TileConfig tmpTileConfig = _internalTileConfig;

                if (_internalClientRunningMode != null && _internalClientRunningMode.CustomerAge > 0)
                {
                    tmpTileConfig.MainScreenTiles.RemoveAll(x => x.AgeRequire > _internalClientRunningMode.CustomerAge);
                }

                VRCommand cmd = new VRCommand(tmpTileConfig);
                SendCommandToUIClient(cmd);
            }
        }
Esempio n. 24
0
        public bool CanPlaceLabel(TileConfig tile, LabelDetails label)
        {
            var qt = _quadtrees[tile.ZoomLevel];

            lock (qt)
            {
                var potentials = qt.Query(label.Outline.EnvelopeInternal);
                foreach (var x in potentials)
                {
                    //If we collide with ourself, we can be placed
                    if (x.Outline.Intersects(label.Outline))
                    {
                        return(x.UniqueId == label.UniqueId);
                    }
                }
                qt.Insert(label.Outline.EnvelopeInternal, label);
            }
            return(true);
        }
Esempio n. 25
0
        /// <summary>
        /// Load configuration, initialize and run the program.
        /// </summary>
        /// <param name="args">Command line arguments</param>
        /// <returns>Exit code</returns>
        private int Run(string[] args = null)
        {
            var settings = Settings.LoadOrDefault(Settings.SETTINGS_PATH);

            _logger = new Logger(settings.LogFilePath);
            _logger.Init();
            _logger.Success("Loaded settings");
            var tilesConfig = TileConfig.Load(settings.TilesConfigPath);

            _logger.Success("Loaded tiles configuration");
            var generator = new TileGenerator(settings, _logger);

            _logger.Success("Initialized tiles generator");

            var apps = generator.LookupApps(tilesConfig);

            if (apps.Count == 0)
            {
                _logger.Warning("No applications to process, check the shortcuts locations");
                return(1);
            }
            else
            {
                _logger.Success($"Found {apps.Count} applications to process");
                if (args.Length > 0)
                {
                    apps = apps.Keep(args); // Only process given apps
                }
                var processedApps = generator.GenerateTiles(tilesConfig, apps);
                if (processedApps.Count > 0)
                {
                    _logger.Success($"Processed {processedApps.Count}/{apps.Count} application(s) ({string.Join(", ", processedApps)})");
                }
                else
                {
                    _logger.Info("No tiles were generated");
                }
            }

            return(0);
        }
Esempio n. 26
0
        public async Task <TileConfig> UpdateAsync(TileConfig item)
        {
            var TileConfig = _context.TileConfig.Where(q => q.CharacterTileId == item.CharacterTileId).FirstOrDefault();

            if (TileConfig == null)
            {
                return(TileConfig);
            }
            TileConfig.Col   = item.Col;
            TileConfig.Row   = item.Row;
            TileConfig.SizeX = item.SizeX;
            TileConfig.SizeY = item.SizeY;
            try
            {
                await _repo.Update(TileConfig);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(TileConfig);
        }
Esempio n. 27
0
        // incomming vr command
        private void HandleIncomingCommand(PacketHeader packetHeader, Connection connection, VRCommand vrCommand)
        {
            switch (vrCommand.ControlMessage)
            {
            case Enums.ControlMessage.PLAY_LOG:

                infoText = connection.ToString() + " Play Log: '" + vrCommand.PlayLog.TileID.ToString() + "', '" + vrCommand.PlayLog.SignalType.ToString() + "'";

                break;

            case Enums.ControlMessage.LOAD_CONFIG:

                TileConfig tc  = BuildMockTileData();
                VRCommand  cmd = new VRCommand(tc);
                SendCommandToClientSpecific(connection, cmd);

                break;

            case Enums.ControlMessage.STATUS:

                infoText = connection.ToString() + " Client Status: '" + vrCommand.ClientStatus.ClientIP + "'";

                break;

            case Enums.ControlMessage.CLIENT_UI_READY:

                EndNow();

                //Task.Delay(1000).ContinueWith(t => EndNow());

                infoText = connection.ToString() + " Client UI Ready.";

                break;

            default:
                break;
            }
        }
Esempio n. 28
0
        private void radButtonAddSubTile_Click(object sender, EventArgs e)
        {
            int parentTileConfigID        = 0;
            int lastOrder                 = 0;
            List <TileConfig> lTileConfig = _lTileConfig != null ? _lTileConfig : new List <TileConfig>();

            if (this.radGridViewTileConfig.CurrentRow is GridViewDataRowInfo)
            {
                TileConfig targetTileConfig = (TileConfig)radGridViewTileConfig.CurrentRow.DataBoundItem;

                if (targetTileConfig.TileconfigID == 0)
                {
                    parentTileConfigID = targetTileConfig.ID; // selected tile will be the parent
                }
                else
                {
                    parentTileConfigID = targetTileConfig.TileconfigID; // set the parent tile
                }
            }


            foreach (TileConfig tc in lTileConfig)
            {
                if (tc.TileconfigID == parentTileConfigID && tc.Order > lastOrder)
                {
                    lastOrder = tc.Order;
                }
            }

            System.Diagnostics.Debug.WriteLine("parentTileConfigID: {0}  lastOrder: {1}", parentTileConfigID, lastOrder);

            SetCurrentSelectionIndex();

            TileDetails td = new TileDetails(parentTileConfigID, lastOrder + 1, (int)comboBoxTileConfig.SelectedItem.Value);

            td.ShowDialog();
        }
Esempio n. 29
0
        /// <summary>
        /// Create button for each tile based at tiles configs library.
        /// </summary>
        /// <param name="tileConfigsLibrary">Tiles configs library.</param>
        private void CreateTileButtonsGui(TileConfigsLibrary tileConfigsLibrary)
        {
            EditorGUILayout.BeginVertical(_innerContainerGuiStyle);

            //Display the title
            EditorGUILayout.LabelField("Tile Configs:", EditorStyles.boldLabel);

            EditorGUILayout.Space();

            EditorGUILayout.BeginHorizontal(EditorStyles.helpBox);

            foreach (var tileConfig in tileConfigsLibrary.tileConfigsList)
            {
                if (GUILayout.Button($"{tileConfig.tileMaterialConfig.tileMaterialType}", GUILayout.Width(64), GUILayout.Height(40)))
                {
                    Debug.Log($"Current tile material: {tileConfig.tileMaterialConfig.tileMaterialType}");
                    _currentTileConfig = tileConfig;
                }
            }

            EditorGUILayout.EndHorizontal();

            EditorGUILayout.EndVertical();
        }
Esempio n. 30
0
        public void HandleEntry(FileInfo sourceFile, Entry entry, List <Model3D> modelCollection, DataTreeObject dataTreeParent = null, Transform3D globalTransform = null)
        {
            TileEntry tile = (TileEntry)entry;

            //Transform3D trs = new Transform3D();
            //tile.getTransform(tile.getConfig(scene.getConfigManager()), trs);

            SetupCosmeticInformation(tile, dataTreeParent);
            // TODO: Some config references have SK data that I need. I need to do a hybrid of my shallow implementation on
            // top of the bootstrapper that loads the actual filtered game data so that I can grab everything.
            TileConfig[] tileCfgs = ConfigReferenceBootstrapper.ConfigReferences["tile"].OfType <TileConfig>().ToArray();
            TileConfig   tileCfg  = tileCfgs.GetEntryByName(tile.tile.getName());

            if (tileCfg == null)
            {
                XanLogger.WriteLine($"Unable to find data for tile [{tile.tile.getName()}]!");
                return;
            }


            // First things first: Tiles are offset and in the wrong position. Fix it.

            SKAnimatorToolsProxy.IncrementEnd();
            TileConfig.Original originalImpl;
            do
            {
                if (tileCfg == null)
                {
                    XanLogger.WriteLine("ALERT: A tile was null!", color: System.Drawing.Color.Red);
                    return;
                }
                if (tileCfg.getConfigManager() != null)
                {
                    originalImpl = tileCfg.getOriginal(tileCfg.getConfigManager());
                    break;
                }
                else
                {
                    if (tileCfg.implementation is TileConfig.Original original)
                    {
                        originalImpl = original;
                        break;
                    }
                    else if (tileCfg.implementation is TileConfig.Derived derived)
                    {
                        tileCfg = tileCfgs.GetEntryByName(derived.tile.getName());
                    }
                    else
                    {
                        originalImpl = null;
                        break;
                    }
                }
            } while (true);


            //tile.GetExportTransform(originalImpl, out Transform3D transform);
            // All transforms are relative to the center of the object. the origin of the actual models is in their lower-back-left bounds.
            // I need to add a flag to tell the exporter to move the geometry based on bounds center.
            Transform3D transform = new Transform3D();

            tile.getTransform(originalImpl, transform);
            //transform.getTranslation().addLocal(new Vector3f(0, tile.elevation / 2, 0));


            string relativeModelPath = originalImpl.model.getName();

            XanLogger.WriteLine("Grabbing tile [" + tile.tile.getName() + "] at " + relativeModelPath, XanLogger.DEBUG);
            ConfigReferenceUtil.HandleConfigReference(sourceFile, originalImpl.model, modelCollection, dataTreeParent, globalTransform.compose(transform));
            SKAnimatorToolsProxy.IncrementProgress();
        }