/// <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); }
/// <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); }
// 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); } }