mirror of https://github.com/zeldaret/botw.git
ksys/phys: Finish RigidBodyParam (add createEntityShapeBody)
This commit is contained in:
parent
db72086c68
commit
3512b78627
|
@ -83335,7 +83335,7 @@ Address,Quality,Size,Name
|
||||||
0x0000007100f9ff60,O,000344,_ZN4ksys4phys14RigidBodyParam5parseERKN3agl3utl16ResParameterListEPN4sead4HeapE
|
0x0000007100f9ff60,O,000344,_ZN4ksys4phys14RigidBodyParam5parseERKN3agl3utl16ResParameterListEPN4sead4HeapE
|
||||||
0x0000007100fa00b8,O,003684,_ZNK4ksys4phys14RigidBodyParam15createRigidBodyEPNS0_18SystemGroupHandlerEPN4sead4HeapENS1_29CreateFixedBoxWithNoCollisionE
|
0x0000007100fa00b8,O,003684,_ZNK4ksys4phys14RigidBodyParam15createRigidBodyEPNS0_18SystemGroupHandlerEPN4sead4HeapENS1_29CreateFixedBoxWithNoCollisionE
|
||||||
0x0000007100fa0f1c,O,000308,_ZNK4ksys4phys14RigidBodyParam17makeInstanceParamEPNS0_22RigidBodyInstanceParamE
|
0x0000007100fa0f1c,O,000308,_ZNK4ksys4phys14RigidBodyParam17makeInstanceParamEPNS0_22RigidBodyInstanceParamE
|
||||||
0x0000007100fa1050,U,000296,ksys::phys::RigidBodyParam::createEntityShape
|
0x0000007100fa1050,O,000296,_ZNK4ksys4phys14RigidBodyParam21createEntityShapeBodyEPNS0_9RigidBodyEPNS0_18SystemGroupHandlerEPN4sead4HeapE
|
||||||
0x0000007100fa1178,O,000028,_ZNK4ksys4phys14RigidBodyParam15getContactLayerEv
|
0x0000007100fa1178,O,000028,_ZNK4ksys4phys14RigidBodyParam15getContactLayerEv
|
||||||
0x0000007100fa1194,O,000028,_ZNK4ksys4phys14RigidBodyParam12getGroundHitEv
|
0x0000007100fa1194,O,000028,_ZNK4ksys4phys14RigidBodyParam12getGroundHitEv
|
||||||
0x0000007100fa11b0,O,000008,_ZNK4ksys4phys14RigidBodyParam13getMotionTypeEv
|
0x0000007100fa11b0,O,000008,_ZNK4ksys4phys14RigidBodyParam13getMotionTypeEv
|
||||||
|
|
Can't render this file because it is too large.
|
|
@ -302,6 +302,28 @@ RigidBodyParam::createRigidBody(SystemGroupHandler* group_handler, sead::Heap* h
|
||||||
return list_body;
|
return list_body;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RigidBody* RigidBodyParam::createEntityShapeBody(RigidBody* linked_body,
|
||||||
|
SystemGroupHandler* group_handler,
|
||||||
|
sead::Heap* heap) const {
|
||||||
|
auto* linked_shape_body = sead::DynamicCast<RigidBodyFromShape>(linked_body);
|
||||||
|
if (!linked_shape_body)
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
|
auto* body = RigidBodyFromShape::createEntityShapeBody(*info.rigid_body_name, getContactLayer(),
|
||||||
|
linked_shape_body, heap, group_handler);
|
||||||
|
if (!body)
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
|
body->setUpdateRequestedFlag();
|
||||||
|
body->setMaxLinearVelocity(*info.max_linear_velocity);
|
||||||
|
body->setMaxAngularVelocity(*info.max_angular_velocity_rad);
|
||||||
|
body->setCenterOfMassInLocal(*info.center_of_mass);
|
||||||
|
body->updateCollidableQualityType(*info.toi);
|
||||||
|
body->processUpdateRequests();
|
||||||
|
|
||||||
|
return body;
|
||||||
|
}
|
||||||
|
|
||||||
ContactLayer RigidBodyParam::getContactLayer() const {
|
ContactLayer RigidBodyParam::getContactLayer() const {
|
||||||
return contactLayerFromText(*info.layer);
|
return contactLayerFromText(*info.layer);
|
||||||
}
|
}
|
||||||
|
|
|
@ -168,8 +168,9 @@ struct RigidBodyParam : agl::utl::ParameterList {
|
||||||
SystemGroupHandler* group_handler, sead::Heap* heap,
|
SystemGroupHandler* group_handler, sead::Heap* heap,
|
||||||
CreateFixedBoxWithNoCollision no_collision = CreateFixedBoxWithNoCollision::No) const;
|
CreateFixedBoxWithNoCollision no_collision = CreateFixedBoxWithNoCollision::No) const;
|
||||||
|
|
||||||
// TODO: types and names
|
/// @param linked_body Must be a RigidBodyFromShape.
|
||||||
void* createEntityShape(void* x, void* y, sead::Heap* heap);
|
RigidBody* createEntityShapeBody(RigidBody* linked_body, SystemGroupHandler* group_handler,
|
||||||
|
sead::Heap* heap) const;
|
||||||
|
|
||||||
ContactLayer getContactLayer() const;
|
ContactLayer getContactLayer() const;
|
||||||
GroundHit getGroundHit() const;
|
GroundHit getGroundHit() const;
|
||||||
|
|
Loading…
Reference in New Issue