public final Matrix44D getMatrix() { if (_modelview != null) { for (int i = 0; i < _matricesSize; i++) { final Matrix44D m = _providers[i].getMatrix(); if (m == null) { ILogger.instance().logError("Modelview multiplication failure"); } if (_matrices[i] != m) { // If one matrix differs we have to raplace all matrixes on Holders and recalculate // modelview _modelview._release(); // NEW MODELVIEW NEEDED _modelview = null; pullMatrixes(); break; } } } if (_modelview == null) { _modelview = new Matrix44D(_matrices[0]); for (int i = 1; i < _matricesSize; i++) { final Matrix44D m2 = _matrices[i]; Matrix44D m3 = _modelview.createMultiplication(m2); _modelview._release(); _modelview = m3; } } return _modelview; }