Files
2025-09-18 17:55:52 -04:00

68 lines
1.7 KiB
C++

#pragma once
#include "V8World/RigidJoint.h"
namespace RBX {
class WeldJoint : public RigidJoint
{
private:
///////////////////////////////////////////////////
// Joint
/*override*/ virtual JointType getJointType() const {return WELD_JOINT;}
///////////////////////////////////////////////////
// WeldJoint
static bool compatibleSurfaces(
Primitive* p0,
Primitive* p1,
NormalId nId0,
NormalId nId1);
public:
WeldJoint() {}
WeldJoint(Primitive* prim0, Primitive* prim1, const CoordinateFrame& c0, const CoordinateFrame &c1)
: RigidJoint(prim0, prim1, c0, c1)
{}
virtual ~WeldJoint() {}
static WeldJoint* canBuildJoint(
Primitive* p0,
Primitive* p1,
NormalId nId0,
NormalId nId1);
};
class ManualWeldJoint : public WeldJoint
{
private:
size_t surface0; // surface from primitive 0
size_t surface1; // surface from primitive 1
/*override*/ virtual JointType getJointType() const {return MANUAL_WELD_JOINT;}
public:
ManualWeldJoint() {surface0 = (size_t)-1; surface1 = (size_t)-1;}
ManualWeldJoint(size_t s0, size_t s1, Primitive* prim0, Primitive* prim1, const CoordinateFrame& c0, const CoordinateFrame &c1)
: WeldJoint(prim0, prim1, c0, c1)
{surface0 = s0; surface1 = s1;}
~ManualWeldJoint() {}
size_t getSurface0(void) const {return surface0;}
size_t getSurface1(void) const {return surface1;}
void setSurface0(size_t surfId) {surface0 = surfId;}
void setSurface1(size_t surfId) {surface1 = surfId;}
Vector3int16 getCell() const;
void setCell(const Vector3int16& pos);
static bool isTouchingTerrain(Primitive* terrain, Primitive* prim);
};
} // namespace