peony3000

Gadgeteer_LEDMatrix_01

Apr 10th, 2013
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 16.23 KB | None | 0 0
  1. using System;
  2.  
  3. using System.Collections;
  4. using System.Threading;
  5. using Microsoft.SPOT;
  6. using Microsoft.SPOT.Presentation;
  7. using Microsoft.SPOT.Presentation.Controls;
  8. using Microsoft.SPOT.Presentation.Media;
  9. using Microsoft.SPOT.Touch;
  10. using Microsoft.SPOT.Hardware;
  11.  
  12. using Gadgeteer.Networking;
  13. using GT = Gadgeteer;
  14. using GTM = Gadgeteer.Modules;
  15. using Gadgeteer.Modules.GHIElectronics;
  16.  
  17. namespace Gadgeteer_LEDMatrix_01
  18. {
  19.     public partial class Program
  20.     {
  21.         // create a timer object
  22.         GT.Timer timer = new GT.Timer(100);
  23.  
  24.         LEDMatrix[] displays = new LEDMatrix[4];
  25.  
  26.         // array to hold the character shapes
  27.         byte[] displayArray = new byte[] { };
  28.  
  29.         //object[] displays = new object[2];
  30.         Hashtable AsciiLookup = new Hashtable();
  31.  
  32.         //
  33.         int arrayOffset = 0;
  34.  
  35.         // This method is run when the mainboard is powered up or reset.  
  36.         void ProgramStarted()
  37.         {
  38.             /*******************************************************************************************
  39.             Modules added in the Program.gadgeteer designer view are used by typing
  40.             their name followed by a period, e.g.  button.  or  camera.
  41.            
  42.             Many modules generate useful events. Type +=<tab><tab> to add a handler to an event, e.g.:
  43.                 button.ButtonPressed +=<tab><tab>
  44.            
  45.             If you want to do something periodically, use a GT.Timer and handle its Tick event, e.g.:
  46.                 GT.Timer timer = new GT.Timer(1000); // every second (1000ms)
  47.                 timer.Tick +=<tab><tab>
  48.                 timer.Start();
  49.             *******************************************************************************************/
  50.  
  51.             //AsciiLookup.Add((int)'1', new byte[] { 0x02, 0xFE, 0x42 });
  52.             //AsciiLookup.Add((int)'2', new byte[] { 0xF2, 0x92, 0x9E });
  53.             //AsciiLookup.Add((int)'3', new byte[] { 0xFE, 0x92, 0x92 });
  54.             //AsciiLookup.Add((int)'4', new byte[] { 0xFE, 0x10, 0xF0 });
  55.             //AsciiLookup.Add((int)'5', new byte[] { 0x9E, 0x92, 0xF2 });
  56.             //AsciiLookup.Add((int)'6', new byte[] { 0x9E, 0x92, 0xFE });
  57.             //AsciiLookup.Add((int)'7', new byte[] { 0xFE, 0x80, 0x80 });
  58.             //AsciiLookup.Add((int)'8', new byte[] { 0xFE, 0x92, 0xFE });
  59.             //AsciiLookup.Add((int)'9', new byte[] { 0xFE, 0x90, 0xF0 });
  60.             //AsciiLookup.Add((int)'0', new byte[] { 0xFE, 0x82, 0xFE });
  61.             //AsciiLookup.Add((int)' ', new byte[] { 0x00 });
  62.             AsciiLookup.Add((int)':', new byte[] { 0x28 });
  63.             AsciiLookup.Add((int)'!', new byte[] { 0x20, 0x10, 0xD7, 0xF8, 0xD7, 0x10, 0x20 });
  64.             AsciiLookup.Add((int)'+', new byte[] { 0x06, 0x63, 0x63, 0x0B, 0x63, 0x63, 0x06 });
  65.  
  66.             AsciiLookup.Add((int)'0', new byte[] { 126, 66, 66, 66, 66, 66, 66, 126 });
  67.             AsciiLookup.Add((int)'1', new byte[] { 8, 24, 40, 8, 8, 8, 8, 8 });
  68.             AsciiLookup.Add((int)'2', new byte[] { 126, 2, 2, 126, 64, 64, 64, 126 });
  69.             AsciiLookup.Add((int)'3', new byte[] { 124, 2, 2, 126, 2, 2, 2, 124 });
  70.             AsciiLookup.Add((int)'4', new byte[] { 2, 4, 8, 16, 34, 66, 254, 2 });
  71.             AsciiLookup.Add((int)'5', new byte[] { 126, 64, 64, 124, 2, 2, 2, 124 });
  72.             AsciiLookup.Add((int)'6', new byte[] { 126, 64, 64, 126, 66, 66, 66, 126 });
  73.             AsciiLookup.Add((int)'7', new byte[] { 126, 2, 2, 4, 8, 16, 32, 64 });
  74.             AsciiLookup.Add((int)'8', new byte[] { 60, 66, 66, 60, 66, 66, 66, 60 });
  75.             AsciiLookup.Add((int)'9', new byte[] { 126, 66, 66, 126, 2, 2, 2, 124 });
  76.             AsciiLookup.Add((int)'A', new byte[] { 60, 66, 66, 66, 126, 66, 66, 66 });
  77.             AsciiLookup.Add((int)'B', new byte[] { 124, 66, 66, 126, 66, 66, 66, 124 });
  78.             AsciiLookup.Add((int)'C', new byte[] { 62, 64, 64, 64, 64, 64, 64, 62 });
  79.             AsciiLookup.Add((int)'D', new byte[] { 124, 66, 66, 66, 66, 66, 66, 60 });
  80.             AsciiLookup.Add((int)'E', new byte[] { 126, 64, 64, 126, 64, 64, 64, 126 });
  81.             AsciiLookup.Add((int)'F', new byte[] { 126, 64, 64, 126, 64, 64, 64, 64 });
  82.             AsciiLookup.Add((int)'G', new byte[] { 126, 64, 64, 94, 66, 66, 66, 126 });
  83.             AsciiLookup.Add((int)'H', new byte[] { 66, 66, 66, 126, 66, 66, 66, 66 });
  84.             AsciiLookup.Add((int)'I', new byte[] { 124, 16, 16, 16, 16, 16, 16, 124 });
  85.             AsciiLookup.Add((int)'J', new byte[] { 126, 8, 8, 8, 8, 40, 40, 16 });
  86.             AsciiLookup.Add((int)'K', new byte[] { 68, 72, 80, 96, 80, 72, 68, 66 });
  87.             AsciiLookup.Add((int)'L', new byte[] { 64, 64, 64, 64, 64, 64, 64, 126 });
  88.             AsciiLookup.Add((int)'M', new byte[] { 66, 102, 90, 90, 66, 66, 66, 66 });
  89.             AsciiLookup.Add((int)'N', new byte[] { 66, 98, 82, 74, 70, 66, 66, 66 });
  90.             AsciiLookup.Add((int)'O', new byte[] { 60, 66, 66, 66, 66, 66, 66, 60 });
  91.             AsciiLookup.Add((int)'P', new byte[] { 60, 66, 66, 66, 124, 64, 64, 64 });
  92.             AsciiLookup.Add((int)'Q', new byte[] { 60, 66, 66, 66, 66, 74, 70, 127 });
  93.             AsciiLookup.Add((int)'R', new byte[] { 124, 66, 66, 66, 124, 72, 68, 66 });
  94.             AsciiLookup.Add((int)'S', new byte[] { 126, 64, 64, 126, 2, 2, 2, 126 });
  95.             AsciiLookup.Add((int)'T', new byte[] { 124, 16, 16, 16, 16, 16, 16, 16 });
  96.             AsciiLookup.Add((int)'U', new byte[] { 66, 66, 66, 66, 66, 66, 66, 60 });
  97.             AsciiLookup.Add((int)'V', new byte[] { 130, 130, 130, 130, 130, 68, 40, 16 });
  98.             AsciiLookup.Add((int)'W', new byte[] { 130, 130, 130, 130, 146, 170, 198, 130 });
  99.             AsciiLookup.Add((int)'X', new byte[] { 130, 130, 68, 40, 16, 40, 68, 130 });
  100.             AsciiLookup.Add((int)'Y', new byte[] { 66, 66, 66, 126, 2, 2, 2, 126 });
  101.             AsciiLookup.Add((int)'Z', new byte[] { 255, 2, 4, 8, 16, 32, 64, 255 });
  102.             AsciiLookup.Add((int)'*', new byte[] { 255, 255, 255, 255, 255, 255, 255, 255 });
  103.             AsciiLookup.Add((int)' ', new byte[] { 0, 0, 0, 0, 0, 0, 0, 0 });
  104.  
  105. /*
  106. Hex values for lcd fonts
  107.  
  108. AsciiLookup.Add((int)’A‘, new byte[] {0x7F, 0x88, 0x88, 0x88, 0x7F, 0x00, 0x00, 0x00});
  109. AsciiLookup.Add((int)’B‘, new byte[] { 0xFF, 0x91, 0x91, 0x91, 0x6E, 0x00, 0x00, 0x00});
  110. AsciiLookup.Add((int)’C‘, new byte[] { 0x7E, 0x81, 0x81, 0x81, 0x42, 0x00, 0x00, 0x00});
  111. AsciiLookup.Add((int)’D‘, new byte[] { 0xFF, 0x81, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00});
  112. AsciiLookup.Add((int)’E‘, new byte[] { 0xFF, 0x91, 0x91, 0x91, 0x81, 0x00, 0x00, 0x00});
  113. AsciiLookup.Add((int)’F‘, new byte[] { 0xFF, 0x90, 0x90, 0x90, 0x80, 0x00, 0x00, 0x00});
  114. AsciiLookup.Add((int)’G‘, new byte[] { 0x7E, 0x81, 0x89, 0x89, 0x4E, 0x00, 0x00, 0x00});
  115. AsciiLookup.Add((int)’H‘, new byte[] { 0xFF, 0x10, 0x10, 0x10, 0xFF, 0x00, 0x00, 0x00});
  116. AsciiLookup.Add((int)’I‘, new byte[] { 0x81, 0x81, 0xFF, 0x81, 0x81, 0x00, 0x00, 0x00});
  117. AsciiLookup.Add((int)’J‘, new byte[] { 0x06, 0x01, 0x01, 0x01, 0xFE, 0x00, 0x00, 0x00});
  118. AsciiLookup.Add((int)’K‘, new byte[] { 0xFF, 0x18, 0x24, 0x42, 0x81, 0x00, 0x00, 0x00});
  119. AsciiLookup.Add((int)’L‘, new byte[] { 0xFF, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00});
  120. AsciiLookup.Add((int)’M‘, new byte[] { 0xFF, 0x40, 0x30, 0x40, 0xFF, 0x00, 0x00, 0x00});
  121. AsciiLookup.Add((int)’N‘, new byte[] { 0xFF, 0x40, 0x30, 0x08, 0xFF, 0x00, 0x00, 0x00});
  122. AsciiLookup.Add((int)’O‘, new byte[] { 0x7E, 0x81, 0x81, 0x81, 0x7E, 0x00, 0x00, 0x00});
  123. AsciiLookup.Add((int)’P‘, new byte[] { 0xFF, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00, 0x00});
  124. AsciiLookup.Add((int)’Q‘, new byte[] { 0x7E, 0x81, 0x85, 0x82, 0x7D, 0x00, 0x00, 0x00});
  125. AsciiLookup.Add((int)’R‘, new byte[] { 0xFF, 0x88, 0x8C, 0x8A, 0x71, 0x00, 0x00, 0x00});
  126. AsciiLookup.Add((int)’S‘, new byte[] { 0x61, 0x91, 0x91, 0x91, 0x8E, 0x00, 0x00, 0x00});
  127. AsciiLookup.Add((int)’T‘, new byte[] { 0x80, 0x80, 0xFF, 0x80, 0x80, 0x00, 0x00, 0x00});
  128. AsciiLookup.Add((int)’U‘, new byte[] { 0xFE, 0x01, 0x01, 0x01, 0xFE, 0x00, 0x00, 0x00});
  129. AsciiLookup.Add((int)’V‘, new byte[] { 0xF0, 0x0C, 0x03, 0x0C, 0xF0, 0x00, 0x00, 0x00});
  130. AsciiLookup.Add((int)’W‘, new byte[] { 0xFF, 0x02, 0x0C, 0x02, 0xFF, 0x00, 0x00, 0x00});
  131. AsciiLookup.Add((int)’X‘, new byte[] { 0xC3, 0x24, 0x18, 0x24, 0xC3, 0x00, 0x00, 0x00});
  132. AsciiLookup.Add((int)’Y‘, new byte[] { 0xE0, 0x10, 0x0F, 0x10, 0xE0, 0x00, 0x00, 0x00});
  133. AsciiLookup.Add((int)’Z‘, new byte[] { 0x83, 0x85, 0x99, 0xA1, 0xC1, 0x00, 0x00, 0x00});
  134. AsciiLookup.Add((int)’a‘, new byte[] { 0x06, 0x29, 0x29, 0x29, 0x1F, 0x00, 0x00, 0x00});
  135. AsciiLookup.Add((int)’b‘, new byte[] { 0xFF, 0x09, 0x11, 0x11, 0x0E, 0x00, 0x00, 0x00});
  136. AsciiLookup.Add((int)’c‘, new byte[] { 0x1E, 0x21, 0x21, 0x21, 0x12, 0x00, 0x00, 0x00});
  137. AsciiLookup.Add((int)’d‘, new byte[] { 0x0E, 0x11, 0x11, 0x09, 0xFF, 0x00, 0x00, 0x00});
  138. AsciiLookup.Add((int)’e‘, new byte[] { 0x0E, 0x15, 0x15, 0x15, 0x0C, 0x00, 0x00, 0x00});
  139. AsciiLookup.Add((int)’f‘, new byte[] { 0x08, 0x7F, 0x88, 0x80, 0x40, 0x00, 0x00, 0x00});
  140. AsciiLookup.Add((int)’g‘, new byte[] { 0x30, 0x49, 0x49, 0x49, 0x7E, 0x00, 0x00, 0x00});
  141. AsciiLookup.Add((int)’h‘, new byte[] { 0xFF, 0x08, 0x10, 0x10, 0x0F, 0x00, 0x00, 0x00});
  142. AsciiLookup.Add((int)’i‘, new byte[] { 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00});
  143. AsciiLookup.Add((int)’j‘, new byte[] { 0x02, 0x01, 0x21, 0xBE, 0x00, 0x00, 0x00, 0x00});
  144. AsciiLookup.Add((int)’k‘, new byte[] { 0xFF, 0x04, 0x0A, 0x11, 0x00, 0x00, 0x00, 0x00});
  145. AsciiLookup.Add((int)’l‘, new byte[] { 0x00, 0x81, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00});
  146. AsciiLookup.Add((int)’m‘, new byte[] { 0x3F, 0x20, 0x18, 0x20, 0x1F, 0x00, 0x00, 0x00});
  147. AsciiLookup.Add((int)’n‘, new byte[] { 0x3F, 0x10, 0x20, 0x20, 0x1F, 0x00, 0x00, 0x00});
  148. AsciiLookup.Add((int)’o‘, new byte[] { 0x0E, 0x11, 0x11, 0x11, 0x0E, 0x00, 0x00, 0x00});
  149. AsciiLookup.Add((int)’p‘, new byte[] { 0x3F, 0x24, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00});
  150. AsciiLookup.Add((int)’q‘, new byte[] { 0x10, 0x28, 0x28, 0x18, 0x3F, 0x00, 0x00, 0x00});
  151. AsciiLookup.Add((int)’r‘, new byte[] { 0x1F, 0x08, 0x10, 0x10, 0x08, 0x00, 0x00, 0x00});
  152. AsciiLookup.Add((int)’s‘, new byte[] { 0x09, 0x15, 0x15, 0x15, 0x02, 0x00, 0x00, 0x00});
  153. AsciiLookup.Add((int)’t‘, new byte[] { 0x20, 0xFE, 0x21, 0x01, 0x02, 0x00, 0x00, 0x00});
  154. AsciiLookup.Add((int)’u‘, new byte[] { 0x1E, 0x01, 0x01, 0x02, 0x1F, 0x00, 0x00, 0x00});
  155. AsciiLookup.Add((int)’v‘, new byte[] { 0x1C, 0x02, 0x01, 0x02, 0x1C, 0x00, 0x00, 0x00});
  156. AsciiLookup.Add((int)’w‘, new byte[] { 0x1E, 0x01, 0x0E, 0x01, 0x1E, 0x00, 0x00, 0x00});
  157. AsciiLookup.Add((int)’x‘, new byte[] { 0x11, 0x0A, 0x04, 0x0A, 0x11, 0x00, 0x00, 0x00});
  158. AsciiLookup.Add((int)’y‘, new byte[] { 0x00, 0x39, 0x05, 0x05, 0x3E, 0x00, 0x00, 0x00});
  159. AsciiLookup.Add((int)’z‘, new byte[] { 0x11, 0x13, 0x15, 0x19, 0x11, 0x00, 0x00, 0x00});
  160. AsciiLookup.Add((int)’1‘, new byte[] { 0x00, 0x41, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00});
  161. AsciiLookup.Add((int)’2‘, new byte[] { 0x43, 0x85, 0x89, 0x91, 0x61, 0x00, 0x00, 0x00});
  162. AsciiLookup.Add((int)’3‘, new byte[] { 0x42, 0x81, 0x91, 0x91, 0x6E, 0x00, 0x00, 0x00});
  163. AsciiLookup.Add((int)’4‘, new byte[] { 0x18, 0x28, 0x48, 0xFF, 0x08, 0x00, 0x00, 0x00});
  164. AsciiLookup.Add((int)’5‘, new byte[] { 0xF2, 0x91, 0x91, 0x91, 0x8E, 0x00, 0x00, 0x00});
  165. AsciiLookup.Add((int)’6‘, new byte[] { 0x1E, 0x29, 0x49, 0x89, 0x86, 0x00, 0x00, 0x00});
  166. AsciiLookup.Add((int)’7‘, new byte[] { 0x80, 0x8F, 0x90, 0xA0, 0xC0, 0x00, 0x00, 0x00});
  167. AsciiLookup.Add((int)’8‘, new byte[] { 0x6E, 0x91, 0x91, 0x91, 0x6E, 0x00, 0x00, 0x00});
  168. AsciiLookup.Add((int)’9‘, new byte[] { 0x70, 0x89, 0x89, 0x8A, 0x7C, 0x00, 0x00, 0x00});
  169. AsciiLookup.Add((int)’?‘, new byte[] { 0x60, 0x80, 0x8D, 0x90, 0x60, 0x00, 0x00, 0x00});
  170. AsciiLookup.Add((int)’!‘, new byte[] { 0x00, 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00});
  171. AsciiLookup.Add((int)’0‘, new byte[] { 0x7E, 0x89, 0x91, 0xA1, 0x7E, 0x00, 0x00, 0x00});
  172. AsciiLookup.Add((int)’@‘, new byte[] { 0x66, 0x89, 0x8F, 0x81, 0x7E, 0x00, 0x00, 0x00});
  173. AsciiLookup.Add((int)’#‘, new byte[] { 0x24, 0xFF, 0x24, 0xFF, 0x24, 0x00, 0x00, 0x00});
  174. AsciiLookup.Add((int)’&‘, new byte[] { 0x76, 0x89, 0x95, 0x62, 0x05, 0x00, 0x00, 0x00});
  175. AsciiLookup.Add((int)’(‘, new byte[] { 0x00, 0x3C, 0x42, 0x81, 0x00, 0x00, 0x00, 0x00});
  176. AsciiLookup.Add((int)’)‘, new byte[] { 0x00, 0x81, 0x42, 0x3C, 0x00, 0x00, 0x00, 0x00});
  177. AsciiLookup.Add((int)’+‘, new byte[] { 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x00, 0x00});
  178. AsciiLookup.Add((int)’-‘, new byte[] { 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00});
  179. AsciiLookup.Add((int)’=‘, new byte[] { 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00, 0x00});
  180. AsciiLookup.Add((int)’>‘, new byte[] { 0x10, 0x10, 0x54, 0x38, 0x10, 0x00, 0x00, 0x00});
  181. AsciiLookup.Add((int)’<‘, new byte[] { 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, 0x00, 0x00});
  182. AsciiLookup.Add((int)’$‘, new byte[] { 0x12, 0x2A, 0x7F, 0x2A, 0x24, 0x00, 0x00, 0x00});
  183. AsciiLookup.Add((int)’*‘, new byte[] { 0x44, 0x02, 0x12, 0x02, 0x44, 0x00, 0x00, 0x00});
  184. AsciiLookup.Add((int)’%‘, new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00});
  185.  
  186.  
  187. */
  188.  
  189.             displays[0] = ledMatrix3;
  190.             displays[1] = ledMatrix2;
  191.             displays[2] = ledMatrix1;
  192.             displays[3] = ledMatrix;
  193.  
  194.             // ceate a timer ticking event
  195.             timer.Tick += new GT.Timer.TickEventHandler(timer_Tick);
  196.             timer.Start();
  197.  
  198.             arrayOffset = 1;
  199.             //drawString("tina xu is the best ");
  200.             drawString("+ + + + + + ");
  201.             // Use Debug.Print to show messages in Visual Studio's "Output" window during debugging.
  202.             Debug.Print("Program Started");
  203.         }
  204.  
  205.         void timer_Tick(GT.Timer timer)
  206.         {
  207.             Debug.Print("tick");
  208.  
  209.             // draw the array to the ledmatrix
  210.             drawArray();
  211.  
  212.         }
  213.  
  214.         void drawString(string str)
  215.         {
  216.             Debug.Print("draw string");
  217.             char[] characterArray = str.ToUpper().ToCharArray();
  218.             foreach (char c in characterArray)
  219.             {
  220.                 addCharacter((byte[])this.AsciiLookup[(int)c]);
  221.             }
  222.             drawArray();
  223.  
  224.         }
  225.  
  226.         void addCharacter(byte[] characterBytes)
  227.         {
  228.             //Debug.Print("add charactar");
  229.             displayArray = Utility.CombineArrays(characterBytes, displayArray);
  230.  
  231.         }
  232.  
  233.         void drawArray()
  234.         {
  235.             Debug.Print("draw");
  236.  
  237.            
  238.             //pad array to display size - minimum
  239.             if (displayArray.Length < displays.Length * 8)
  240.             {
  241.                 Debug.Print("padded the array");
  242.                 displayArray = Utility.CombineArrays(displayArray, new byte[(displays.Length * 8) - displayArray.Length]);
  243.  
  244.             }
  245.  
  246.             //For each matrix.
  247.             for (int ctr = 0; ctr < displays.Length; ctr++)
  248.             {
  249.                 byte[] currentDisplayData = new byte[] { };
  250.                 // if the currentDisplayData is in the middle of the string
  251.                 //
  252.                 if ((displayArray.Length >= (ctr + 1) * 8))
  253.                 {
  254.                     currentDisplayData = Utility.ExtractRangeFromArray(displayArray, ctr * 8, 8);
  255.                 }
  256.                 else
  257.                 // take from the start and end of the array
  258.                 {
  259.                     currentDisplayData = Utility.ExtractRangeFromArray(displayArray, ctr * 8, displayArray.Length - (ctr * 8));
  260.                     currentDisplayData = Utility.CombineArrays(currentDisplayData, new byte[8 - currentDisplayData.Length]);
  261.                 }
  262.  
  263.                 //ledMatrix.DrawBitmap(currentDisplayData);
  264.                 //ledMatrix1.DrawBitmap(currentDisplayData);
  265.                 displays[ctr].DrawBitmap(currentDisplayData);
  266.             }
  267.  
  268.             // shift the array to an offset
  269.             //displayArray = Utility.CombineArrays(displayArray, displayArray.Length - arrayOffset, arrayOffset, displayArray, 0, displayArray.Length - arrayOffset);
  270.             displayArray = Utility.CombineArrays(displayArray, displayArray.Length - arrayOffset, arrayOffset, displayArray, 0, displayArray.Length - arrayOffset);
  271.  
  272.  
  273.         }
  274.     }
  275. }
Advertisement
Add Comment
Please, Sign In to add comment