@onerjs/core 8.44.4 → 8.44.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/Meshes/mesh.js CHANGED
@@ -1743,10 +1743,12 @@ export class Mesh extends AbstractMesh {
1743
1743
  }
1744
1744
  }
1745
1745
  world.copyToArray(instanceStorage.instancesData, offset);
1746
- // Apply floatingOriginOffset to underlying data sent to buffer
1747
- instanceStorage.instancesData[offset + 12] -= floatingOriginOffset.x;
1748
- instanceStorage.instancesData[offset + 13] -= floatingOriginOffset.y;
1749
- instanceStorage.instancesData[offset + 14] -= floatingOriginOffset.z;
1746
+ // Apply floatingOriginOffset to underlying data sent to buffer.
1747
+ // Subtract from Float64 source to preserve precision at large coordinates.
1748
+ const worldM = world.asArray();
1749
+ instanceStorage.instancesData[offset + 12] = worldM[12] - floatingOriginOffset.x;
1750
+ instanceStorage.instancesData[offset + 13] = worldM[13] - floatingOriginOffset.y;
1751
+ instanceStorage.instancesData[offset + 14] = worldM[14] - floatingOriginOffset.z;
1750
1752
  offset += 16;
1751
1753
  instancesCount++;
1752
1754
  }
@@ -1775,10 +1777,12 @@ export class Mesh extends AbstractMesh {
1775
1777
  instance._previousWorldMatrix.copyFrom(matrix);
1776
1778
  }
1777
1779
  }
1778
- // Apply floatingOriginOffset to underlying data sent to buffer
1779
- instanceStorage.instancesData[offset + 12] -= floatingOriginOffset.x;
1780
- instanceStorage.instancesData[offset + 13] -= floatingOriginOffset.y;
1781
- instanceStorage.instancesData[offset + 14] -= floatingOriginOffset.z;
1780
+ // Apply floatingOriginOffset to underlying data sent to buffer.
1781
+ // Subtract from Float64 source to preserve precision at large coordinates.
1782
+ const matrixM = matrix.asArray();
1783
+ instanceStorage.instancesData[offset + 12] = matrixM[12] - floatingOriginOffset.x;
1784
+ instanceStorage.instancesData[offset + 13] = matrixM[13] - floatingOriginOffset.y;
1785
+ instanceStorage.instancesData[offset + 14] = matrixM[14] - floatingOriginOffset.z;
1782
1786
  offset += 16;
1783
1787
  instancesCount++;
1784
1788
  }