diff --git a/modules/core/src/animation/animation.cpp b/modules/core/src/animation/animation.cpp index 0fbff1e7..e05ae7b3 100644 --- a/modules/core/src/animation/animation.cpp +++ b/modules/core/src/animation/animation.cpp @@ -14,6 +14,8 @@ #include "rendering/debug_visualization.h" +#include "px/features/px_ragdoll.h" + #include namespace era_engine::animation @@ -700,14 +702,14 @@ namespace era_engine::animation } } - void animation_component::update(const ref& mesh, eallocator& arena, float dt, trs* transform) + void animation_component::update(const ref& mesh, eallocator& arena, float dt, trs* transform, physics::px_ragdoll_component* ragdoll) { const dx_mesh& dxMesh = mesh->mesh; animation_skeleton& skeleton = mesh->skeleton; currentGlobalTransforms = 0; - if (animation && animation->valid()) + if ((!ragdoll || !ragdoll->simulated) && animation && animation->valid()) { auto [vb, skinningMatrices] = skinObject(dxMesh.vertexBuffer, dxMesh.vertexBuffer.positions->elementCount, (uint32)skeleton.joints.size()); @@ -733,6 +735,22 @@ namespace era_engine::animation if (animation->finished) controller->stateMachine.update(); } + else if (ragdoll && ragdoll->ragdoll && ragdoll->simulated) + { + auto [vb, skinningMatrices] = skinObject(dxMesh.vertexBuffer, dxMesh.vertexBuffer.positions->elementCount, (uint32)skeleton.joints.size()); + + prevFrameVertexBuffer = currentVertexBuffer; + currentVertexBuffer = vb; + + static std::vector transforms = ragdoll->apply(); + + for (int i = 0; i < skeleton.joints.size(); ++i) + { + skinningMatrices[i] = trsToMat4(transforms[i]) * skeleton.joints[i].invBindTransform; + } + + currentGlobalTransforms = &transforms[0]; + } else { currentVertexBuffer = dxMesh.vertexBuffer; @@ -830,7 +848,7 @@ namespace era_engine::animation *vertices++ = { vrt1, limbTypeColors[parentJoint.limbType] }; *vertices++ = { vrt2, limbTypeColors[parentJoint.limbType] }; #else - * vertices++ = { skeleton.joints[joint.parentID].bindTransform.col3.xyz, limbTypeColors[parentJoint.limbType] }; + *vertices++ = { skeleton.joints[joint.parentID].bindTransform.col3.xyz, limbTypeColors[parentJoint.limbType] }; *vertices++ = { joint.bindTransform.col3.xyz, limbTypeColors[parentJoint.limbType] }; #endif } @@ -847,27 +865,6 @@ namespace era_engine::animation renderDebug(trsToMat4(transform), vb, ib, vec4(1.f, 1.f, 1.f, 1.f), renderPass, true); #else -#if 0 - - auto [vb, vertexPtr] = dxContext.createDynamicVertexBuffer(sizeof(position_color), limb_type_count * 2); - auto [ib, indexPtr] = dxContext.createDynamicIndexBuffer(sizeof(uint16), limb_type_count * 2); - - position_color* vertices = (position_color*)vertexPtr; - indexed_line16* lines = (indexed_line16*)indexPtr; - - for (uint32 i = 0; i < limb_type_count; ++i) - { - const auto& limb = skeleton.limbs[i]; - *vertices++ = { limb.mean - limb.principalAxis / transform.scale * 0.2f, limbTypeColors[i] }; - *vertices++ = { limb.mean + limb.principalAxis / transform.scale * 0.2f, limbTypeColors[i] }; - - *lines++ = { (uint16)(2 * i), (uint16)(2 * i + 1) }; - } - - renderDebug(trsToMat4(transform), vb, ib, vec4(1.f, 1.f, 1.f, 1.f), renderPass, true); - -#else - for (uint32 i = 0; i < limb_type_count; ++i) { const auto& limb = skeleton.limbs[i]; @@ -885,8 +882,6 @@ namespace era_engine::animation renderWireCapsule(a, b, limb.dimensions.radius * transform.scale.x, vec4(limbTypeColors[i], 1.f), renderPass, true); } } -#endif - #endif } diff --git a/modules/core/src/animation/animation.h b/modules/core/src/animation/animation.h index a6c522f9..180f64db 100644 --- a/modules/core/src/animation/animation.h +++ b/modules/core/src/animation/animation.h @@ -15,6 +15,11 @@ namespace era_engine { struct multi_mesh; struct ldr_render_pass; + + namespace physics + { + struct px_ragdoll_component; + } } namespace era_engine::animation @@ -249,7 +254,7 @@ namespace era_engine::animation struct animation_component { void initialize(std::vector& clips, size_t startIndex = 0); - void update(const ref& mesh, eallocator& arena, float dt, trs* transform = 0); + void update(const ref& mesh, eallocator& arena, float dt, trs* transform = 0, physics::px_ragdoll_component* ragdoll = nullptr); void drawCurrentSkeleton(const ref& mesh, const trs& transform, ldr_render_pass* renderPass) const; ref animation = nullptr; diff --git a/modules/core/src/application.cpp b/modules/core/src/application.cpp index a815f32a..b10586d0 100644 --- a/modules/core/src/application.cpp +++ b/modules/core/src/application.cpp @@ -331,7 +331,7 @@ namespace era_engine if (auto mesh = loadAnimatedMeshFromFileAsync(getAssetPath("/resources/assets/resident-evil-tyrant/source/UmodelExport.fbx"))) { - auto& en = scene.createEntity("Tiran") + auto& en = scene.createEntity("Ragdoll") .addComponent(vec3(0.0f), quat::identity, vec3(0.1f)) .addComponent() .addComponent() @@ -807,7 +807,7 @@ namespace era_engine //if (renderer->mode != renderer_mode_pathtraced) { - for (auto [entityHandle, anim, mesh, transform] : scene.group(component_group).each()) + for (auto [entityHandle, anim, mesh, transform] : scene.group(component_group, component_group).each()) { anim.update(mesh.mesh, stackArena, dt, &transform); @@ -815,6 +815,14 @@ namespace era_engine anim.drawCurrentSkeleton(mesh.mesh, transform, &ldrRenderPass); } + for (auto [entityHandle, anim, mesh, transform, ragdoll] : scene.group(component_group).each()) + { + anim.update(mesh.mesh, stackArena, dt, &transform, &ragdoll); + + if (anim.drawSceleton) + anim.drawCurrentSkeleton(mesh.mesh, transform, &ldrRenderPass); + } + scene_lighting lighting; lighting.spotLightBuffer = spotLightBuffer[dxContext.bufferedFrameID]; lighting.pointLightBuffer = pointLightBuffer[dxContext.bufferedFrameID]; diff --git a/modules/core/src/px/features/px_ragdoll.cpp b/modules/core/src/px/features/px_ragdoll.cpp index 91e4df58..48bd11fb 100644 --- a/modules/core/src/px/features/px_ragdoll.cpp +++ b/modules/core/src/px/features/px_ragdoll.cpp @@ -28,9 +28,9 @@ namespace era_engine::physics joint->setTwistLimit(PxJointAngularLimitPair(twistLo, twistHi)); } - static vec3 bindPosWs(mat4& inverseBindPose, mat4& model) + static vec3 bindPosWs(mat4& bindPose, mat4& model) { - mat4 m = model * invert(inverseBindPose); + mat4 m = model * bindPose; return vec3(m.m03, m.m13, m.m23); } @@ -51,16 +51,18 @@ namespace era_engine::physics auto& joints = skeleton->joints; - vec3 parentPos = bindPosWs(joints[parentIdx].invBindTransform, model) * modelWithScale.m00; - vec3 childPos = bindPosWs(joints[childIdx].invBindTransform, model) * modelWithScale.m00; + vec3 parentPos = bindPosWs(joints[parentIdx].bindTransform, model); + vec3 childPos = bindPosWs(joints[childIdx].bindTransform, model); float len = length(parentPos - childPos); // shorten by 0.1 times to prevent overlap len -= len * 0.1f; - float lenMinus2r = len - 2.0f * r; - float halfHeight = lenMinus2r / 2.0f; + if(len - 2.0f * r > 0) + len = len - 2.0f * r; + + float halfHeight = len / 2.0f; vec3 bodyPos = (parentPos + childPos) / 2.0f; @@ -75,7 +77,7 @@ namespace era_engine::physics shape->setFlag(PxShapeFlag::eSCENE_QUERY_SHAPE, true); mat4 invBindPose = joints[parentIdx].invBindTransform; - mat4 bindPose = invert(invBindPose); + mat4 bindPose = joints[parentIdx].bindTransform; mat4 bindPoseWs = modelWithoutScale * bindPose; PxTransform px_transform(createPxVec3(bodyPos), createPxQuat(mat4ToTRS(bindPoseWs).rotation)); @@ -111,7 +113,7 @@ namespace era_engine::physics auto& joints = skeleton->joints; - vec3 parentPos = (bindPosWs(joints[parentIdx].invBindTransform, model) + offset) * modelWithScale.m00; + vec3 parentPos = (bindPosWs(joints[parentIdx].bindTransform, model) + offset); PxShape* shape = physics->getPhysics()->createShape(PxCapsuleGeometry(r, l / 2.0f), *material); @@ -123,7 +125,7 @@ namespace era_engine::physics shape->setSimulationFilterData(PxFilterData(-1, -1, 0, 0)); shape->setQueryFilterData(PxFilterData(-1, -1, 0, 0)); mat4 invBindPose = joints[parentIdx].invBindTransform; - mat4 bindPose = invert(invBindPose); + mat4 bindPose = joints[parentIdx].bindTransform; mat4 bindPoseWs = modelWithoutScale * bindPose; PxTransform px_transform(createPxVec3(parentPos), createPxQuat(mat4ToTRS(bindPoseWs).rotation)); @@ -145,14 +147,13 @@ namespace era_engine::physics float r, ref skeleton, mat4 model = mat4::identity, - float mass = 1.0f, - float scale = 0.1f) + float mass = 1.0f) { const auto& physics = physics_holder::physicsRef; auto& joints = skeleton->joints; - vec3 parentPos = bindPosWs(joints[parentIdx].invBindTransform, model) * scale; + vec3 parentPos = bindPosWs(joints[parentIdx].bindTransform, model); PxShape* shape = physics->getPhysics()->createShape(PxSphereGeometry(r), *material); shape->setFlag(PxShapeFlag::eVISUALIZATION, true); @@ -175,14 +176,13 @@ namespace era_engine::physics PxRigidDynamic* child, ref skeleton, uint32_t jointPos, - mat4 model = mat4::identity, - float scale = 0.1f) + mat4 model = mat4::identity) { const auto& physics = physics_holder::physicsRef; auto& joints = skeleton->joints; - vec3 p = bindPosWs(joints[jointPos].invBindTransform, model) * scale; - quat q = mat4ToTRS(invert(joints[jointPos].invBindTransform)).rotation; + vec3 p = bindPosWs(joints[jointPos].bindTransform, model); + quat q = mat4ToTRS(joints[jointPos].bindTransform).rotation; PxD6Joint* joint = PxD6JointCreate(*physics->getPhysics(), parent, @@ -201,13 +201,12 @@ namespace era_engine::physics ref skeleton, uint32_t jointPos, mat4 rotation = mat4::identity, - mat4 model = mat4::identity, - float scale = 0.1f) + mat4 model = mat4::identity) { const auto& physics = physics_holder::physicsRef; auto& joints = skeleton->joints; - vec3 p = bindPosWs(joints[jointPos].invBindTransform, model) * scale; + vec3 p = bindPosWs(joints[jointPos].bindTransform, model); mat4 parentPoseInv = invert(createMat44(parent->getGlobalPose())); mat4 childPoseInv = invert(createMat44(child->getGlobalPose())); @@ -276,13 +275,15 @@ namespace era_engine::physics uint32_t j_hand_r_idx = skeleton->nameToJointID["hand_r"]; uint32_t j_middle_01_r_idx = skeleton->nameToJointID["middle_01_r"]; - ragdoll->rigidBodies.resize(100); - ragdoll->relativeJointPoses.resize(100); - ragdoll->originalBodyRotations.resize(100); - ragdoll->bodyPosRelativeToJoint.resize(100); - ragdoll->originalJointRotations.resize(100); + transforms.resize(joints.size()); + + ragdoll->rigidBodies.resize(joints.size()); + ragdoll->relativeJointPoses.resize(joints.size()); + ragdoll->originalBodyRotations.resize(joints.size()); + ragdoll->bodyPosRelativeToJoint.resize(joints.size()); + ragdoll->originalJointRotations.resize(joints.size()); - for (int i = 0; i < 100; i++) + for (int i = 0; i < joints.size(); i++) ragdoll->rigidBodies[i] = nullptr; float r = 5.0f * scale; @@ -412,8 +413,7 @@ namespace era_engine::physics r, skeleton, model, - 1.0f, - scale); + 1.0f); PxRigidDynamic* r_hand = createSphereBone( j_middle_01_r_idx, @@ -422,8 +422,7 @@ namespace era_engine::physics r, skeleton, model, - 1.0f, - scale); + 1.0f); rot = mat4::identity; @@ -459,8 +458,8 @@ namespace era_engine::physics PxTransform pxPose = body->getGlobalPose(); mat4 bodyGlobalTransform = trsToMat4(trs{ createVec3(pxPose.p), createQuat(pxPose.q) }); mat4 invBodyGlobalTransform = invert(bodyGlobalTransform); - mat4 bindPoseWs = modelWithoutScale * invert(joints[i].invBindTransform); - vec3 jointPosWs = bindPosWs(joints[i].invBindTransform, model) * scale; + mat4 bindPoseWs = modelWithoutScale * joints[i].bindTransform; + vec3 jointPosWs = bindPosWs(joints[i].bindTransform, model); vec4 p = invBodyGlobalTransform * vec4(jointPosWs, 1.0f); ragdoll->relativeJointPoses[i] = vec3(p.x, p.y, p.z); @@ -469,7 +468,7 @@ namespace era_engine::physics if (ragdoll->rigidBodies[i]) { // Rigid body position relative to the joint - mat4 m = invert(model * invert(joints[i].invBindTransform)); + mat4 m = invert(model * joints[i].bindTransform); p = m * vec4(createVec3(ragdoll->rigidBodies[i]->getGlobalPose().p), 1.0f); ragdoll->bodyPosRelativeToJoint[i] = vec3(p.x, p.y, p.z); @@ -512,47 +511,49 @@ namespace era_engine::physics //// --------------------------------------------------------------------------------------------------------------- // Chest and Head - createD6Joint(pelvis, head, skeleton, j_neck_01_idx, model, scale); + createD6Joint(pelvis, head, skeleton, j_neck_01_idx, model); // Chest to Thighs - createD6Joint(pelvis, l_leg, skeleton, j_thigh_l_idx, model, scale); - createD6Joint(pelvis, r_leg, skeleton, j_thigh_r_idx, model, scale); + createD6Joint(pelvis, l_leg, skeleton, j_thigh_l_idx, model); + createD6Joint(pelvis, r_leg, skeleton, j_thigh_r_idx, model); // Thighs to Calf - createD6Joint(l_leg, l_calf, skeleton, j_calf_l_idx, model, scale); - createD6Joint(r_leg, r_calf, skeleton, j_calf_r_idx, model, scale); + createD6Joint(l_leg, l_calf, skeleton, j_calf_l_idx, model); + createD6Joint(r_leg, r_calf, skeleton, j_calf_r_idx, model); //createRevoluteJoint(l_leg, l_calf, skeleton, j_calf_l_idx, mat4::identity, model); //createRevoluteJoint(r_leg, r_calf, skeleton, j_calf_r_idx, mat4::identity, model); // Calf to Foot - createD6Joint(l_calf, l_foot, skeleton, j_foot_l_idx, model, scale); - createD6Joint(r_calf, r_foot, skeleton, j_foot_r_idx, model, scale); + createD6Joint(l_calf, l_foot, skeleton, j_foot_l_idx, model); + createD6Joint(r_calf, r_foot, skeleton, j_foot_r_idx, model); // Chest to Upperarm - createD6Joint(pelvis, l_arm, skeleton, j_upperarm_l_idx, model, scale); - createD6Joint(pelvis, r_arm, skeleton, j_upperarm_r_idx, model, scale); + createD6Joint(pelvis, l_arm, skeleton, j_upperarm_l_idx, model); + createD6Joint(pelvis, r_arm, skeleton, j_upperarm_r_idx, model); //mat4 arm_rot = mat4::identity; //arm_rot = trsToMat4(trs{vec3(0.0f), quat(vec3(0.0f, 0.0f, 1.0f), -PxPi / 2.0f) }); // Upperarm to Lowerman //createRevoluteJoint(l_arm, l_forearm, skeleton, j_lowerarm_l_idx, arm_rot, model); - createD6Joint(l_arm, l_forearm, skeleton, j_lowerarm_l_idx, model, scale); + createD6Joint(l_arm, l_forearm, skeleton, j_lowerarm_l_idx, model); //arm_rot = mat4::identity; //arm_rot = trsToMat4(trs{ vec3(0.0f), quat(vec3(0.0f, 0.0f, 1.0f), PxPi / 2.0f) }); - createD6Joint(r_arm, r_forearm, skeleton, j_lowerarm_r_idx, model, scale); + createD6Joint(r_arm, r_forearm, skeleton, j_lowerarm_r_idx, model); //createRevoluteJoint(r_arm, r_forearm, skeleton, j_lowerarm_r_idx, arm_rot, model); // Lowerman to Hand - createD6Joint(l_forearm, l_hand, skeleton, j_hand_l_idx, model, scale); - createD6Joint(r_forearm, r_hand, skeleton, j_hand_r_idx, model, scale); + createD6Joint(l_forearm, l_hand, skeleton, j_hand_l_idx, model); + createD6Joint(r_forearm, r_hand, skeleton, j_hand_r_idx, model); physics->update(0.016f); + + simulated = true; } - std::vector px_ragdoll_component::apply(const mat4& modelScale, const mat4& modelRotation) + std::vector px_ragdoll_component::apply(const mat4& modelRotation) { using namespace animation; @@ -560,9 +561,9 @@ namespace era_engine::physics { std::vector& joints = skeleton->joints; - for (uint32_t i = 0; i < (size_t)limb_type_count; i++) + for (uint32_t i = 1; i < joints.size(); i++) { - uint32_t chosenIdx = 1; + uint32_t chosenIdx = 0; PxRigidDynamic* body = ragdoll->findRecentBody(i, skeleton, chosenIdx); mat4 globalTransform = createMat44(body->getGlobalPose()); @@ -576,15 +577,17 @@ namespace era_engine::physics quat finalRotation = mat4ToTRS(joints[i].bindTransform).rotation * diffRot; mat4 rotation = modelRotation * quaternionToMat4(finalRotation); - mat4 model = modelRotation * modelScale; - - transforms[i] = mat4ToTRS(invert(model) * translation * rotation * modelScale); + transforms[i] = mat4ToTRS(invert(model) * translation * rotation); } } return transforms; } + void px_ragdoll_component::update(float dt) + { + } + void px_ragdoll_component::release(bool releaseActor) { ragdoll.reset(); @@ -601,7 +604,6 @@ namespace era_engine::physics while (!body) { - //if(joints[idx].parentID != (uint32)-1) idx = joints[idx].parentID; body = rigidBodies[idx]; chosenIdx = idx; diff --git a/modules/core/src/px/features/px_ragdoll.h b/modules/core/src/px/features/px_ragdoll.h index 45b0f9f5..abbd966b 100644 --- a/modules/core/src/px/features/px_ragdoll.h +++ b/modules/core/src/px/features/px_ragdoll.h @@ -35,7 +35,9 @@ namespace era_engine::physics void initRagdoll(ref skeletonRef); - std::vector apply(const mat4& modelScale, const mat4& modelRotation); + std::vector apply(const mat4& modelRotation = mat4::identity); + + void update(float dt); virtual void release(bool releaseActor = false) override; @@ -44,8 +46,9 @@ namespace era_engine::physics std::vector transforms; float scale = 0.1f; vec3 startPos; + bool simulated = false; - mat4 model = mat4::identity; + mat4 model = mat4::identity * scale; mat4 modelWithoutScale = mat4::identity; mat4 modelOnlyScale = mat4::identity * scale; }; diff --git a/resources/files.yaml b/resources/files.yaml index 809093ad..1afc1dd1 100644 --- a/resources/files.yaml +++ b/resources/files.yaml @@ -12,16 +12,12 @@ Path: E:/Era Engine/resources/assets\cameraman\source\CameraManWhite.fbx - Handle: 11765951030938717829 Path: E:/Era Engine/resources/assets\nemesis-re3\source\nemesis_-_resident_evil_3_remake_re3\textures\material_0_metallicRoughness.png -- Handle: 8639247938796199524 - Path: E:/Era Engine/resources/assets\fps-ak-74m-animations\textures\ak74m_AO.png -- Handle: 5931401281031177371 - Path: E:/Era Engine/resources/assets\Sponza\textures\sponza_fabric_green_diff.png -- Handle: 1837980540471891488 - Path: E:/Era Engine/resources/assets\dark-knight\source\Knight_All.255.cache.bin - Handle: 15189601630968607387 Path: E:/Era Engine/resources/assets\obj\bunny.fbx - Handle: 1843227552832675128 Path: E:/Era Engine/resources/assets\box.fbx +- Handle: 1837511076894566919 + Path: E:/Era Engine/resources/assets\cameraman\source\CameraManWhite.255.cache.bin - Handle: 7024802555298856979 Path: E:/Era Engine/resources/assets\cameraman\textures\CameraMan_packed0_diffuse.png - Handle: 13537452638996123579 @@ -32,6 +28,12 @@ Path: E:/Era Engine/resources/assets\nemesis-re3\source\nemesis_-_resident_evil_3_remake_re3\textures\em9000_body00_baseColor.png - Handle: 1974194301457617636 Path: E:/Era Engine/resources/assets\cameraman\textures\surveillance_camera.png +- Handle: 8639247938796199524 + Path: E:/Era Engine/resources/assets\fps-ak-74m-animations\textures\ak74m_AO.png +- Handle: 5931401281031177371 + Path: E:/Era Engine/resources/assets\Sponza\textures\sponza_fabric_green_diff.png +- Handle: 1837980540471891488 + Path: E:/Era Engine/resources/assets\dark-knight\source\Knight_All.255.cache.bin - Handle: 6940914832491519400 Path: E:/Era Engine/resources/assets\dark-knight\textures\T_cloth_M.png - Handle: 15079249607081802657 @@ -104,6 +106,8 @@ Path: E:/Era Engine/resources/assets\scripts\NewProject\NewProject\obj\Debug\net8.0\NewProject.AssemblyInfo.cs - Handle: 7166820094326500982 Path: E:/Era Engine/resources/assets\scripts\NewProject\NewProject\bin\Release\net8.0\NewProject.deps.json +- Handle: 11544685773691950611 + Path: E:/Era Engine/resources/assets\ragdoll\b\source\Business_Man.255.cache.bin - Handle: 17398963805348883862 Path: E:/Era Engine/resources/assets\nemesis-re3\source\nemesis_-_resident_evil_3_remake_re3\license.txt - Handle: 5522699643973298496 @@ -120,14 +124,12 @@ Path: E:/Era Engine/resources/assets\fps-ak-74m-animations\source\FpsAnims.fbx - Handle: 12278113384428092495 Path: E:/Era Engine/resources/assets\fps-ak-74m-animations\textures\ak74m_Roughness.png +- Handle: 11756624648512921776 + Path: E:/Era Engine/resources/assets\ragdoll\b\textures\business_man_albedo.png - Handle: 14957911067943913948 Path: E:/Era Engine/resources/assets\obj\blockwall.mtl - Handle: 9166301191058200720 Path: E:/Era Engine/resources/assets\fps-ak-74m-animations\textures\armNormal.png -- Handle: 685338125285828082 - Path: E:/Era Engine/resources/assets\Sponza\textures\vase_bump.png -- Handle: 10449316216664999573 - Path: E:/Era Engine/resources/assets\obj\table.mtl - Handle: 505223500358356445 Path: E:/Era Engine/resources/assets\nemesis-re3\source\nemesis_-_resident_evil_3_remake_re3\textures\em9000_body01_nails_baseColor.png - Handle: 14538469595899696062 @@ -164,6 +166,8 @@ Path: E:/Era Engine/resources/assets\nemesis-re3\textures\material_0_metallicRoughness@channels=G.png - Handle: 7355587724262949888 Path: E:/Era Engine/resources/assets\Sponza\textures\vase_plant_NRM.png +- Handle: 15550521343600253043 + Path: E:/Era Engine/resources/assets\ragdoll\b\textures\business_man_normal.png - Handle: 7182223389821297231 Path: E:/Era Engine/resources/assets\obj\blockwall.obj - Handle: 4120125340477818955 @@ -178,6 +182,10 @@ Path: E:/Era Engine/resources/assets\scripts\NewProject\NewProject\obj\Release\net8.0\NewProject.assets.cache - Handle: 10191810456721912310 Path: E:/Era Engine/resources/assets\obj\hugeAsset.obj +- Handle: 685338125285828082 + Path: E:/Era Engine/resources/assets\Sponza\textures\vase_bump.png +- Handle: 10449316216664999573 + Path: E:/Era Engine/resources/assets\obj\table.mtl - Handle: 16986872774794990680 Path: E:/Era Engine/resources/assets\obj\table.obj - Handle: 6698839368495404016 @@ -194,6 +202,8 @@ Path: E:/Era Engine/resources/assets\obj\untitled.mtl - Handle: 3225854363627173719 Path: E:/Era Engine/resources/assets\resident-evil-tyrant\source\UmodelExport.fbx +- Handle: 4022712154035586294 + Path: E:/Era Engine/resources/assets\ragdoll\a\textures\Character_Normal.jpeg - Handle: 6919096418525756947 Path: E:/Era Engine/resources/assets\obj\untitled.obj - Handle: 769574062586697135 @@ -248,6 +258,46 @@ Path: E:/Era Engine/resources/assets\particles\fire_explosion.tif - Handle: 14490522790006249642 Path: E:/Era Engine/resources/assets\particles\smoke1.tif +- Handle: 1165691262057543120 + Path: E:/Era Engine/resources/assets\Sponza\textures\sponza_curtain_ddn.jpg +- Handle: 1837518405606999385 + Path: E:/Era Engine/resources/assets\ragdoll\a\source\Party_man_01.255.cache.bin +- Handle: 1837518501637239616 + Path: E:/Era Engine/resources/assets\ragdoll\a\source\Party_man_01.fbx +- Handle: 3468033804133725222 + Path: E:/Era Engine/resources/assets\ragdoll\a\source\textures\Character_ao.png +- Handle: 5643316008233600935 + Path: E:/Era Engine/resources/assets\scripts\NewProject\NewProject\obj\Debug\net8.0\NewProject.csproj.CopyComplete +- Handle: 16773089220538589774 + Path: E:/Era Engine/resources/assets\ragdoll\a\source\textures\Character_metallic.png +- Handle: 9718570502436942858 + Path: E:/Era Engine/resources/assets\ragdoll\a\source\textures\Character_MetallicAlpha.png +- Handle: 950009077981754726 + Path: E:/Era Engine/resources/assets\scripts\NewProject\NewProject\obj\project.nuget.cache +- Handle: 16453446401043143010 + Path: E:/Era Engine/resources/assets\ragdoll\a\source\textures\Character_ResourceMap_ColorID.png +- Handle: 7265678570059675600 + Path: E:/Era Engine/resources/assets\ragdoll\a\source\textures\Character_ResourceMap_RGBMask.png +- Handle: 18218810368988538303 + Path: E:/Era Engine/resources/assets\ragdoll\a\source\textures\Character_roughness.png +- Handle: 17984520097163046324 + Path: E:/Era Engine/resources/assets\ragdoll\a\textures\Character_ao.png +- Handle: 17937753681757441391 + Path: E:/Era Engine/resources/assets\ragdoll\a\textures\Character_Diffuse.jpeg +- Handle: 18108467212424839605 + Path: E:/Era Engine/resources/assets\ragdoll\a\textures\Character_metallic.png +- Handle: 12640619314950183295 + Path: E:/Era Engine/resources/assets\ragdoll\a\textures\Character_roughness.png +- Handle: 8794367755373428365 + Path: E:/Era Engine/resources/assets\ragdoll\b\source\Business_Man.fbx +- Handle: 18150942199154647409 + Path: E:/Era Engine/resources/assets\ragdoll\b\textures\business_man_ao.png +- Handle: 10749880726209132778 + Path: E:/Era Engine/resources/assets\Sponza\textures\sponza_fabric_diff.png +- Handle: 17434230699712531193 + Path: E:/Era Engine/resources/assets\resident-evil-tyrant\textures\T_Tyrant_D.png +- Handle: 2482343939535338499 + Path: E:/Era Engine/resources/assets\ragdoll\b\textures\business_man_spec.png - Handle: 4306037388642827931 Path: E:/Era Engine/resources/assets\resident-evil-2-tyrant\source\resident-evil-tyrant\source\UmodelExport.fbx - Handle: 7380935162774474278 @@ -258,12 +308,18 @@ Path: E:/Era Engine/resources/assets\resident-evil-2-tyrant\textures\T_Tyrant_D.png - Handle: 17562228251065776739 Path: E:/Era Engine/resources/assets\resident-evil-2-tyrant\textures\T_Tyrant_N.png +- Handle: 14064497463372127174 + Path: E:/Era Engine/resources/assets\resident-evil-tyrant\source\tiran.255.cache.bin +- Handle: 1837519632181842087 + Path: E:/Era Engine/resources/assets\resident-evil-tyrant\source\tiran.fbx - Handle: 1837980631319626676 Path: E:/Era Engine/resources/assets\resident-evil-tyrant\source\UmodelExport.255.cache.bin -- Handle: 10749880726209132778 - Path: E:/Era Engine/resources/assets\Sponza\textures\sponza_fabric_diff.png -- Handle: 17434230699712531193 - Path: E:/Era Engine/resources/assets\resident-evil-tyrant\textures\T_Tyrant_D.png +- Handle: 1648498558446614752 + Path: E:/Era Engine/resources/assets\scripts\NewProject\NewProject.sln +- Handle: 3738219009680573222 + Path: E:/Era Engine/resources/assets\resident-evil-tyrant\source\untitled.255.cache.bin +- Handle: 1837519847896153182 + Path: E:/Era Engine/resources/assets\resident-evil-tyrant\source\untitled.fbx - Handle: 3102926392340247084 Path: E:/Era Engine/resources/assets\resident-evil-tyrant\textures\T_Tyrant_N.png - Handle: 2879563918427943770 @@ -342,8 +398,6 @@ Path: E:/Era Engine/resources/assets\scripts\NewProject\NewProject\obj\Debug\net8.0\NewProject.assets.cache - Handle: 9921412549345759097 Path: E:/Era Engine/resources/assets\scripts\NewProject\NewProject\obj\Debug\net8.0\NewProject.csproj.AssemblyReference.cache -- Handle: 5643316008233600935 - Path: E:/Era Engine/resources/assets\scripts\NewProject\NewProject\obj\Debug\net8.0\NewProject.csproj.CopyComplete - Handle: 12093008442914708072 Path: E:/Era Engine/resources/assets\scripts\NewProject\NewProject\obj\Debug\net8.0\NewProject.csproj.CoreCompileInputs.cache - Handle: 2294995827421869660 @@ -366,8 +420,6 @@ Path: E:/Era Engine/resources/assets\Sponza\textures\sponza_arch_ddn.png - Handle: 9316744376089097931 Path: E:/Era Engine/resources/assets\scripts\NewProject\NewProject\obj\project.assets.json -- Handle: 950009077981754726 - Path: E:/Era Engine/resources/assets\scripts\NewProject\NewProject\obj\project.nuget.cache - Handle: 3559371054613975948 Path: E:/Era Engine/resources/assets\scripts\NewProject\NewProject\obj\Release\net8.0\.NETCoreApp,Version=v8.0.AssemblyAttributes.cs - Handle: 3830262397672461611 @@ -404,14 +456,14 @@ Path: E:/Era Engine/resources/assets\Sponza\textures\vase_hanging.png - Handle: 3783301262091663634 Path: E:/Era Engine/resources/assets\scripts\NewProject\NewProject\WeaponHandler.cs -- Handle: 1648498558446614752 - Path: E:/Era Engine/resources/assets\scripts\NewProject\NewProject.sln - Handle: 15764328342304315136 Path: E:/Era Engine/resources/assets\sounds\punch.wav - Handle: 7838683248162586798 Path: E:/Era Engine/resources/assets\sounds\s.ogg - Handle: 11089635493870156207 Path: E:/Era Engine/resources/assets\sounds\sound.ogg +- Handle: 1837506141615611514 + Path: E:/Era Engine/resources/assets\Sponza\sponza.255.cache.bin - Handle: 8581012435206862399 Path: E:/Era Engine/resources/assets\Sponza\sponza.obj - Handle: 17063698481598821395 @@ -458,8 +510,6 @@ Path: E:/Era Engine/resources/assets\Sponza\textures\sponza_column_c_spec.png - Handle: 15828239034984737340 Path: E:/Era Engine/resources/assets\Sponza\textures\sponza_curtain_blue_diff.png -- Handle: 1165691262057543120 - Path: E:/Era Engine/resources/assets\Sponza\textures\sponza_curtain_ddn.jpg - Handle: 481448485570703163 Path: E:/Era Engine/resources/assets\Sponza\textures\sponza_curtain_diff.png - Handle: 3163919139392153019