Skip to content

Commit

Permalink
fix: collidershape position should multiply scale (#98)
Browse files Browse the repository at this point in the history
fix: collidershape position should multiply scale (#98)
  • Loading branch information
yangfengzzz authored Oct 28, 2022
1 parent 36f1da4 commit 704417c
Showing 1 changed file with 18 additions and 8 deletions.
26 changes: 18 additions & 8 deletions packages/auxiliary-lines/src/WireframeManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,7 @@ export class WireframeManager extends Script {
const transform = shape.collider.entity.transform;
const worldScale = transform.lossyWorldScale;
const { position, rotation, size } = shape;
const { _tempVector: tempVector, _tempRotation: tempRotation } = WireframeManager;

const localPositions = this._localPositions;
const positionsOffset = localPositions.length;
Expand All @@ -334,9 +335,10 @@ export class WireframeManager extends Script {
indices,
this._indicesCount
);
Quaternion.rotationYawPitchRoll(rotation.x, rotation.y, rotation.z, WireframeManager._tempRotation);
this._localRotation(positionsOffset, WireframeManager._tempRotation);
this._localTranslate(positionsOffset, position);
Quaternion.rotationYawPitchRoll(rotation.x, rotation.y, rotation.z, tempRotation);
this._localRotation(positionsOffset, tempRotation);
Vector3.multiply(position, worldScale, tempVector);
this._localTranslate(positionsOffset, tempVector);

this._indicesCount += cuboidIndicesCount;
this._wireframeElements.push(new WireframeElement(transform, positionsOffset));
Expand All @@ -350,6 +352,7 @@ export class WireframeManager extends Script {
const transform = shape.collider.entity.transform;
const worldScale = transform.lossyWorldScale;
const { position, rotation, radius } = shape;
const { _tempVector: tempVector, _tempRotation: tempRotation } = WireframeManager;

const localPositions = this._localPositions;
const positionsOffset = localPositions.length;
Expand All @@ -364,9 +367,10 @@ export class WireframeManager extends Script {
indices,
this._indicesCount
);
Quaternion.rotationYawPitchRoll(rotation.x, rotation.y, rotation.z, WireframeManager._tempRotation);
this._localRotation(positionsOffset, WireframeManager._tempRotation);
this._localTranslate(positionsOffset, position);
Quaternion.rotationYawPitchRoll(rotation.x, rotation.y, rotation.z, tempRotation);
this._localRotation(positionsOffset, tempRotation);
Vector3.multiply(position, worldScale, tempVector);
this._localTranslate(positionsOffset, tempVector);

this._indicesCount += sphereIndicesCount;
this._wireframeElements.push(new WireframeElement(transform, positionsOffset));
Expand All @@ -381,7 +385,12 @@ export class WireframeManager extends Script {
const worldScale = transform.lossyWorldScale;
const maxScale = Math.max(worldScale.x, worldScale.y, worldScale.z);
const { radius, height, upAxis, position, rotation } = shape;
const { _tempRotation: tempRotation, _tempAxis: tempAxis, _halfSqrt: halfSqrt } = WireframeManager;
const {
_tempVector: tempVector,
_tempRotation: tempRotation,
_tempAxis: tempAxis,
_halfSqrt: halfSqrt
} = WireframeManager;

const localPositions = this._localPositions;
const positionsOffset = localPositions.length;
Expand Down Expand Up @@ -410,7 +419,8 @@ export class WireframeManager extends Script {
Quaternion.rotationYawPitchRoll(rotation.x, rotation.y, rotation.z, tempRotation);
Quaternion.multiply(tempRotation, tempAxis, tempRotation);
this._localRotation(positionsOffset, tempRotation);
this._localTranslate(positionsOffset, position);
Vector3.multiply(position, worldScale, tempVector);
this._localTranslate(positionsOffset, tempVector);

this._indicesCount += capsuleIndicesCount;
this._wireframeElements.push(new WireframeElement(transform, positionsOffset));
Expand Down

0 comments on commit 704417c

Please sign in to comment.