123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import RAPIER from '@dimforge/rapier3d-compat';
- import * as RE from 'rogue-engine';
- import * as THREE from 'three';
- import RogueRapier from '../../Lib/RogueRapier';
- import RapierCollider from './RapierCollider';
- export default class RapierCuboid extends RapierCollider {
- private _sizeOffsetX = 1;
- private _sizeOffsetY = 1;
- private _sizeOffsetZ = 1;
- @RE.props.num()
- get sizeOffsetX() {
- return this._sizeOffsetX;
- }
- set sizeOffsetX(value: number) {
- const oldValue = this._sizeOffsetX;
- this._sizeOffsetX = value;
- if (oldValue !== value && this.collider && RogueRapier.world) {
- RogueRapier.world.removeCollider(this.collider, false);
- this.init();
- }
- }
- @RE.props.num()
- get sizeOffsetY() {
- return this._sizeOffsetY;
- }
- set sizeOffsetY(value: number) {
- const oldValue = this._sizeOffsetY;
- this._sizeOffsetY = value;
- if (oldValue !== value && this.collider && RogueRapier.world) {
- RogueRapier.world.removeCollider(this.collider, false);
- this.init();
- }
- }
- @RE.props.num()
- get sizeOffsetZ() {
- return this._sizeOffsetZ;
- }
- set sizeOffsetZ(value: number) {
- const oldValue = this._sizeOffsetZ;
- this._sizeOffsetZ = value;
- if (oldValue !== value && this.collider && RogueRapier.world) {
- RogueRapier.world.removeCollider(this.collider, false);
- this.init();
- }
- }
- worldScale = new THREE.Vector3();
- protected createShape(): void {
- this.object3d.getWorldScale(this.worldScale);
- let colliderDesc = RAPIER.ColliderDesc.cuboid(
- this._sizeOffsetX * (this.worldScale.x/2),
- this._sizeOffsetY * (this.worldScale.y/2),
- this._sizeOffsetZ * (this.worldScale.z/2)
- );
- this.collider = RogueRapier.world.createCollider(colliderDesc, this.body);
- }
- }
- RE.registerComponent(RapierCuboid);
|