public static TERotationFloat ( byte bytes, int pos ) : float | ||
bytes | byte | |
pos | int | |
return | float |
private void FromBytes(byte[] data, int pos, int length) { if (length <= 0) { // No TextureEntry to process DefaultTexture = null; return; } else { DefaultTexture = new TextureEntryFace(null); } uint bitfieldSize = 0; uint faceBits = 0; int i = pos; #region Texture DefaultTexture.TextureID = new UUID(data, i); i += 16; while (ReadFaceBitfield(data, ref i, ref faceBits, ref bitfieldSize)) { UUID tmpUUID = new UUID(data, i); i += 16; for (uint face = 0, bit = 1; face < bitfieldSize; face++, bit <<= 1) { if ((faceBits & bit) != 0) { CreateFace(face).TextureID = tmpUUID; } } } #endregion Texture #region Color DefaultTexture.RGBA = new Color4(data, i, true); i += 4; while (ReadFaceBitfield(data, ref i, ref faceBits, ref bitfieldSize)) { Color4 tmpColor = new Color4(data, i, true); i += 4; for (uint face = 0, bit = 1; face < bitfieldSize; face++, bit <<= 1) { if ((faceBits & bit) != 0) { CreateFace(face).RGBA = tmpColor; } } } #endregion Color #region RepeatU DefaultTexture.RepeatU = Utils.BytesToFloat(data, i); i += 4; while (ReadFaceBitfield(data, ref i, ref faceBits, ref bitfieldSize)) { float tmpFloat = Utils.BytesToFloat(data, i); i += 4; for (uint face = 0, bit = 1; face < bitfieldSize; face++, bit <<= 1) { if ((faceBits & bit) != 0) { CreateFace(face).RepeatU = tmpFloat; } } } #endregion RepeatU #region RepeatV DefaultTexture.RepeatV = Utils.BytesToFloat(data, i); i += 4; while (ReadFaceBitfield(data, ref i, ref faceBits, ref bitfieldSize)) { float tmpFloat = Utils.BytesToFloat(data, i); i += 4; for (uint face = 0, bit = 1; face < bitfieldSize; face++, bit <<= 1) { if ((faceBits & bit) != 0) { CreateFace(face).RepeatV = tmpFloat; } } } #endregion RepeatV #region OffsetU DefaultTexture.OffsetU = Helpers.TEOffsetFloat(data, i); i += 2; while (ReadFaceBitfield(data, ref i, ref faceBits, ref bitfieldSize)) { float tmpFloat = Helpers.TEOffsetFloat(data, i); i += 2; for (uint face = 0, bit = 1; face < bitfieldSize; face++, bit <<= 1) { if ((faceBits & bit) != 0) { CreateFace(face).OffsetU = tmpFloat; } } } #endregion OffsetU #region OffsetV DefaultTexture.OffsetV = Helpers.TEOffsetFloat(data, i); i += 2; while (ReadFaceBitfield(data, ref i, ref faceBits, ref bitfieldSize)) { float tmpFloat = Helpers.TEOffsetFloat(data, i); i += 2; for (uint face = 0, bit = 1; face < bitfieldSize; face++, bit <<= 1) { if ((faceBits & bit) != 0) { CreateFace(face).OffsetV = tmpFloat; } } } #endregion OffsetV #region Rotation DefaultTexture.Rotation = Helpers.TERotationFloat(data, i); i += 2; while (ReadFaceBitfield(data, ref i, ref faceBits, ref bitfieldSize)) { float tmpFloat = Helpers.TERotationFloat(data, i); i += 2; for (uint face = 0, bit = 1; face < bitfieldSize; face++, bit <<= 1) { if ((faceBits & bit) != 0) { CreateFace(face).Rotation = tmpFloat; } } } #endregion Rotation #region Material DefaultTexture.material = data[i]; i++; while (ReadFaceBitfield(data, ref i, ref faceBits, ref bitfieldSize)) { byte tmpByte = data[i]; i++; for (uint face = 0, bit = 1; face < bitfieldSize; face++, bit <<= 1) { if ((faceBits & bit) != 0) { CreateFace(face).material = tmpByte; } } } #endregion Material #region Media DefaultTexture.media = data[i]; i++; while (i - pos < length && ReadFaceBitfield(data, ref i, ref faceBits, ref bitfieldSize)) { byte tmpByte = data[i]; i++; for (uint face = 0, bit = 1; face < bitfieldSize; face++, bit <<= 1) { if ((faceBits & bit) != 0) { CreateFace(face).media = tmpByte; } } } #endregion Media #region Glow DefaultTexture.Glow = Helpers.TEGlowFloat(data, i); i++; while (ReadFaceBitfield(data, ref i, ref faceBits, ref bitfieldSize)) { float tmpFloat = Helpers.TEGlowFloat(data, i); i++; for (uint face = 0, bit = 1; face < bitfieldSize; face++, bit <<= 1) { if ((faceBits & bit) != 0) { CreateFace(face).Glow = tmpFloat; } } } #endregion Glow }