@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
333 lines (332 loc) • 14.9 kB
JavaScript
;
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 */);
}
}