示例#1
0
        /// <summary>
        /// Creates image buffers to send to artscii.dll.
        /// </summary>
        /// <param name="p">Source image</param>
        /// <returns>Array of CImageInfo buffers</returns>
        public static unsafe CImageInfo[] MakeImageBuffers(PixelSet p)
        {
            byte[] img = p.Serialize();
            int    numBufs = (img.Length / maxImageBufSize) + 1, ix = 0;

            CImageInfo[] buffers = new CImageInfo[numBufs];
            for (int i = 0; i < numBufs; i++)
            {
                buffers[i].width  = p.Width;
                buffers[i].height = p.Height;
                if (i == (numBufs - 1) && (img.Length % maxImageBufSize) > 0)
                {
                    buffers[i].bufSize = (uint)(img.Length % maxImageBufSize);
                }
                else
                {
                    buffers[i].bufSize = maxImageBufSize;
                }
                for (int j = 0; j < buffers[i].bufSize; j++, ix++)
                {
                    buffers[i].buffer[j] = img[ix];
                }
                buffers[i].final = ix == img.Length;
            }
            return(buffers);
        }
示例#2
0
        /// <summary>
        /// Creates image buffers to send to artscii.dll.
        /// </summary>
        /// <param name="p">List of source images</param>
        /// <returns>Array of CImageInfo buffers</returns>
        public static unsafe CImageInfo[] MakeMultiImageBuffers(PixelSet[] p)
        {
            int maxBufs = (int)(((p[0].Width * p[0].Height * 3) /
                                 (float)maxImageBufSize) + 0.9999f) * p.Length;

            CImageInfo[] buffers = new CImageInfo[maxBufs];
            int          i       = 0;

            for (int ps = 0; ps < p.Length; ps++)
            {
                byte[] img = p[ps].Serialize();
                int    numBufs = (img.Length / maxImageBufSize) + 1, ix = 0;
                numBufs += numBufs * ps;
                for (; i < numBufs; i++)
                {
                    buffers[i].width  = p[ps].Width;
                    buffers[i].height = p[ps].Height;
                    if (i == (numBufs - 1) && (img.Length % maxImageBufSize) > 0)
                    {
                        buffers[i].bufSize = (uint)(img.Length % maxImageBufSize);
                    }
                    else
                    {
                        buffers[i].bufSize = maxImageBufSize;
                    }
                    for (int j = 0; j < buffers[i].bufSize; j++, ix++)
                    {
                        buffers[i].buffer[j] = img[ix];
                    }
                    buffers[i].final = ix == img.Length;
                }
            }
            return(buffers);
        }
示例#3
0
    // Use this for initialization
    void Start()
    {
        m_fDist = Vector3.Distance(m_vEndPos, m_vStartPos);
        Vector3 vCreateStartPos = m_vStartPos;

        m_tmBackImage.Clear();
        for(int i=0; i<g_goBackImage.Length; ++i)
        {
            CImageInfo kImageInfo = new CImageInfo();
            kImageInfo.fStartTime = Time.fixedTime;
            kImageInfo.vStartPos = vCreateStartPos;
            kImageInfo.fContinueTime = m_fTime * Vector3.Distance(m_vEndPos, kImageInfo.vStartPos) / m_fDist;
            kImageInfo.goBackImage = GameObject.Instantiate(g_goBackImage[Random.Range(0, g_goBackImage.Length)]);
            vCreateStartPos.x += (m_vStartPos.x - m_vEndPos.x);

            m_tmBackImage.Add(i, kImageInfo);
        }
    }