示例#1
0
        /// <summary>
        /// Generates a key (Key) to use for the algorithm.
        /// </summary>
        public void GenerateKey(UInt32 Seed)
        {
            if (BufKey != null)
            {
                Kernel.free(BufKey);
            }

            BufKey = (Byte *)Kernel.malloc(COFAC_KEY);

            MSRandom Rand = new MSRandom(Seed);

            for (Int32 i = 0; i < COFAC_KEY; i++)
            {
                BufKey[i] = (Byte)(Rand.Next() % 0x100);
            }
        }
示例#2
0
文件: COFAC.cs 项目: Pircs/Yi
        /// <summary>
        /// Generates a key (Key) to use for the algorithm.
        /// </summary>
        public void GenerateKey(uint seed)
        {
            if (_bufKey != null)
            {
                Kernel.free(_bufKey);
            }

            _bufKey = (byte *)Kernel.malloc(COFAC_KEY);

            var rand = new MSRandom(seed);

            for (var i = 0; i < COFAC_KEY; i++)
            {
                _bufKey[i] = (byte)(rand.Next() % 0x100);
            }
        }
示例#3
0
        public static IPAddress GenerateIPAddress(int seed)
        {
            byte[]   result = new byte[4];
            MSRandom rand   = new MSRandom(seed);

            bool      validAddressFound = false;
            IPAddress r = IPAddress.None;

            while (!validAddressFound)
            {
                rand.NextBytes(result);
                r = new IPAddress(result);

                validAddressFound = !IPRange.IsReservedIP(r);
            }

            return(r);
        }
示例#4
0
    public Vector3 getNextT()
    {
        Vector3 returnV;

        if (randomList.Count >= 1)
        {
            returnV = randomList[0];
            randomList.RemoveAt(0);
            // MSDebug.Log("returnV______________" + returnV.ToString());
            return(returnV);
        }

        ConfigData data;
        int        m = 0;

        do
        {
            data        = config[configIndex];
            data.angle += Random.Range(data.angle_Random_min, data.angle_Random_min + data.angle_Random_size + data.v_long_distance_sparse);
            m_transform.localPosition = data.radius + new Vector3(Random.Range(0, data.distance_excursion.x), Random.Range(0, data.distance_excursion.y), Random.Range(0, data.distance_excursion.z));
            m_transform.RotateAround(Vector3.zero, Vector3.up, data.angle);
            randomList.Add(m_transform.localPosition);
            if (m++ > 1000)
            {
                break;
            }
        } while (data.angle < 360);


        //切换下一圈
        data.radius_curve_value += data.radius_curve;
        float rx = data.radius_curve_value + data.radius_Random_min.x + Random.Range(0, data.radius_Random_size.x);
        float ry = data.radius_Random_min.y + Random.Range(0, data.radius_Random_size.y);

        data.radius = new Vector3(data.radius.x + rx, data.radius.y + ry, 0);
        data.v_long_distance_sparse += Random.Range(0, data.long_distance_sparse);
        data.angle -= 360;

        float size = 99999f;

        for (int i = 0; i < config.Length; i++)
        {
            ConfigData datat = config[i];
            if (datat.number <= 0)
            {
                continue;
            }
            float msize = Vector2.Distance(Vector2.zero, new Vector2(datat.radius.x, datat.radius.y));
            if (msize < size)
            {
                size        = msize;
                configIndex = i;
            }
        }
        data = config[configIndex];
        data.number--;

        //随机分布当前圈
        MSRandom.SetRandomList <Vector3>(randomList);

        //返回最后一圈内容
        returnV = randomList[0];
        randomList.RemoveAt(0);
        // MSDebug.Log("returnV______________" + returnV.ToString());
        //MSDebug.Log("+++++++++ box:" + gameObject.transform.parent.name);
        return(returnV);
    }