public override void DoWiredAction(RoomUnitUser user, HashSet <uint> used)
        {
            foreach (RoomItem item_ in this.SelectedItems)
            {
                MatchFurniData data = this.MatchFurniData[item_.ID];

                if (!item_.WiredIgnoreExtraData())
                {
                    if (this.FurniState)
                    {
                        item_.ExtraData = data.ExtraData;
                        item_.UpdateState(true, true);

                        if (!this.Direction && !this.Position)
                        {
                            this.Room.RoomGamemapManager.GetTile(item_.X, item_.Y).UpdateTile();

                            foreach (AffectedTile tile in item_.AffectedTiles)
                            {
                                this.Room.RoomGamemapManager.GetTile(tile.X, tile.Y).UpdateTile();
                            }
                        }
                    }
                }

                if (this.Direction || this.Position)
                {
                    int    oldRot = item_.Rot;
                    int    oldX   = item_.X;
                    int    oldY   = item_.Y;
                    double oldZ   = item_.Z;

                    if (this.Room.RoomItemManager.MoveFloorItemOnRoom(null, item_, this.Position ? data.X : item_.X, this.Position ? data.Y : item_.Y, this.Direction ? data.Rot : item_.Rot, this.Position ? data.Z : -1.0, false))
                    {
                        this.Room.RoomItemManager.MoveAnimation[item_.ID] = new RoomItemRollerMovement(item_.ID, item_.X, item_.Y, item_.Z, 0, oldX, oldY, oldZ);
                    }
                }
            }
        }
        public override bool IsBlocking(RoomUnitUser triggerer)
        {
            foreach (RoomItem item_ in this.SelectedItems)
            {
                MatchFurniData data = this.MatchFurniData[item_.ID];
                if (this.FurniState && !item_.WiredIgnoreExtraData() && item_.ExtraData == data.ExtraData)
                {
                    return(true);
                }

                if (this.Direction && item_.Rot == data.Rot)
                {
                    return(true);
                }

                if (this.Position && item_.X == data.X && item_.Y == data.Y)
                {
                    return(true);
                }
            }

            return(false);
        }