Fix build issues

This commit is contained in:
Wojtek Figat
2022-06-13 23:37:11 +02:00
parent 4967b27ff7
commit b815ba51a5
12 changed files with 142 additions and 7 deletions

View File

@@ -665,3 +665,30 @@ struct TIsPODType<Int2>
};
DEFINE_DEFAULT_FORMATTING(Int2, "X:{0} Y:{1}", v.X, v.Y);
#if !defined(_MSC_VER) || defined(__clang__)
// Forward specializations for Clang
template<> FLAXENGINE_API const Float2 Float2::Zero;
template<> FLAXENGINE_API const Float2 Float2::One;
template<> FLAXENGINE_API const Float2 Float2::UnitX;
template<> FLAXENGINE_API const Float2 Float2::UnitY;
template<> FLAXENGINE_API const Float2 Float2::Minimum;
template<> FLAXENGINE_API const Float2 Float2::Maximum;
template<> FLAXENGINE_API ScriptingTypeInitializer Float2::TypeInitializer;
template<> FLAXENGINE_API const Double2 Double2::Zero;
template<> FLAXENGINE_API const Double2 Double2::One;
template<> FLAXENGINE_API const Double2 Double2::UnitX;
template<> FLAXENGINE_API const Double2 Double2::UnitY;
template<> FLAXENGINE_API const Double2 Double2::Minimum;
template<> FLAXENGINE_API const Double2 Double2::Maximum;
template<> FLAXENGINE_API ScriptingTypeInitializer Double2::TypeInitializer;
template<> FLAXENGINE_API const Int2 Int2::Zero;
template<> FLAXENGINE_API const Int2 Int2::One;
template<> FLAXENGINE_API const Int2 Int2::UnitX;
template<> FLAXENGINE_API const Int2 Int2::UnitY;
template<> FLAXENGINE_API const Int2 Int2::Minimum;
template<> FLAXENGINE_API const Int2 Int2::Maximum;
template<> FLAXENGINE_API ScriptingTypeInitializer Int2::TypeInitializer;
#endif

View File

@@ -932,3 +932,54 @@ struct TIsPODType<Int3>
};
DEFINE_DEFAULT_FORMATTING(Int3, "X:{0} Y:{1} Z:{2}", v.X, v.Y, v.Z);
#if !defined(_MSC_VER) || defined(__clang__)
// Forward specializations for Clang
template<> FLAXENGINE_API const Float3 Float3::Zero;
template<> FLAXENGINE_API const Float3 Float3::One;
template<> FLAXENGINE_API const Float3 Float3::Half;
template<> FLAXENGINE_API const Float3 Float3::UnitX;
template<> FLAXENGINE_API const Float3 Float3::UnitY;
template<> FLAXENGINE_API const Float3 Float3::UnitZ;
template<> FLAXENGINE_API const Float3 Float3::Up;
template<> FLAXENGINE_API const Float3 Float3::Down;
template<> FLAXENGINE_API const Float3 Float3::Left;
template<> FLAXENGINE_API const Float3 Float3::Right;
template<> FLAXENGINE_API const Float3 Float3::Forward;
template<> FLAXENGINE_API const Float3 Float3::Backward;
template<> FLAXENGINE_API const Float3 Float3::Minimum;
template<> FLAXENGINE_API const Float3 Float3::Maximum;
template<> FLAXENGINE_API ScriptingTypeInitializer Float3::TypeInitializer;
template<> FLAXENGINE_API const Double3 Double3::Zero;
template<> FLAXENGINE_API const Double3 Double3::One;
template<> FLAXENGINE_API const Double3 Double3::Half;
template<> FLAXENGINE_API const Double3 Double3::UnitX;
template<> FLAXENGINE_API const Double3 Double3::UnitY;
template<> FLAXENGINE_API const Double3 Double3::UnitZ;
template<> FLAXENGINE_API const Double3 Double3::Up;
template<> FLAXENGINE_API const Double3 Double3::Down;
template<> FLAXENGINE_API const Double3 Double3::Left;
template<> FLAXENGINE_API const Double3 Double3::Right;
template<> FLAXENGINE_API const Double3 Double3::Forward;
template<> FLAXENGINE_API const Double3 Double3::Backward;
template<> FLAXENGINE_API const Double3 Double3::Minimum;
template<> FLAXENGINE_API const Double3 Double3::Maximum;
template<> FLAXENGINE_API ScriptingTypeInitializer Double3::TypeInitializer;
template<> FLAXENGINE_API const Int3 Int3::Zero;
template<> FLAXENGINE_API const Int3 Int3::One;
template<> FLAXENGINE_API const Int3 Int3::Half;
template<> FLAXENGINE_API const Int3 Int3::UnitX;
template<> FLAXENGINE_API const Int3 Int3::UnitY;
template<> FLAXENGINE_API const Int3 Int3::UnitZ;
template<> FLAXENGINE_API const Int3 Int3::Up;
template<> FLAXENGINE_API const Int3 Int3::Down;
template<> FLAXENGINE_API const Int3 Int3::Left;
template<> FLAXENGINE_API const Int3 Int3::Right;
template<> FLAXENGINE_API const Int3 Int3::Forward;
template<> FLAXENGINE_API const Int3 Int3::Backward;
template<> FLAXENGINE_API const Int3 Int3::Minimum;
template<> FLAXENGINE_API const Int3 Int3::Maximum;
template<> FLAXENGINE_API ScriptingTypeInitializer Int3::TypeInitializer;
#endif

