From 60e926a62f893b08990195e385134c91abf0b9b9 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Perrier Date: Wed, 7 Apr 2021 17:01:37 +0200 Subject: [PATCH] Serialize UpDirection. --- Source/Engine/Physics/Colliders/CharacterController.cpp | 5 +++++ Source/Engine/Physics/Colliders/CharacterController.h | 1 + 2 files changed, 6 insertions(+) diff --git a/Source/Engine/Physics/Colliders/CharacterController.cpp b/Source/Engine/Physics/Colliders/CharacterController.cpp index d13aca3b7..951f79d37 100644 --- a/Source/Engine/Physics/Colliders/CharacterController.cpp +++ b/Source/Engine/Physics/Colliders/CharacterController.cpp @@ -22,6 +22,7 @@ CharacterController::CharacterController(const SpawnParams& params) , _radius(50.0f) , _height(150.0f) , _minMoveDistance(0.0f) + , _upDirection(Vector3::Up) , _isUpdatingTransform(false) , _nonWalkableMode(CharacterController::NonWalkableModes::PreventClimbing) , _lastFlags(CollisionFlags::None) @@ -86,6 +87,7 @@ void CharacterController::SetUpDirection(const Vector3& up) { if (_controller) _controller->setUpDirection(C2P(up)); + _upDirection = up; } Vector3 CharacterController::GetUpDirection() const @@ -191,6 +193,7 @@ void CharacterController::CreateActor() // Create controller _controller = (PxCapsuleController*)Physics::GetControllerManager()->createController(desc); ASSERT(_controller); + _controller->setUpDirection(C2P(_upDirection)); const auto actor = _controller->getActor(); ASSERT(actor && actor->getNbShapes() == 1); actor->getShapes(&_shape, 1); @@ -374,6 +377,7 @@ void CharacterController::Serialize(SerializeStream& stream, const void* otherOb SERIALIZE_MEMBER(Radius, _radius); SERIALIZE_MEMBER(Height, _height); SERIALIZE_MEMBER(MinMoveDistance, _minMoveDistance); + SERIALIZE_MEMBER(UpDirection, _upDirection); } void CharacterController::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) @@ -387,4 +391,5 @@ void CharacterController::Deserialize(DeserializeStream& stream, ISerializeModif DESERIALIZE_MEMBER(Radius, _radius); DESERIALIZE_MEMBER(Height, _height); DESERIALIZE_MEMBER(MinMoveDistance, _minMoveDistance); + DESERIALIZE_MEMBER(UpDirection, _upDirection); } diff --git a/Source/Engine/Physics/Colliders/CharacterController.h b/Source/Engine/Physics/Colliders/CharacterController.h index 5f0faa793..712ab6296 100644 --- a/Source/Engine/Physics/Colliders/CharacterController.h +++ b/Source/Engine/Physics/Colliders/CharacterController.h @@ -65,6 +65,7 @@ private: float _height; float _minMoveDistance; bool _isUpdatingTransform; + Vector3 _upDirection; NonWalkableModes _nonWalkableMode; CollisionFlags _lastFlags; uint32 _filterData[4];