83 lines
2.8 KiB
C++
83 lines
2.8 KiB
C++
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
|
|
|
|
#include "PhysicsSettings.h"
|
|
#include "Engine/Serialization/Serialization.h"
|
|
#include "Physics.h"
|
|
|
|
void PhysicsSettings::Apply()
|
|
{
|
|
// Set simulation parameters
|
|
Physics::SetGravity(DefaultGravity);
|
|
Physics::SetBounceThresholdVelocity(BounceThresholdVelocity);
|
|
Physics::SetEnableCCD(!DisableCCD);
|
|
|
|
// TODO: setting eADAPTIVE_FORCE requires PxScene setup (physx docs: This flag is not mutable, and must be set in PxSceneDesc at scene creation.)
|
|
|
|
// Update all shapes
|
|
|
|
// TODO: update all shapes filter data
|
|
// TODO: update all shapes flags
|
|
|
|
/*
|
|
{
|
|
get all actors and then:
|
|
|
|
const PxU32 numShapes = actor->getNbShapes();
|
|
PxShape** shapes = (PxShape**)SAMPLE_ALLOC(sizeof(PxShape*)*numShapes);
|
|
actor->getShapes(shapes, numShapes);
|
|
for (PxU32 i = 0; i < numShapes; i++)
|
|
{
|
|
..
|
|
}
|
|
SAMPLE_FREE(shapes);
|
|
}*/
|
|
}
|
|
|
|
void PhysicsSettings::RestoreDefault()
|
|
{
|
|
DefaultGravity = PhysicsSettings_DefaultGravity;
|
|
TriangleMeshTriangleMinAreaThreshold = PhysicsSettings_TriangleMeshTriangleMinAreaThreshold;
|
|
BounceThresholdVelocity = PhysicsSettings_BounceThresholdVelocity;
|
|
FrictionCombineMode = PhysicsSettings_FrictionCombineMode;
|
|
RestitutionCombineMode = PhysicsSettings_RestitutionCombineMode;
|
|
DisableCCD = PhysicsSettings_DisableCCD;
|
|
EnableAdaptiveForce = PhysicsSettings_EnableAdaptiveForce;
|
|
MaxDeltaTime = PhysicsSettings_MaxDeltaTime;
|
|
EnableSubstepping = PhysicsSettings_EnableSubstepping;
|
|
SubstepDeltaTime = PhysicsSettings_SubstepDeltaTime;
|
|
MaxSubsteps = PhysicsSettings_MaxSubsteps;
|
|
QueriesHitTriggers = PhysicsSettings_QueriesHitTriggers;
|
|
SupportCookingAtRuntime = PhysicsSettings_SupportCookingAtRuntime;
|
|
|
|
for (int32 i = 0; i < 32; i++)
|
|
LayerMasks[i] = MAX_uint32;
|
|
}
|
|
|
|
void PhysicsSettings::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
|
|
{
|
|
DESERIALIZE(DefaultGravity);
|
|
DESERIALIZE(TriangleMeshTriangleMinAreaThreshold);
|
|
DESERIALIZE(BounceThresholdVelocity);
|
|
DESERIALIZE(FrictionCombineMode);
|
|
DESERIALIZE(RestitutionCombineMode);
|
|
DESERIALIZE(DisableCCD);
|
|
DESERIALIZE(EnableAdaptiveForce);
|
|
DESERIALIZE(MaxDeltaTime);
|
|
DESERIALIZE(EnableSubstepping);
|
|
DESERIALIZE(SubstepDeltaTime);
|
|
DESERIALIZE(MaxSubsteps);
|
|
DESERIALIZE(QueriesHitTriggers);
|
|
DESERIALIZE(SupportCookingAtRuntime);
|
|
|
|
const auto layers = stream.FindMember("LayerMasks");
|
|
if (layers != stream.MemberEnd())
|
|
{
|
|
auto& layersArray = layers->value;
|
|
ASSERT(layersArray.IsArray());
|
|
for (uint32 i = 0; i < layersArray.Size() && i < 32; i++)
|
|
{
|
|
LayerMasks[i] = layersArray[i].GetUint();
|
|
}
|
|
}
|
|
}
|