Ejemplo n.º 1
0
        public void Invoke()
        {
            var iterationSet = m_sourceConfig.GetSet(m_iterateOnTileConfig);

            var filters = new TilesSetFilter[m_filter.Length];

            for (var i = 0; i < m_filter.Length; i++)
            {
                var filterSet = m_sourceConfig.GetSet(m_filter[i].Config.Result);
                filters[i] = new TilesSetFilter()
                {
                    Data = filterSet, FilterIdx = m_filter[i].TileIdx
                };
            }

            var startNode = 0;

            ushort[] texTypesDone    = { ushort.MaxValue, ushort.MaxValue, ushort.MaxValue };
            var      texTypesDoneIdx = 0;

            ushort next;

            while ((next = NextType(iterationSet, filters, ref startNode,
                                    ref texTypesDone, ref texTypesDoneIdx)) != ushort.MaxValue)
            {
                m_tilesSetFilter.SetValue(new TilesSetFilter()
                {
                    Data = iterationSet, FilterIdx = next
                });
                m_continueAction.Invoke();
            }
        }
        public PickMeshForConfigurationAction(TilesSetFilter primaryFilter,
                                              TilesSetFilterReference tilesSetFilter,
                                              GridReference grid,
                                              Vector3Reference pos,
                                              MeshSetReference meshSet,
                                              bool invertConfiguration,
                                              ObjectReference meshConfig)
        {
            m_primaryFilter       = primaryFilter;
            m_tilesSetFilter      = tilesSetFilter;
            m_grid                = grid;
            m_pos                 = pos;
            m_meshSet             = meshSet;
            m_invertConfiguration = invertConfiguration;

            m_meshConfig = meshConfig;
        }
        bool GetFilter(out TilesSetFilter primaryFilter)
        {
            primaryFilter = default;
            var primaryFilterSetData = m_primaryFilterSetListConfig.GetSet(m_primaryFilterIdentifier.Config.Result);

            if (primaryFilterSetData.TileConfig == null)
            {
                Debug.LogError(
                    $"{nameof(ITileConfig)} {m_primaryFilterIdentifier.Config} not found in given {nameof(TilesSetListConfig)}");
                return(false);
            }

            primaryFilter = new TilesSetFilter()
            {
                Data = primaryFilterSetData, FilterIdx = m_primaryFilterIdentifier.TileIdx
            };
            return(true);
        }
Ejemplo n.º 4
0
        public TileTypeCheckAction(TilesSetListConfig sourceConfig,
                                   TileTypeIdentifier identifier,
                                   GridReference grid,
                                   Vector3Reference currentPos,
                                   IDefaultAction trueAction,
                                   IDefaultAction falseAction)
        {
            var iterationSet = sourceConfig.GetSet(identifier.Config.Result);

            m_filter = new TilesSetFilter()
            {
                Data = iterationSet, FilterIdx = identifier.TileIdx
            };

            m_grid       = grid;
            m_currentPos = currentPos;

            m_trueAction  = trueAction;
            m_falseAction = falseAction;
        }