public override UnitPosition Select(IEventArgs args)
        {
            UnitPosition up = new UnitPosition();

            up.SetX(FreeUtil.ReplaceFloat(x, args));
            up.SetY(FreeUtil.ReplaceFloat(y, args));
            up.SetZ(FreeUtil.ReplaceFloat(z, args));
            up.SetYaw(FreeUtil.ReplaceFloat(yaw, args));
            up.SetPitch(FreeUtil.ReplaceFloat(pitch, args));
            up.SetInvalid(FreeUtil.ReplaceBool(invalid, args));
            up.SetRandomindex(FreeUtil.ReplaceInt(randomindex, args));
            return(up);
        }
        public override UnitPosition Select(IEventArgs args)
        {
            if (tempPosition == null)
            {
                tempPosition = new UnitPosition();
            }

            if (MapConfigPoints.current != null)
            {
                int realType = FreeUtil.ReplaceInt(type, args);
                int mapId    = args.GameContext.session.commonSession.RoomInfo.MapId;
                var poss     = args.FreeContext.Poss;
                foreach (MapConfigPoints.ID_Point p in FreeMapPosition.GetPositions(mapId).IDPints)
                {
                    if (p.ID == realType)
                    {
                        RandomBit randomBit = poss.AddRandomBit(p.ID, p.points.Count);
                        Vector3   v         = Vector3.zero;
                        int       index     = -1;
                        bool      invalid   = false;
                        if (randomBit.index >= 0)
                        {
                            index = poss.GetRandomBit(p.ID, p.points.Count);
                            v     = p.points[index].pos;
                        }
                        else
                        {
                            invalid = true;
                        }
                        tempPosition.SetInvalid(invalid);
                        tempPosition.SetX(v.x);
                        tempPosition.SetY(v.y);
                        tempPosition.SetZ(v.z);
                        tempPosition.SetRandomindex(index);
                        return(tempPosition);
                    }
                }
            }
            return(tempPosition);
        }