public static TextureEntry FromOSD(OSD osd) { OSDArray array = (OSDArray)osd; OSDMap faceSD; if (array.Count > 0) { int faceNumber; faceSD = (OSDMap)array[0]; TextureEntryFace defaultFace = TextureEntryFace.FromOSD(faceSD, null, out faceNumber); TextureEntry te = new TextureEntry(defaultFace); for (int i = 1; i < array.Count; i++) { TextureEntryFace tex = TextureEntryFace.FromOSD(array[i], defaultFace, out faceNumber); if (faceNumber >= 0 && faceNumber < te.FaceTextures.Length) { te.FaceTextures[faceNumber] = tex; } } return(te); } else { throw new ArgumentException("SD contains no elements"); } }