Path: blob/master/thirdparty/jolt_physics/Jolt/Physics/Character/CharacterBase.cpp
9912 views
// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)1// SPDX-FileCopyrightText: 2021 Jorrit Rouwe2// SPDX-License-Identifier: MIT34#include <Jolt/Jolt.h>56#include <Jolt/Physics/Character/CharacterBase.h>7#include <Jolt/Physics/StateRecorder.h>89JPH_NAMESPACE_BEGIN1011CharacterBase::CharacterBase(const CharacterBaseSettings *inSettings, PhysicsSystem *inSystem) :12mSystem(inSystem),13mShape(inSettings->mShape),14mUp(inSettings->mUp),15mSupportingVolume(inSettings->mSupportingVolume)16{17// Initialize max slope angle18SetMaxSlopeAngle(inSettings->mMaxSlopeAngle);19}2021const char *CharacterBase::sToString(EGroundState inState)22{23switch (inState)24{25case EGroundState::OnGround: return "OnGround";26case EGroundState::OnSteepGround: return "OnSteepGround";27case EGroundState::NotSupported: return "NotSupported";28case EGroundState::InAir: return "InAir";29}3031JPH_ASSERT(false);32return "Unknown";33}3435void CharacterBase::SaveState(StateRecorder &inStream) const36{37inStream.Write(mGroundState);38inStream.Write(mGroundBodyID);39inStream.Write(mGroundBodySubShapeID);40inStream.Write(mGroundPosition);41inStream.Write(mGroundNormal);42inStream.Write(mGroundVelocity);43// Can't save user data (may be a pointer) and material44}4546void CharacterBase::RestoreState(StateRecorder &inStream)47{48inStream.Read(mGroundState);49inStream.Read(mGroundBodyID);50inStream.Read(mGroundBodySubShapeID);51inStream.Read(mGroundPosition);52inStream.Read(mGroundNormal);53inStream.Read(mGroundVelocity);54mGroundUserData = 0; // Cannot restore user data55mGroundMaterial = PhysicsMaterial::sDefault; // Cannot restore material56}5758JPH_NAMESPACE_END596061