View File

@@ -581,3 +581,36 @@ struct TIsPODType<Int4>
};
DEFINE_DEFAULT_FORMATTING(Int4, "X:{0} Y:{1} Z:{2} W:{3}", v.X, v.Y, v.Z, v.W);
#if !defined(_MSC_VER) || defined(__clang__)
// Forward specializations for Clang
template<> FLAXENGINE_API const Float4 Float4::Zero;
template<> FLAXENGINE_API const Float4 Float4::One;
template<> FLAXENGINE_API const Float4 Float4::UnitX;
template<> FLAXENGINE_API const Float4 Float4::UnitY;
template<> FLAXENGINE_API const Float4 Float4::UnitZ;
template<> FLAXENGINE_API const Float4 Float4::UnitW;
template<> FLAXENGINE_API const Float4 Float4::Minimum;
template<> FLAXENGINE_API const Float4 Float4::Maximum;
template<> FLAXENGINE_API ScriptingTypeInitializer Float4::TypeInitializer;
template<> FLAXENGINE_API const Double4 Double4::Zero;
template<> FLAXENGINE_API const Double4 Double4::One;
template<> FLAXENGINE_API const Double4 Double4::UnitX;
template<> FLAXENGINE_API const Double4 Double4::UnitY;
template<> FLAXENGINE_API const Double4 Double4::UnitZ;
template<> FLAXENGINE_API const Double4 Double4::UnitW;
template<> FLAXENGINE_API const Double4 Double4::Minimum;
template<> FLAXENGINE_API const Double4 Double4::Maximum;
template<> FLAXENGINE_API ScriptingTypeInitializer Double4::TypeInitializer;
template<> FLAXENGINE_API const Int4 Int4::Zero;
template<> FLAXENGINE_API const Int4 Int4::One;
template<> FLAXENGINE_API const Int4 Int4::UnitX;
template<> FLAXENGINE_API const Int4 Int4::UnitY;
template<> FLAXENGINE_API const Int4 Int4::UnitZ;
template<> FLAXENGINE_API const Int4 Int4::UnitW;
template<> FLAXENGINE_API const Int4 Int4::Minimum;
template<> FLAXENGINE_API const Int4 Int4::Maximum;
template<> FLAXENGINE_API ScriptingTypeInitializer Int4::TypeInitializer;
#endif

View File

@@ -1999,7 +1999,10 @@ bool PhysicsBackend::ComputeShapesPenetration(void* shapeA, void* shapeB, const
auto shapeBPhysX = (PxShape*)shapeB;
const PxTransform poseA(C2P(positionA), C2P(orientationA));
const PxTransform poseB(C2P(positionB), C2P(orientationB));
return PxGeometryQuery::computePenetration(C2P(direction), distance, shapeAPhysX->getGeometry().any(), poseA, shapeBPhysX->getGeometry().any(), poseB);
PxVec3 dir = C2P(direction);
const bool result = PxGeometryQuery::computePenetration(dir, distance, shapeAPhysX->getGeometry().any(), poseA, shapeBPhysX->getGeometry().any(), poseB);
direction = P2C(dir);
return result;
}
float PhysicsBackend::ComputeShapeSqrDistanceToPoint(void* shape, const Vector3& position, const Quaternion& orientation, const Vector3& point, Vector3* closestPoint)
@@ -2063,7 +2066,12 @@ void PhysicsBackend::GetJointForce(void* joint, Vector3& linear, Vector3& angula
{
auto jointPhysX = (PxJoint*)joint;
if (jointPhysX->getConstraint())
jointPhysX->getConstraint()->getForce(*(PxVec3*)&linear, *(PxVec3*)&angular);
{
PxVec3 linearPhysX = C2P(linear), angularPhysX = C2P(angular);
jointPhysX->getConstraint()->getForce(linearPhysX, angularPhysX);
linear = P2C(linearPhysX);
angular = P2C(angularPhysX);
}
}
void* PhysicsBackend::CreateFixedJoint(const PhysicsJointDesc& desc)

View File

@@ -784,11 +784,11 @@ namespace
{
// Hack for Vector2/3/4 which alias with Float2/3/4 or Double2/3/4 (depending on USE_LARGE_WORLDS)
const auto& stdTypes = *StdTypesContainer::Instance();
if (monoClass == stdTypes.Vector2Class->GetNative() && type.Type == VariantType::Float2 || type.Type == VariantType::Double2)
if (monoClass == stdTypes.Vector2Class->GetNative() && (type.Type == VariantType::Float2 || type.Type == VariantType::Double2))
return true;
if (monoClass == stdTypes.Vector3Class->GetNative() && type.Type == VariantType::Float3 || type.Type == VariantType::Double3)
if (monoClass == stdTypes.Vector3Class->GetNative() && (type.Type == VariantType::Float3 || type.Type == VariantType::Double3))
return true;
if (monoClass == stdTypes.Vector4Class->GetNative() && type.Type == VariantType::Float4 || type.Type == VariantType::Double4)
if (monoClass == stdTypes.Vector4Class->GetNative() && (type.Type == VariantType::Float4 || type.Type == VariantType::Double4))
return true;
return false;