diff --git a/modules/core/src/animation/animation.cpp b/modules/core/src/animation/animation.cpp index 9c3020ef1..0fbff1e7f 100644 --- a/modules/core/src/animation/animation.cpp +++ b/modules/core/src/animation/animation.cpp @@ -641,7 +641,6 @@ namespace era_engine::animation relTime += dt / targetLength; relTime = fmodf(relTime, 1.f); - trs* totalLocalTransforms = (trs*)alloca(sizeof(trs) * skeleton.joints.size() * 2); trs* localTransforms1 = totalLocalTransforms; trs* localTransforms2 = totalLocalTransforms + skeleton.joints.size(); @@ -687,6 +686,9 @@ namespace era_engine::animation controller = make_ref(); + if (clips.empty()) + return; + animation_blackboard startBlackboard = { &clips[startIndex] }; controller->stateMachine.set_state(state, startBlackboard); diff --git a/modules/core/src/animation/animation.h b/modules/core/src/animation/animation.h index 47d6f07cc..a6c522f9f 100644 --- a/modules/core/src/animation/animation.h +++ b/modules/core/src/animation/animation.h @@ -262,6 +262,6 @@ namespace era_engine::animation trs* currentGlobalTransforms = 0; float timeScale = 1.f; - bool drawSceleton = false; + bool drawSceleton = true; }; } \ No newline at end of file diff --git a/modules/core/src/application.cpp b/modules/core/src/application.cpp index 0a33e52d0..a815f32a1 100644 --- a/modules/core/src/application.cpp +++ b/modules/core/src/application.cpp @@ -239,6 +239,7 @@ namespace era_engine } static entity_handle sphere{}; + static entity_handle ragdoll{}; static void initTestScene(escene& scene) { @@ -328,6 +329,19 @@ namespace era_engine // addRaytracingComponentAsync(en, mesh); //} + if (auto mesh = loadAnimatedMeshFromFileAsync(getAssetPath("/resources/assets/resident-evil-tyrant/source/UmodelExport.fbx"))) + { + auto& en = scene.createEntity("Tiran") + .addComponent(vec3(0.0f), quat::identity, vec3(0.1f)) + .addComponent() + .addComponent() + .addComponent(mesh) + .addComponent(vec3(0.0f)); + initializeAnimationComponentAsync(en, mesh); + addRaytracingComponentAsync(en, mesh); + + ragdoll = en.handle; + } #if PX_BLAST_ENABLE @@ -364,11 +378,11 @@ namespace era_engine // scene.deleteEntity(px_sphere_entt1.handle); //} - auto& vehicle = scene.createEntity("Vehicle") - .addComponent(vec3(2.f), quat::identity, vec3(1.f)) - .addComponent(vec3(2.f)); + //auto& vehicle = scene.createEntity("Vehicle") + // .addComponent(vec3(2.f), quat::identity, vec3(1.f)) + // .addComponent(vec3(2.f)); - vehicle.getComponent().setupVehicle(); + //vehicle.getComponent().setupVehicle(); //auto soft_body = &scene.createEntity("SoftBody") // .addComponent(vec3(0.f), quat::identity, vec3(1.f)) @@ -406,8 +420,8 @@ namespace era_engine // .addComponent(100, 100, vec3(0.f, 15.0f, 0.0f)); scene.createEntity("Platform") - .addComponent(vec3(10, -7.f, 0.f), quat(vec3(1.f, 0.f, 0.f), deg2rad(0.f))) - .addComponent(vec3(0.f, -3.0, 0.0f)) + .addComponent(vec3(10, -9.f, 0.f), quat(vec3(1.f, 0.f, 0.f), deg2rad(0.f))) + .addComponent(vec3(0.f, -5.0, 0.0f)) .addComponent(groundMesh); auto chainMesh = make_ref(); @@ -904,6 +918,21 @@ namespace era_engine renderer->setSun(sun); renderer->setCamera(camera); + if (ImGui::Begin("Ragdoll")) + { + static bool init = false; + + if (ImGui::Checkbox("Build", &init)) + { + init = false; + + eentity rag{ ragdoll, &scene.registry }; + + rag.getComponent().initRagdoll(make_ref(rag.getComponent().mesh->skeleton)); + } + ImGui::End(); + } + //if (running) // physics::physics_holder::physicsRef->endSimulation(dt); #ifndef ERA_RUNTIME diff --git a/modules/core/src/editor/editor.h b/modules/core/src/editor/editor.h index 34d4075f9..12c784d0e 100644 --- a/modules/core/src/editor/editor.h +++ b/modules/core/src/editor/editor.h @@ -100,7 +100,7 @@ namespace era_engine system_info systemInfo; - bool renderPhysicsShapes = false; + bool renderPhysicsShapes = true; friend struct selection_undo; friend struct application; diff --git a/modules/core/src/px/features/px_ragdoll.cpp b/modules/core/src/px/features/px_ragdoll.cpp index cc0620f0b..91e4df583 100644 --- a/modules/core/src/px/features/px_ragdoll.cpp +++ b/modules/core/src/px/features/px_ragdoll.cpp @@ -31,7 +31,7 @@ namespace era_engine::physics static vec3 bindPosWs(mat4& inverseBindPose, mat4& model) { mat4 m = model * invert(inverseBindPose); - return vec3(m.m30, m.m31, m.m32); + return vec3(m.m03, m.m13, m.m23); } static PxRigidDynamic* createCapsuleBone( @@ -51,8 +51,8 @@ namespace era_engine::physics auto& joints = skeleton->joints; - vec3 parentPos = bindPosWs(joints[parentIdx].invBindTransform, model); - vec3 childPos = bindPosWs(joints[childIdx].invBindTransform, model); + vec3 parentPos = bindPosWs(joints[parentIdx].invBindTransform, model) * modelWithScale.m00; + vec3 childPos = bindPosWs(joints[childIdx].invBindTransform, model) * modelWithScale.m00; float len = length(parentPos - childPos); @@ -64,10 +64,15 @@ namespace era_engine::physics vec3 bodyPos = (parentPos + childPos) / 2.0f; - PxShape* shape = physics->getPhysics()->createShape(PxCapsuleGeometry(r, lenMinus2r), *material); + PxShape* shape = physics->getPhysics()->createShape(PxCapsuleGeometry(r, halfHeight), *material); PxTransform local(createPxQuat(mat4ToTRS(rotation).rotation)); shape->setLocalPose(local); + shape->setSimulationFilterData(PxFilterData(-1, -1, 0, 0)); + shape->setQueryFilterData(PxFilterData(-1, -1, 0, 0)); + shape->setFlag(PxShapeFlag::eVISUALIZATION, true); + shape->setFlag(PxShapeFlag::eSIMULATION_SHAPE, true); + shape->setFlag(PxShapeFlag::eSCENE_QUERY_SHAPE, true); mat4 invBindPose = joints[parentIdx].invBindTransform; mat4 bindPose = invert(invBindPose); @@ -76,7 +81,10 @@ namespace era_engine::physics PxTransform px_transform(createPxVec3(bodyPos), createPxQuat(mat4ToTRS(bindPoseWs).rotation)); PxRigidDynamic* body = physics->getPhysics()->createRigidDynamic(px_transform); + body->setActorFlag(PxActorFlag::eVISUALIZATION, true); body->setMass(mass); + //body->setActorFlag(PxActorFlag::eDISABLE_SIMULATION, true); + body->attachShape(*shape); @@ -103,13 +111,17 @@ namespace era_engine::physics auto& joints = skeleton->joints; - vec3 parentPos = bindPosWs(joints[parentIdx].invBindTransform, model) + offset; + vec3 parentPos = (bindPosWs(joints[parentIdx].invBindTransform, model) + offset) * modelWithScale.m00; - PxShape* shape = physics->getPhysics()->createShape(PxCapsuleGeometry(r, l), *material); + PxShape* shape = physics->getPhysics()->createShape(PxCapsuleGeometry(r, l / 2.0f), *material); PxTransform local(createPxQuat(mat4ToTRS(rotation).rotation)); shape->setLocalPose(local); - + shape->setFlag(PxShapeFlag::eVISUALIZATION, true); + shape->setFlag(PxShapeFlag::eSIMULATION_SHAPE, true); + shape->setFlag(PxShapeFlag::eSCENE_QUERY_SHAPE, true); + shape->setSimulationFilterData(PxFilterData(-1, -1, 0, 0)); + shape->setQueryFilterData(PxFilterData(-1, -1, 0, 0)); mat4 invBindPose = joints[parentIdx].invBindTransform; mat4 bindPose = invert(invBindPose); mat4 bindPoseWs = modelWithoutScale * bindPose; @@ -117,7 +129,7 @@ namespace era_engine::physics PxTransform px_transform(createPxVec3(parentPos), createPxQuat(mat4ToTRS(bindPoseWs).rotation)); PxRigidDynamic* body = physics->getPhysics()->createRigidDynamic(px_transform); - + body->setActorFlag(PxActorFlag::eVISUALIZATION, true); body->attachShape(*shape); body->setMass(mass); @@ -133,18 +145,23 @@ namespace era_engine::physics float r, ref skeleton, mat4 model = mat4::identity, - float mass = 1.0f) + float mass = 1.0f, + float scale = 0.1f) { const auto& physics = physics_holder::physicsRef; auto& joints = skeleton->joints; - vec3 parentPos = bindPosWs(joints[parentIdx].invBindTransform, model); + vec3 parentPos = bindPosWs(joints[parentIdx].invBindTransform, model) * scale; PxShape* shape = physics->getPhysics()->createShape(PxSphereGeometry(r), *material); - + shape->setFlag(PxShapeFlag::eVISUALIZATION, true); + shape->setFlag(PxShapeFlag::eSIMULATION_SHAPE, true); + shape->setFlag(PxShapeFlag::eSCENE_QUERY_SHAPE, true); + shape->setSimulationFilterData(PxFilterData(-1, -1, 0, 0)); + shape->setQueryFilterData(PxFilterData(-1, -1, 0, 0)); PxRigidDynamic* body = physics->getPhysics()->createRigidDynamic(PxTransform(createPxVec3(parentPos))); - + body->setActorFlag(PxActorFlag::eVISUALIZATION, true); body->attachShape(*shape); body->setMass(mass); @@ -158,12 +175,13 @@ namespace era_engine::physics PxRigidDynamic* child, ref skeleton, uint32_t jointPos, - mat4 model = mat4::identity) + mat4 model = mat4::identity, + float scale = 0.1f) { const auto& physics = physics_holder::physicsRef; auto& joints = skeleton->joints; - vec3 p = bindPosWs(joints[jointPos].invBindTransform, model); + vec3 p = bindPosWs(joints[jointPos].invBindTransform, model) * scale; quat q = mat4ToTRS(invert(joints[jointPos].invBindTransform)).rotation; PxD6Joint* joint = PxD6JointCreate(*physics->getPhysics(), @@ -174,7 +192,7 @@ namespace era_engine::physics joint->setConstraintFlag(PxConstraintFlag::eVISUALIZATION, true); - configD6Joint(3.14 / 4.f, 3.14f / 4.f, -3.14f / 8.f, 3.14f / 8.f, joint); + configD6Joint(3.14f / 4.f, 3.14f / 4.f, -3.14f / 8.f, 3.14f / 8.f, joint); } static void createRevoluteJoint( @@ -183,12 +201,13 @@ namespace era_engine::physics ref skeleton, uint32_t jointPos, mat4 rotation = mat4::identity, - mat4 model = mat4::identity) + mat4 model = mat4::identity, + float scale = 0.1f) { const auto& physics = physics_holder::physicsRef; auto& joints = skeleton->joints; - vec3 p = bindPosWs(joints[jointPos].invBindTransform, model); + vec3 p = bindPosWs(joints[jointPos].invBindTransform, model) * scale; mat4 parentPoseInv = invert(createMat44(parent->getGlobalPose())); mat4 childPoseInv = invert(createMat44(child->getGlobalPose())); @@ -202,14 +221,13 @@ namespace era_engine::physics PxTransform(createPxMat44(childPoseInv * jointTransform))); joint->setConstraintFlag(PxConstraintFlag::eVISUALIZATION, true); - - joint->setLimit(PxJointAngularLimitPair(0.0f, PxPi)); + joint->setLimit(PxJointAngularLimitPair(-PxPi / 2.0f, PxPi / 2.0f)); joint->setRevoluteJointFlag(PxRevoluteJointFlag::eLIMIT_ENABLED, true); } px_ragdoll_component::px_ragdoll_component(uint32 handle, const vec3& pos) - : px_physics_component_base(handle) + : px_physics_component_base(handle), startPos(pos) { } @@ -217,6 +235,323 @@ namespace era_engine::physics { } + void px_ragdoll_component::initRagdoll(ref skeletonRef) + { + using namespace animation; + + skeleton = skeletonRef; + + ragdoll = make_ref(); + + const auto& physics = physics_holder::physicsRef; + const auto& material = physics->getDefaultMaterial(); + PxScene* scene = physics->getScene(); + + auto& joints = skeleton->joints; + + uint32_t j_head_idx = skeleton->nameToJointID["head"]; + uint32_t j_neck_01_idx = skeleton->nameToJointID["neck_01"]; + uint32_t j_spine_03_idx = skeleton->nameToJointID["spine_03"]; + uint32_t j_spine_02_idx = skeleton->nameToJointID["spine_02"]; + uint32_t j_spine_01_idx = skeleton->nameToJointID["spine_01"]; + uint32_t j_pelvis_idx = skeleton->nameToJointID["pelvis"]; + + uint32_t j_thigh_l_idx = skeleton->nameToJointID["thigh_l"]; + uint32_t j_calf_l_idx = skeleton->nameToJointID["calf_l"]; + uint32_t j_foot_l_idx = skeleton->nameToJointID["foot_l"]; + uint32_t j_ball_l_idx = skeleton->nameToJointID["ball_l"]; + + uint32_t j_thigh_r_idx = skeleton->nameToJointID["thigh_r"]; + uint32_t j_calf_r_idx = skeleton->nameToJointID["calf_r"]; + uint32_t j_foot_r_idx = skeleton->nameToJointID["foot_r"]; + uint32_t j_ball_r_idx = skeleton->nameToJointID["ball_r"]; + + uint32_t j_upperarm_l_idx = skeleton->nameToJointID["upperarm_l"]; + uint32_t j_lowerarm_l_idx = skeleton->nameToJointID["lowerarm_l"]; + uint32_t j_hand_l_idx = skeleton->nameToJointID["hand_l"]; + uint32_t j_middle_01_l_idx = skeleton->nameToJointID["middle_01_l"]; + + uint32_t j_upperarm_r_idx = skeleton->nameToJointID["upperarm_r"]; + uint32_t j_lowerarm_r_idx = skeleton->nameToJointID["lowerarm_r"]; + 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); + + for (int i = 0; i < 100; i++) + ragdoll->rigidBodies[i] = nullptr; + + float r = 5.0f * scale; + mat4 rot = mat4::identity; + + PxRigidDynamic* pelvis = createCapsuleBone( + j_pelvis_idx, + j_neck_01_idx, + *ragdoll, + material, + skeleton, + modelWithoutScale, + modelOnlyScale, + model, + 15.0f * scale, + rot); + + PxRigidDynamic* head = createCapsuleBone( + j_head_idx, + *ragdoll, + material, + vec3(0.0f, 15.0f * scale, 0.0f), + 4.0f * scale, + skeleton, + modelWithoutScale, + modelOnlyScale, + model, + 6.0f * scale, + rot); + + PxRigidDynamic* l_leg = createCapsuleBone( + j_thigh_l_idx, + j_calf_l_idx, + *ragdoll, + material, + skeleton, + modelWithoutScale, + modelOnlyScale, + model, + r, + rot); + + PxRigidDynamic* r_leg = createCapsuleBone( + j_thigh_r_idx, + j_calf_r_idx, + *ragdoll, + material, + skeleton, + modelWithoutScale, + modelOnlyScale, + model, + r, + rot); + + PxRigidDynamic* l_calf = createCapsuleBone( + j_calf_l_idx, + j_foot_l_idx, + *ragdoll, + material, + skeleton, + modelWithoutScale, + modelOnlyScale, + model, + r, + rot); + + PxRigidDynamic* r_calf = createCapsuleBone( + j_calf_r_idx, + j_foot_r_idx, + *ragdoll, + material, + skeleton, + modelWithoutScale, + modelOnlyScale, + model, + r, + rot); + + PxRigidDynamic* l_arm = createCapsuleBone( + j_upperarm_l_idx, + j_lowerarm_l_idx, + *ragdoll, + material, + skeleton, + modelWithoutScale, + modelOnlyScale, + model, + r); + + PxRigidDynamic* r_arm = createCapsuleBone( + j_upperarm_r_idx, + j_lowerarm_r_idx, + *ragdoll, + material, + skeleton, + modelWithoutScale, + modelOnlyScale, + model, + r); + + PxRigidDynamic* l_forearm = createCapsuleBone( + j_lowerarm_l_idx, + j_hand_l_idx, + *ragdoll, + material, + skeleton, + modelWithoutScale, + modelOnlyScale, + model, + r); + + PxRigidDynamic* r_forearm = createCapsuleBone( + j_lowerarm_r_idx, + j_hand_r_idx, + *ragdoll, + material, + skeleton, + modelWithoutScale, + modelOnlyScale, + model, + r); + + PxRigidDynamic* l_hand = createSphereBone( + j_middle_01_l_idx, + *ragdoll, + material, + r, + skeleton, + model, + 1.0f, + scale); + + PxRigidDynamic* r_hand = createSphereBone( + j_middle_01_r_idx, + *ragdoll, + material, + r, + skeleton, + model, + 1.0f, + scale); + + rot = mat4::identity; + + PxRigidDynamic* l_foot = createCapsuleBone( + j_foot_l_idx, + j_ball_l_idx, + *ragdoll, + material, + skeleton, + modelWithoutScale, + modelOnlyScale, + model, + r, + rot); + + PxRigidDynamic* r_foot = createCapsuleBone( + j_foot_r_idx, + j_ball_r_idx, + *ragdoll, + material, + skeleton, + modelWithoutScale, + modelOnlyScale, + model, + r, + rot); + + for (int i = 1; i < skeleton->joints.size(); i++) + { + uint32_t chosenIdx = 0; + PxRigidDynamic* body = ragdoll->findRecentBody(i, skeleton, chosenIdx); + + 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; + + vec4 p = invBodyGlobalTransform * vec4(jointPosWs, 1.0f); + ragdoll->relativeJointPoses[i] = vec3(p.x, p.y, p.z); + ragdoll->originalBodyRotations[i] = mat4ToTRS(bodyGlobalTransform).rotation; + + if (ragdoll->rigidBodies[i]) + { + // Rigid body position relative to the joint + mat4 m = invert(model * invert(joints[i].invBindTransform)); + p = m * vec4(createVec3(ragdoll->rigidBodies[i]->getGlobalPose().p), 1.0f); + + ragdoll->bodyPosRelativeToJoint[i] = vec3(p.x, p.y, p.z); + ragdoll->originalJointRotations[i] = mat4ToTRS(bindPoseWs).rotation; + } + + finishBody(body, 1.0f, 1.0f); + } + + //// --------------------------------------------------------------------------------------------------------------- + //// Add rigid bodies to scene + //// --------------------------------------------------------------------------------------------------------------- + + // Chest and Head + scene->addActor(*pelvis); + scene->addActor(*head); + + // Left Leg + scene->addActor(*l_leg); + scene->addActor(*l_calf); + scene->addActor(*l_foot); + + // Right Leg + scene->addActor(*r_leg); + scene->addActor(*r_calf); + scene->addActor(*r_foot); + + // Left Arm + scene->addActor(*l_arm); + scene->addActor(*l_forearm); + scene->addActor(*l_hand); + + // Right Arm + scene->addActor(*r_arm); + scene->addActor(*r_forearm); + scene->addActor(*r_hand); + + //// --------------------------------------------------------------------------------------------------------------- + //// Create joints + //// --------------------------------------------------------------------------------------------------------------- + + // Chest and Head + createD6Joint(pelvis, head, skeleton, j_neck_01_idx, model, scale); + + // 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); + + // 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); + //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); + + // 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); + + //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); + + //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); + + //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); + + physics->update(0.016f); + } + std::vector px_ragdoll_component::apply(const mat4& modelScale, const mat4& modelRotation) { using namespace animation; @@ -227,7 +562,7 @@ namespace era_engine::physics for (uint32_t i = 0; i < (size_t)limb_type_count; i++) { - uint32_t chosenIdx; + uint32_t chosenIdx = 1; PxRigidDynamic* body = ragdoll->findRecentBody(i, skeleton, chosenIdx); mat4 globalTransform = createMat44(body->getGlobalPose()); @@ -266,6 +601,7 @@ 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 234d4e4a7..45b0f9f5f 100644 --- a/modules/core/src/px/features/px_ragdoll.h +++ b/modules/core/src/px/features/px_ragdoll.h @@ -33,6 +33,8 @@ namespace era_engine::physics ~px_ragdoll_component(); + void initRagdoll(ref skeletonRef); + std::vector apply(const mat4& modelScale, const mat4& modelRotation); virtual void release(bool releaseActor = false) override; @@ -40,5 +42,11 @@ namespace era_engine::physics ref ragdoll = nullptr; ref skeleton = nullptr; std::vector transforms; + float scale = 0.1f; + vec3 startPos; + + mat4 model = mat4::identity; + mat4 modelWithoutScale = mat4::identity; + mat4 modelOnlyScale = mat4::identity * scale; }; } \ No newline at end of file diff --git a/resources/files.yaml b/resources/files.yaml index 857f064a0..809093ad7 100644 --- a/resources/files.yaml +++ b/resources/files.yaml @@ -1,11 +1,3 @@ -- Handle: 6940914832491519400 - Path: E:/Era Engine/resources/assets\dark-knight\textures\T_cloth_M.png -- Handle: 15079249607081802657 - Path: E:/Era Engine/resources/assets\fps-ak-74m-animations\textures\armRoughness.png -- Handle: 292922214241598226 - Path: E:/Era Engine/resources/assets\fps-ak-74m-animations\textures\ak74m_AlbedoTransparency.png -- Handle: 11288124859961220417 - Path: E:/Era Engine/resources/assets\dark-knight\source\Knight_All.fbx - Handle: 1838192526137763131 Path: E:/Era Engine/resources/assets\box.255.cache.bin - Handle: 1464681640447771208 @@ -20,6 +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 @@ -34,6 +32,14 @@ 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: 6940914832491519400 + Path: E:/Era Engine/resources/assets\dark-knight\textures\T_cloth_M.png +- Handle: 15079249607081802657 + Path: E:/Era Engine/resources/assets\fps-ak-74m-animations\textures\armRoughness.png +- Handle: 292922214241598226 + Path: E:/Era Engine/resources/assets\fps-ak-74m-animations\textures\ak74m_AlbedoTransparency.png +- Handle: 11288124859961220417 + Path: E:/Era Engine/resources/assets\dark-knight\source\Knight_All.fbx - Handle: 2133856743585431826 Path: E:/Era Engine/resources/assets\scripts\NewProject\NewProject\bin\Release\net8.0\EraEngineDomain.dll - Handle: 6887081327180341702 @@ -112,8 +118,6 @@ Path: E:/Era Engine/resources/assets\Sponza\textures\sponza_fabric_spec.png - Handle: 2528941478955413937 Path: E:/Era Engine/resources/assets\fps-ak-74m-animations\source\FpsAnims.fbx -- Handle: 8639247938796199524 - Path: E:/Era Engine/resources/assets\fps-ak-74m-animations\textures\ak74m_AO.png - Handle: 12278113384428092495 Path: E:/Era Engine/resources/assets\fps-ak-74m-animations\textures\ak74m_Roughness.png - Handle: 14957911067943913948 @@ -164,8 +168,6 @@ Path: E:/Era Engine/resources/assets\obj\blockwall.obj - Handle: 4120125340477818955 Path: E:/Era Engine/resources/assets\obj\bunny.blast -- Handle: 16986872774794990680 - Path: E:/Era Engine/resources/assets\obj\table.obj - Handle: 4332030298597251358 Path: E:/Era Engine/resources/assets\Sponza\textures\sponza_roof_diff_NRM.png - Handle: 14663617557952589605 @@ -176,6 +178,8 @@ 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: 16986872774794990680 + Path: E:/Era Engine/resources/assets\obj\table.obj - Handle: 6698839368495404016 Path: E:/Era Engine/resources/assets\obj\towerSupport.obj - Handle: 908259775060008794 @@ -254,6 +258,8 @@ 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: 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 @@ -464,8 +470,6 @@ Path: E:/Era Engine/resources/assets\Sponza\textures\sponza_fabric_blue_diff.png - Handle: 7606544335286313965 Path: E:/Era Engine/resources/assets\Sponza\textures\sponza_fabric_ddn.jpg -- Handle: 5931401281031177371 - Path: E:/Era Engine/resources/assets\Sponza\textures\sponza_fabric_green_diff.png - Handle: 11338819292608715506 Path: E:/Era Engine/resources/assets\Sponza\textures\sponza_flagpole_diff.png - Handle: 3059668504593020359