Files
Alien_Sniper/temp/programming/packer-driver/targets/preview/chunks/b8/b84580597e9cababc38b7a3ce49a27f22d6f0abe.js
T
2026-07-14 11:44:07 +08:00

298 lines
12 KiB
JavaScript

System.register(["__unresolved_0", "cc", "__unresolved_1", "__unresolved_2", "__unresolved_3", "__unresolved_4", "__unresolved_5"], function (_export, _context) {
"use strict";
var _reporterNs, _cclegacy, __checkObsolete__, __checkObsoleteInNamespace__, _decorator, Collider, Component, Material, Node, PhysicsSystem, RigidBody, SkinnedMeshRenderer, SphereCollider, RagdollBone, RagdollConstraint, GameController, AudioMgr, AssetController, _dec, _dec2, _dec3, _dec4, _dec5, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _crd, ccclass, property, Ragdoll;
function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'transform-class-properties is enabled and runs after the decorators transform.'); }
function _reportPossibleCrUseOfRagdollBone(extras) {
_reporterNs.report("RagdollBone", "./RagdollBone", _context.meta, extras);
}
function _reportPossibleCrUseOfRagdollConstraint(extras) {
_reporterNs.report("RagdollConstraint", "./RagdollConstraint", _context.meta, extras);
}
function _reportPossibleCrUseOfGameController(extras) {
_reporterNs.report("GameController", "../scripts/GameController", _context.meta, extras);
}
function _reportPossibleCrUseOfAudioMgr(extras) {
_reporterNs.report("AudioMgr", "../scripts/framework/audio/AudioMgr", _context.meta, extras);
}
function _reportPossibleCrUseOfAssetController(extras) {
_reporterNs.report("AssetController", "../scripts/AssetController", _context.meta, extras);
}
return {
setters: [function (_unresolved_) {
_reporterNs = _unresolved_;
}, function (_cc) {
_cclegacy = _cc.cclegacy;
__checkObsolete__ = _cc.__checkObsolete__;
__checkObsoleteInNamespace__ = _cc.__checkObsoleteInNamespace__;
_decorator = _cc._decorator;
Collider = _cc.Collider;
Component = _cc.Component;
Material = _cc.Material;
Node = _cc.Node;
PhysicsSystem = _cc.PhysicsSystem;
RigidBody = _cc.RigidBody;
SkinnedMeshRenderer = _cc.SkinnedMeshRenderer;
SphereCollider = _cc.SphereCollider;
}, function (_unresolved_2) {
RagdollBone = _unresolved_2.RagdollBone;
}, function (_unresolved_3) {
RagdollConstraint = _unresolved_3.RagdollConstraint;
}, function (_unresolved_4) {
GameController = _unresolved_4.GameController;
}, function (_unresolved_5) {
AudioMgr = _unresolved_5.AudioMgr;
}, function (_unresolved_6) {
AssetController = _unresolved_6.AssetController;
}],
execute: function () {
_crd = true;
_cclegacy._RF.push({}, "fc0eb4iDgpE04mibrjf0fSC", "Ragdoll", undefined);
__checkObsolete__(['_decorator', 'Collider', 'Component', 'Material', 'Node', 'PhysicsGroup', 'PhysicsSystem', 'RigidBody', 'SkinnedMeshRenderer', 'SphereCollider']);
({
ccclass,
property
} = _decorator);
_export("Ragdoll", Ragdoll = (_dec = ccclass('Ragdoll'), _dec2 = property(Node), _dec3 = property(Node), _dec4 = property(SkinnedMeshRenderer), _dec5 = property(Material), _dec(_class = (_class2 = class Ragdoll extends Component {
constructor() {
super(...arguments);
_initializerDefineProperty(this, "rootNode", _descriptor, this);
_initializerDefineProperty(this, "centerNode", _descriptor2, this);
_initializerDefineProperty(this, "renderer", _descriptor3, this);
_initializerDefineProperty(this, "siwang", _descriptor4, this);
// 新的材质
this.realBones = [];
this.simuBones = [];
this.simuBoneJointArr = [];
this.world = void 0;
this.isEnabled = false;
this.isDie = false;
}
start() {
this.world = PhysicsSystem.instance.physicsWorld.impl;
this.initRagdoll();
}
initRagdoll() {
// 压入真实骨骼
this.getAllRealBones(this.rootNode); // 创建模拟骨骼
this.createSimuBones(); // 创建模拟骨骼的关节
this.createSimuBoneJoints();
}
createSimuBones() {
for (var boneNode of this.realBones) {
var node = new Node();
node.addComponent(SphereCollider).radius = 0.2 * node.worldScale.x;
node.addComponent(RigidBody);
this.node.addChild(node);
this.simuBones.push(node);
this.syncPositionAndRotation(node, boneNode); // 同步之后将位置赋给初始位置
var ragdollBone = boneNode.getComponent(_crd && RagdollBone === void 0 ? (_reportPossibleCrUseOfRagdollBone({
error: Error()
}), RagdollBone) : RagdollBone);
ragdollBone.simuNode = node;
ragdollBone.initPos = boneNode.getPosition();
ragdollBone.initRot = boneNode.getRotation();
}
this.scheduleOnce(() => {
for (var bone of this.simuBones) {
var body = bone.getComponent(RigidBody);
body.sleep();
}
}, 0);
}
createSimuBoneJoints() {
for (var boneNode of this.realBones) {
var joint = boneNode.getComponent(_crd && RagdollConstraint === void 0 ? (_reportPossibleCrUseOfRagdollConstraint({
error: Error()
}), RagdollConstraint) : RagdollConstraint);
if (joint) {
var simuNodeA = boneNode.getComponent(_crd && RagdollBone === void 0 ? (_reportPossibleCrUseOfRagdollBone({
error: Error()
}), RagdollBone) : RagdollBone).simuNode;
var simuNodeB = joint.connectedBone.getComponent(_crd && RagdollBone === void 0 ? (_reportPossibleCrUseOfRagdollBone({
error: Error()
}), RagdollBone) : RagdollBone).simuNode;
var bodyA = simuNodeA.getComponent(RigidBody).body.impl;
var bodyB = simuNodeB.getComponent(RigidBody).body.impl;
var spineJoint = new CANNON.ConeTwistConstraint(bodyA, bodyB, {
pivotA: new CANNON.Vec3(joint.pivotA.x, joint.pivotA.y, joint.pivotA.z),
pivotB: new CANNON.Vec3(joint.pivotB.x, joint.pivotB.y, joint.pivotB.z),
axisA: new CANNON.Vec3(joint.axisA.x, joint.axisA.y, joint.axisA.z),
axisB: new CANNON.Vec3(joint.axisB.x, joint.axisB.y, joint.axisB.z),
angle: joint.angle,
twistAngle: joint.twistAngle
});
this.world.addConstraint(spineJoint);
this.simuBoneJointArr.push(spineJoint);
}
}
}
getAllRealBones(node) {
var bones = node.children;
for (var boneNode of bones) {
var bone = boneNode.getComponent(_crd && RagdollBone === void 0 ? (_reportPossibleCrUseOfRagdollBone({
error: Error()
}), RagdollBone) : RagdollBone);
if (bone) {
this.realBones.push(boneNode);
bone.ragdoll = this;
}
this.getAllRealBones(boneNode);
}
}
lateUpdate(deltaTime) {
if (this.isEnabled) {
this.updateBones();
}
}
syncPositionAndRotation(nodeA, nodeB) {
nodeA.setWorldPosition(nodeB.worldPosition);
nodeA.setWorldRotation(nodeB.worldRotation);
} // 将模拟骨骼的位置和转角同步到真实骨骼
updateBones() {
for (var i = 0; i < this.realBones.length; i++) {
this.syncPositionAndRotation(this.realBones[i], this.simuBones[i]);
}
}
getEnabled() {
return this.isEnabled;
}
setEnabled(isEnabled) {
if (isEnabled && this.isDie) return;
isEnabled ? this.enableRagdoll() : this.disableRagdoll();
(_crd && AudioMgr === void 0 ? (_reportPossibleCrUseOfAudioMgr({
error: Error()
}), AudioMgr) : AudioMgr).inst.playOneShot((_crd && AssetController === void 0 ? (_reportPossibleCrUseOfAssetController({
error: Error()
}), AssetController) : AssetController).instance.die);
}
enableRagdoll() {
this.isDie = true;
(_crd && GameController === void 0 ? (_reportPossibleCrUseOfGameController({
error: Error()
}), GameController) : GameController).getInstance().curLevel.onEnemyDie(this); // this.renderer.setMaterialInstance(this.siwang, 0)
this.renderer.material = this.siwang; // 将模拟骨骼的位置和真实骨骼同步
for (var bone of this.realBones) {
var ragdollBone = bone.getComponent(_crd && RagdollBone === void 0 ? (_reportPossibleCrUseOfRagdollBone({
error: Error()
}), RagdollBone) : RagdollBone);
this.syncPositionAndRotation(ragdollBone.simuNode, bone);
var collider = ragdollBone.getComponent(Collider);
if (collider) collider.enabled = false;
}
for (var _bone of this.simuBones) {
var body = _bone.getComponent(RigidBody);
body.wakeUp();
} // 将关节添加至物理世界
for (var joint of this.simuBoneJointArr) {
this.world.addConstraint(joint);
}
this.isEnabled = true;
}
disableRagdoll() {
// 将真实骨骼移动至初始位置
for (var bone of this.realBones) {
var ragdollBone = bone.getComponent(_crd && RagdollBone === void 0 ? (_reportPossibleCrUseOfRagdollBone({
error: Error()
}), RagdollBone) : RagdollBone);
bone.setPosition(ragdollBone.initPos);
bone.setRotation(ragdollBone.initRot);
}
for (var _bone2 of this.simuBones) {
var body = _bone2.getComponent(RigidBody);
body.sleep();
} // 从物理世界中移除关节
for (var joint of this.simuBoneJointArr) {
this.world.removeConstraint(joint);
}
this.isEnabled = false;
}
}, (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "rootNode", [_dec2], {
configurable: true,
enumerable: true,
writable: true,
initializer: function initializer() {
return null;
}
}), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "centerNode", [_dec3], {
configurable: true,
enumerable: true,
writable: true,
initializer: function initializer() {
return null;
}
}), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "renderer", [_dec4], {
configurable: true,
enumerable: true,
writable: true,
initializer: function initializer() {
return null;
}
}), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "siwang", [_dec5], {
configurable: true,
enumerable: true,
writable: true,
initializer: null
})), _class2)) || _class));
_cclegacy._RF.pop();
_crd = false;
}
};
});
//# sourceMappingURL=b84580597e9cababc38b7a3ce49a27f22d6f0abe.js.map