mirror of
https://github.com/zeldaret/botw
synced 2026-07-13 15:04:42 -04:00
53 lines
1.5 KiB
C++
53 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include "KingSystem/Physics/System/physShapeCast.h"
|
|
#include "KingSystem/Physics/System/physSystem.h"
|
|
#include "KingSystem/Physics/physDefines.h"
|
|
|
|
namespace ksys::phys {
|
|
|
|
class SphereRigidBody;
|
|
class SystemGroupHandler;
|
|
|
|
class ShapeCastWithInfo : public ShapeCast {
|
|
SEAD_RTTI_OVERRIDE(ShapeCastWithInfo, ShapeCast)
|
|
public:
|
|
ShapeCastWithInfo(RigidBody* body, int num_contact_points, Mode mode,
|
|
const sead::SafeString& name, LowPriority low_priority);
|
|
ShapeCastWithInfo(RigidBody* body, QueryContactPointInfo* contact_point_info, Mode mode);
|
|
|
|
~ShapeCastWithInfo() override;
|
|
|
|
bool executeQuery(WeldClosestPoints weld_closest_points) override;
|
|
|
|
protected:
|
|
enum class Status {
|
|
_0 = 0,
|
|
_1 = 1,
|
|
_2 = 2,
|
|
_3 = 3,
|
|
};
|
|
|
|
void doCast(const hkpLinearCastInput& input, hkpCdPointCollector& cast_collector,
|
|
hkpCdPointCollector* start_collector) override;
|
|
|
|
Status mStatus = Status::_0;
|
|
};
|
|
|
|
class SphereCast : public ShapeCastWithInfo {
|
|
SEAD_RTTI_OVERRIDE(SphereCast, ShapeCastWithInfo)
|
|
public:
|
|
SphereCast(ContactLayer layer, GroundHit ground_hit, SystemGroupHandler* group_handler,
|
|
int num_contact_points, Mode mode, const sead::Vector3f& from, float sphere_radius,
|
|
const sead::SafeString& name, LowPriority low_priority);
|
|
|
|
~SphereCast() override;
|
|
|
|
void setRadius(float radius);
|
|
|
|
private:
|
|
SphereRigidBody* mSphere;
|
|
};
|
|
|
|
} // namespace ksys::phys
|