@Override void updateFromNative() { super.updateFromNative(); // we will pack mType; mKind; mNormalized; mVectorSize; NumSubElements int[] dataBuffer = new int[5]; mRS.nElementGetNativeData(getID(mRS), dataBuffer); mNormalized = dataBuffer[2] == 1 ? true : false; mVectorSize = dataBuffer[3]; mSize = 0; for (DataType dt : DataType.values()) { if (dt.mID == dataBuffer[0]) { mType = dt; mSize = mType.mSize * mVectorSize; } } for (DataKind dk : DataKind.values()) { if (dk.mID == dataBuffer[1]) { mKind = dk; } } int numSubElements = dataBuffer[4]; if (numSubElements > 0) { mElements = new Element[numSubElements]; mElementNames = new String[numSubElements]; mArraySizes = new int[numSubElements]; mOffsetInBytes = new int[numSubElements]; long[] subElementIds = new long[numSubElements]; mRS.nElementGetSubElements(getID(mRS), subElementIds, mElementNames, mArraySizes); for (int i = 0; i < numSubElements; i++) { mElements[i] = new Element(subElementIds[i], mRS); mElements[i].updateFromNative(); mOffsetInBytes[i] = mSize; mSize += mElements[i].mSize * mArraySizes[i]; } } updateVisibleSubElements(); }