UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

333 lines (332 loc) 14.9 kB
"use strict"; import { setObjectVector3, getObjectVector3, setObjectNumber, getObjectNumber, setObjectBoolean, getObjectBoolean, getObjectString, setObjectString } from "../geometry/AttributeUtils"; import { coreObjectClassFactory } from "../geometry/CoreObjectFactory"; export var PhysicsIdAttribute = /* @__PURE__ */ ((PhysicsIdAttribute2) => { PhysicsIdAttribute2["WORLD"] = "PhysicsIdAttribute_worldId"; PhysicsIdAttribute2["RBD_HANDLE"] = "PhysicsIdAttribute_rbdHandle"; PhysicsIdAttribute2["DEBUG_WORLD"] = "PhysicsIdAttribute_debugWorldId"; return PhysicsIdAttribute2; })(PhysicsIdAttribute || {}); export var PhysicsRBDType = /* @__PURE__ */ ((PhysicsRBDType2) => { PhysicsRBDType2["FIXED"] = "fixed"; PhysicsRBDType2["DYNAMIC"] = "dynamic"; PhysicsRBDType2["KINEMATIC_VEL"] = "kinematicVelocityBased"; PhysicsRBDType2["KINEMATIC_POS"] = "kinematicPositionBased"; return PhysicsRBDType2; })(PhysicsRBDType || {}); export const PHYSICS_RBD_TYPES = [ "fixed" /* FIXED */, "dynamic" /* DYNAMIC */, "kinematicPositionBased" /* KINEMATIC_POS */, "kinematicVelocityBased" /* KINEMATIC_VEL */ ]; export const PHYSICS_RBD_TYPE_MENU_ENTRIES = PHYSICS_RBD_TYPES.map((name, value) => ({ name, value })); export var PhysicsRBDColliderType = /* @__PURE__ */ ((PhysicsRBDColliderType2) => { PhysicsRBDColliderType2["CAPSULE"] = "capsule"; PhysicsRBDColliderType2["CONE"] = "cone"; PhysicsRBDColliderType2["CONVEX_HULL"] = "convex hull"; PhysicsRBDColliderType2["CUBOID"] = "cuboid"; PhysicsRBDColliderType2["CYLINDER"] = "cylinder"; PhysicsRBDColliderType2["SPHERE"] = "sphere"; PhysicsRBDColliderType2["TRIMESH"] = "trimesh"; PhysicsRBDColliderType2["HEIGHT_FIELD"] = "heightField"; return PhysicsRBDColliderType2; })(PhysicsRBDColliderType || {}); export const PHYSICS_RBD_COLLIDER_TYPES = [ "cuboid" /* CUBOID */, "sphere" /* SPHERE */, "capsule" /* CAPSULE */, "cylinder" /* CYLINDER */, "cone" /* CONE */, "convex hull" /* CONVEX_HULL */, // PhysicsRBDColliderType.CONVEX_MESH, "trimesh" /* TRIMESH */, "heightField" /* HEIGHT_FIELD */ ]; const SORTED_ENTRIES = [ "capsule" /* CAPSULE */, "cone" /* CONE */, "convex hull" /* CONVEX_HULL */, // PhysicsRBDColliderType.CONVEX_MESH, "cuboid" /* CUBOID */, "cylinder" /* CYLINDER */, "sphere" /* SPHERE */, "trimesh" /* TRIMESH */, "heightField" /* HEIGHT_FIELD */ ]; export const PHYSICS_RBD_COLLIDER_TYPE_MENU_ENTRIES = SORTED_ENTRIES.map((entry) => { return { name: entry, value: PHYSICS_RBD_COLLIDER_TYPES.indexOf(entry) }; }); export var PhysicsRBDCuboidAttribute = /* @__PURE__ */ ((PhysicsRBDCuboidAttribute2) => { PhysicsRBDCuboidAttribute2["SIZES"] = "sizes"; PhysicsRBDCuboidAttribute2["SIZE"] = "size"; return PhysicsRBDCuboidAttribute2; })(PhysicsRBDCuboidAttribute || {}); export var PhysicsRBDRadiusAttribute = /* @__PURE__ */ ((PhysicsRBDRadiusAttribute2) => { PhysicsRBDRadiusAttribute2["RADIUS"] = "radius"; return PhysicsRBDRadiusAttribute2; })(PhysicsRBDRadiusAttribute || {}); export var PhysicsRBDHeightAttribute = /* @__PURE__ */ ((PhysicsRBDHeightAttribute2) => { PhysicsRBDHeightAttribute2["HEIGHT"] = "height"; return PhysicsRBDHeightAttribute2; })(PhysicsRBDHeightAttribute || {}); export var PhysicsRBDCylinderAttribute = /* @__PURE__ */ ((PhysicsRBDCylinderAttribute2) => { PhysicsRBDCylinderAttribute2["HEIGHT"] = "height"; return PhysicsRBDCylinderAttribute2; })(PhysicsRBDCylinderAttribute || {}); export var PhysicsRBDHeightFieldAttribute = /* @__PURE__ */ ((PhysicsRBDHeightFieldAttribute2) => { PhysicsRBDHeightFieldAttribute2["HEIGHT_FIELD_ROWS"] = "heightFieldRows"; PhysicsRBDHeightFieldAttribute2["HEIGHT_FIELD_COLS"] = "heightFieldCols"; return PhysicsRBDHeightFieldAttribute2; })(PhysicsRBDHeightFieldAttribute || {}); export var PhysicsCommonAttribute = /* @__PURE__ */ ((PhysicsCommonAttribute2) => { PhysicsCommonAttribute2["RBD_ID"] = "RBDId"; PhysicsCommonAttribute2["RBD_TYPE"] = "RBDType"; PhysicsCommonAttribute2["COLLIDER_TYPE"] = "RBDColliderType"; PhysicsCommonAttribute2["BORDER_RADIUS"] = "borderRadius"; PhysicsCommonAttribute2["CAN_SLEEP"] = "RBDCanSleep"; PhysicsCommonAttribute2["DENSITY"] = "density"; PhysicsCommonAttribute2["RESTITUTION"] = "restitution"; PhysicsCommonAttribute2["FRICTION"] = "friction"; PhysicsCommonAttribute2["LINEAR_DAMPING"] = "linearDamping"; PhysicsCommonAttribute2["ANGULAR_DAMPING"] = "angularDamping"; PhysicsCommonAttribute2["LINEAR_VELOCITY"] = "linearVelocity"; PhysicsCommonAttribute2["ANGULAR_VELOCITY"] = "angularVelocity"; PhysicsCommonAttribute2["GRAVITY_SCALE"] = "gravityScale"; PhysicsCommonAttribute2["CHARACTER_CONTROLLER_ID"] = "characterControllerId"; PhysicsCommonAttribute2["CHARACTER_CONTROLLER_OFFSET"] = "characterControllerOffset"; PhysicsCommonAttribute2["CHARACTER_CONTROLLER_APPLY_IMPULSES_TO_DYNAMIC"] = "characterControllerApplyImpulsesToDynamic"; PhysicsCommonAttribute2["CHARACTER_CONTROLLER_SNAP_TO_GROUND_DISTANCE"] = "characterControllerSnapToGroundDistance"; PhysicsCommonAttribute2["CHARACTER_CONTROLLER_AUTO_STEP_MAX_HEIGHT"] = "characterControllerAutoStepMaxHeight"; PhysicsCommonAttribute2["CHARACTER_CONTROLLER_AUTO_STEP_MIN_WIDTH"] = "characterControllerAutoStepMinWidth"; PhysicsCommonAttribute2["CHARACTER_CONTROLLER_AUTO_STEP_ON_DYNAMIC"] = "characterControllerAutoStepOnDynamic"; PhysicsCommonAttribute2["CHARACTER_CONTROLLER_MAX_SLOPE_CLIMB_ANGLE"] = "characterControllerMaxSlopeClimbAngle"; PhysicsCommonAttribute2["CHARACTER_CONTROLLER_MIN_SLOPE_CLIMB_ANGLE"] = "characterControllerMinSlopeSlideAngle"; PhysicsCommonAttribute2["CHARACTER_CONTROLLER_UP"] = "characterControllerUp"; PhysicsCommonAttribute2["CHARACTER_CONTROLLER_CAMERA_OBJECT_PATH"] = "characterControllerCameraObjectPath"; return PhysicsCommonAttribute2; })(PhysicsCommonAttribute || {}); export function physicsAttribNameLive(attribute) { return `${attribute}-live`; } export class CorePhysicsAttribute { static setRBDHandle(object, value) { setObjectNumber(object, "PhysicsIdAttribute_rbdHandle" /* RBD_HANDLE */, value); } static getRBDHandle(object) { return getObjectNumber(object, "PhysicsIdAttribute_rbdHandle" /* RBD_HANDLE */, -1); } static deleteRBDHandle(object) { coreObjectClassFactory(object).deleteAttribute(object, "PhysicsIdAttribute_rbdHandle" /* RBD_HANDLE */); } // common static setRBDId(object, value) { setObjectString(object, "RBDId" /* RBD_ID */, value); } static getRBDId(object) { return getObjectString(object, "RBDId" /* RBD_ID */); } static setRBDType(object, value) { setObjectString(object, "RBDType" /* RBD_TYPE */, value); } static getRBDType(object) { return getObjectString(object, "RBDType" /* RBD_TYPE */); } static setColliderType(object, value) { setObjectString(object, "RBDColliderType" /* COLLIDER_TYPE */, value); } static getColliderType(object) { return getObjectString(object, "RBDColliderType" /* COLLIDER_TYPE */); } static setCanSleep(object, value) { setObjectBoolean(object, "RBDCanSleep" /* CAN_SLEEP */, value); } static getCanSleep(object) { return getObjectBoolean(object, "RBDCanSleep" /* CAN_SLEEP */, true); } static setDensity(object, value) { setObjectNumber(object, "density" /* DENSITY */, value); } static getDensity(object) { return getObjectNumber(object, "density" /* DENSITY */, 1); } static setRestitution(object, value) { setObjectNumber(object, "restitution" /* RESTITUTION */, value); } static getRestitution(object) { return getObjectNumber(object, "restitution" /* RESTITUTION */, 0.5); } static setFriction(object, value) { setObjectNumber(object, "friction" /* FRICTION */, value); } static getFriction(object) { return getObjectNumber(object, "friction" /* FRICTION */, 0); } static setLinearDamping(object, value) { setObjectNumber(object, "linearDamping" /* LINEAR_DAMPING */, value); } static getLinearDamping(object) { return getObjectNumber(object, "linearDamping" /* LINEAR_DAMPING */, 0); } static setAngularDamping(object, value) { setObjectNumber(object, "angularDamping" /* ANGULAR_DAMPING */, value); } static getAngularDamping(object) { return getObjectNumber(object, "angularDamping" /* ANGULAR_DAMPING */, 0); } static setLinearVelocity(object, value) { setObjectVector3(object, "linearVelocity" /* LINEAR_VELOCITY */, value); } static getLinearVelocity(object, target) { return getObjectVector3(object, "linearVelocity" /* LINEAR_VELOCITY */, target); } static setAngularVelocity(object, value) { setObjectVector3(object, "angularVelocity" /* ANGULAR_VELOCITY */, value); } static getAngularVelocity(object, target) { return getObjectVector3(object, "angularVelocity" /* ANGULAR_VELOCITY */, target); } static setGravityScale(object, value) { setObjectNumber(object, "gravityScale" /* GRAVITY_SCALE */, value); } static getGravityScale(object) { return getObjectNumber(object, "gravityScale" /* GRAVITY_SCALE */, 0); } // shapes static setBorderRadius(object, value) { setObjectNumber(object, "borderRadius" /* BORDER_RADIUS */, value); } static getBorderRadius(object) { return getObjectNumber(object, "borderRadius" /* BORDER_RADIUS */, 0); } // cuboid static setCuboidSizes(object, value) { setObjectVector3(object, "sizes" /* SIZES */, value); } static getCuboidSizes(object, value) { getObjectVector3(object, "sizes" /* SIZES */, value); } static setCuboidSize(object, value) { setObjectNumber(object, "size" /* SIZE */, value); } static getCuboidSize(object) { return getObjectNumber(object, "size" /* SIZE */, 1); } // sphere + capsule + cylinder static setRadius(object, value) { setObjectNumber(object, "radius" /* RADIUS */, value); } static getRadius(object) { return getObjectNumber(object, "radius" /* RADIUS */, 1); } // capsule + cylinder static setHeight(object, value) { setObjectNumber(object, "height" /* HEIGHT */, value); } static getHeight(object) { return getObjectNumber(object, "height" /* HEIGHT */, 1); } // heightfield static setHeightFieldRows(object, value) { setObjectNumber(object, "heightFieldRows" /* HEIGHT_FIELD_ROWS */, value); } static getHeightFieldRows(object) { return getObjectNumber(object, "heightFieldRows" /* HEIGHT_FIELD_ROWS */, 2); } static setHeightFieldCols(object, value) { setObjectNumber(object, "heightFieldCols" /* HEIGHT_FIELD_COLS */, value); } static getHeightFieldCols(object) { return getObjectNumber(object, "heightFieldCols" /* HEIGHT_FIELD_COLS */, 2); } // character controller static setCharacterControllerId(object, value) { setObjectString(object, "characterControllerId" /* CHARACTER_CONTROLLER_ID */, value); } static getCharacterControllerId(object) { return getObjectString(object, "characterControllerId" /* CHARACTER_CONTROLLER_ID */); } static setCharacterControllerOffset(object, value) { setObjectNumber(object, "characterControllerOffset" /* CHARACTER_CONTROLLER_OFFSET */, value); } static getCharacterControllerOffset(object) { return getObjectNumber(object, "characterControllerOffset" /* CHARACTER_CONTROLLER_OFFSET */, 0.01); } static setCharacterControllerUp(object, value) { setObjectVector3(object, "characterControllerUp" /* CHARACTER_CONTROLLER_UP */, value); } static getCharacterControllerUp(object, target) { return getObjectVector3(object, "characterControllerUp" /* CHARACTER_CONTROLLER_UP */, target); } static setCharacterControllerMaxSlopeClimbAngle(object, value) { setObjectNumber(object, "characterControllerMaxSlopeClimbAngle" /* CHARACTER_CONTROLLER_MAX_SLOPE_CLIMB_ANGLE */, value); } static getCharacterControllerMaxSlopeClimbAngle(object) { return getObjectNumber(object, "characterControllerMaxSlopeClimbAngle" /* CHARACTER_CONTROLLER_MAX_SLOPE_CLIMB_ANGLE */, 0); } static setCharacterControllerMinSlopeSlideAngle(object, value) { setObjectNumber(object, "characterControllerMinSlopeSlideAngle" /* CHARACTER_CONTROLLER_MIN_SLOPE_CLIMB_ANGLE */, value); } static getCharacterControllerMinSlopeSlideAngle(object) { return getObjectNumber(object, "characterControllerMinSlopeSlideAngle" /* CHARACTER_CONTROLLER_MIN_SLOPE_CLIMB_ANGLE */, 0); } static setCharacterControllerApplyImpulsesToDynamic(object, value) { setObjectBoolean(object, "characterControllerApplyImpulsesToDynamic" /* CHARACTER_CONTROLLER_APPLY_IMPULSES_TO_DYNAMIC */, value); } static getCharacterControllerApplyImpulsesToDynamic(object) { return getObjectBoolean( object, "characterControllerApplyImpulsesToDynamic" /* CHARACTER_CONTROLLER_APPLY_IMPULSES_TO_DYNAMIC */, false ); } static setCharacterControllerSnapToGroundDistance(object, value) { setObjectNumber(object, "characterControllerSnapToGroundDistance" /* CHARACTER_CONTROLLER_SNAP_TO_GROUND_DISTANCE */, value); } static getCharacterControllerSnapToGroundDistance(object) { return getObjectNumber( object, "characterControllerSnapToGroundDistance" /* CHARACTER_CONTROLLER_SNAP_TO_GROUND_DISTANCE */, 0 ); } // auto step static setCharacterControllerAutoStepMaxHeight(object, value) { setObjectNumber(object, "characterControllerAutoStepMaxHeight" /* CHARACTER_CONTROLLER_AUTO_STEP_MAX_HEIGHT */, value); } static getCharacterControllerAutoStepMaxHeight(object) { return getObjectNumber(object, "characterControllerAutoStepMaxHeight" /* CHARACTER_CONTROLLER_AUTO_STEP_MAX_HEIGHT */, 0); } static setCharacterControllerAutoStepMinWidth(object, value) { setObjectNumber(object, "characterControllerAutoStepMinWidth" /* CHARACTER_CONTROLLER_AUTO_STEP_MIN_WIDTH */, value); } static getCharacterControllerAutoStepMinWidth(object) { return getObjectNumber(object, "characterControllerAutoStepMinWidth" /* CHARACTER_CONTROLLER_AUTO_STEP_MIN_WIDTH */, 0); } static setCharacterControllerAutoStepOnDynamic(object, value) { setObjectBoolean(object, "characterControllerAutoStepOnDynamic" /* CHARACTER_CONTROLLER_AUTO_STEP_ON_DYNAMIC */, value); } static getCharacterControllerAutoStepOnDynamic(object) { return getObjectBoolean( object, "characterControllerAutoStepOnDynamic" /* CHARACTER_CONTROLLER_AUTO_STEP_ON_DYNAMIC */, false ); } // camera static setCharacterControllerCameraPath(object, value) { setObjectString(object, "characterControllerCameraObjectPath" /* CHARACTER_CONTROLLER_CAMERA_OBJECT_PATH */, value); } static getCharacterControllerCameraPath(object) { return getObjectString(object, "characterControllerCameraObjectPath" /* CHARACTER_CONTROLLER_CAMERA_OBJECT_PATH */); } }