Merge branch 'refac-coll-serialization' of https://github.com/Tryibion/FlaxEngine into Tryibion-refac-coll-serialization
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
|
||||
|
||||
#include "BoxCollider.h"
|
||||
#include "Engine/Serialization/Serialization.h"
|
||||
#include "Engine/Physics/PhysicsBackend.h"
|
||||
|
||||
BoxCollider::BoxCollider(const SpawnParams& params)
|
||||
@@ -116,24 +115,6 @@ bool BoxCollider::IntersectsItself(const Ray& ray, Real& distance, Vector3& norm
|
||||
return _bounds.Intersects(ray, distance, normal);
|
||||
}
|
||||
|
||||
void BoxCollider::Serialize(SerializeStream& stream, const void* otherObj)
|
||||
{
|
||||
// Base
|
||||
Collider::Serialize(stream, otherObj);
|
||||
|
||||
SERIALIZE_GET_OTHER_OBJ(BoxCollider);
|
||||
|
||||
SERIALIZE_MEMBER(Size, _size);
|
||||
}
|
||||
|
||||
void BoxCollider::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
|
||||
{
|
||||
// Base
|
||||
Collider::Deserialize(stream, modifier);
|
||||
|
||||
DESERIALIZE_MEMBER(Size, _size);
|
||||
}
|
||||
|
||||
void BoxCollider::UpdateBounds()
|
||||
{
|
||||
// Cache bounds
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Colliders/Box Collider\"), ActorToolbox(\"Physics\")")
|
||||
class FLAXENGINE_API BoxCollider : public Collider
|
||||
{
|
||||
API_AUTO_SERIALIZATION();
|
||||
DECLARE_SCENE_OBJECT(BoxCollider);
|
||||
private:
|
||||
Float3 _size;
|
||||
@@ -49,8 +50,6 @@ public:
|
||||
void OnDebugDrawSelected() override;
|
||||
#endif
|
||||
bool IntersectsItself(const Ray& ray, Real& distance, Vector3& normal) override;
|
||||
void Serialize(SerializeStream& stream, const void* otherObj) override;
|
||||
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override;
|
||||
|
||||
protected:
|
||||
// [Collider]
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
|
||||
|
||||
#include "CapsuleCollider.h"
|
||||
#include "Engine/Serialization/Serialization.h"
|
||||
|
||||
CapsuleCollider::CapsuleCollider(const SpawnParams& params)
|
||||
: Collider(params)
|
||||
@@ -81,26 +80,6 @@ bool CapsuleCollider::IntersectsItself(const Ray& ray, Real& distance, Vector3&
|
||||
return _orientedBox.Intersects(ray, distance, normal);
|
||||
}
|
||||
|
||||
void CapsuleCollider::Serialize(SerializeStream& stream, const void* otherObj)
|
||||
{
|
||||
// Base
|
||||
Collider::Serialize(stream, otherObj);
|
||||
|
||||
SERIALIZE_GET_OTHER_OBJ(CapsuleCollider);
|
||||
|
||||
SERIALIZE_MEMBER(Radius, _radius);
|
||||
SERIALIZE_MEMBER(Height, _height);
|
||||
}
|
||||
|
||||
void CapsuleCollider::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
|
||||
{
|
||||
// Base
|
||||
Collider::Deserialize(stream, modifier);
|
||||
|
||||
DESERIALIZE_MEMBER(Radius, _radius);
|
||||
DESERIALIZE_MEMBER(Height, _height);
|
||||
}
|
||||
|
||||
void CapsuleCollider::UpdateBounds()
|
||||
{
|
||||
// Cache bounds
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Colliders/Capsule Collider\"), ActorToolbox(\"Physics\")")
|
||||
class FLAXENGINE_API CapsuleCollider : public Collider
|
||||
{
|
||||
API_AUTO_SERIALIZATION();
|
||||
DECLARE_SCENE_OBJECT(CapsuleCollider);
|
||||
private:
|
||||
float _radius;
|
||||
@@ -58,8 +59,6 @@ public:
|
||||
void OnDebugDrawSelected() override;
|
||||
#endif
|
||||
bool IntersectsItself(const Ray& ray, Real& distance, Vector3& normal) override;
|
||||
void Serialize(SerializeStream& stream, const void* otherObj) override;
|
||||
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override;
|
||||
|
||||
protected:
|
||||
// [Collider]
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include "Engine/Physics/Physics.h"
|
||||
#include "Engine/Physics/PhysicsBackend.h"
|
||||
#include "Engine/Physics/PhysicsScene.h"
|
||||
#include "Engine/Serialization/Serialization.h"
|
||||
#include "Engine/Engine/Time.h"
|
||||
|
||||
#define CC_MIN_SIZE 0.001f
|
||||
@@ -387,33 +386,3 @@ void CharacterController::OnPhysicsSceneChanged(PhysicsScene* previous)
|
||||
DeleteController();
|
||||
CreateController();
|
||||
}
|
||||
|
||||
void CharacterController::Serialize(SerializeStream& stream, const void* otherObj)
|
||||
{
|
||||
// Base
|
||||
Collider::Serialize(stream, otherObj);
|
||||
|
||||
SERIALIZE_GET_OTHER_OBJ(CharacterController);
|
||||
|
||||
SERIALIZE_MEMBER(StepOffset, _stepOffset);
|
||||
SERIALIZE_MEMBER(SlopeLimit, _slopeLimit);
|
||||
SERIALIZE_MEMBER(NonWalkableMode, _nonWalkableMode);
|
||||
SERIALIZE_MEMBER(Radius, _radius);
|
||||
SERIALIZE_MEMBER(Height, _height);
|
||||
SERIALIZE_MEMBER(MinMoveDistance, _minMoveDistance);
|
||||
SERIALIZE_MEMBER(UpDirection, _upDirection);
|
||||
}
|
||||
|
||||
void CharacterController::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
|
||||
{
|
||||
// Base
|
||||
Collider::Deserialize(stream, modifier);
|
||||
|
||||
DESERIALIZE_MEMBER(StepOffset, _stepOffset);
|
||||
DESERIALIZE_MEMBER(SlopeLimit, _slopeLimit);
|
||||
DESERIALIZE_MEMBER(NonWalkableMode, _nonWalkableMode);
|
||||
DESERIALIZE_MEMBER(Radius, _radius);
|
||||
DESERIALIZE_MEMBER(Height, _height);
|
||||
DESERIALIZE_MEMBER(MinMoveDistance, _minMoveDistance);
|
||||
DESERIALIZE_MEMBER(UpDirection, _upDirection);
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Character Controller\"), ActorToolbox(\"Physics\")")
|
||||
class FLAXENGINE_API CharacterController : public Collider, public IPhysicsActor
|
||||
{
|
||||
API_AUTO_SERIALIZATION();
|
||||
DECLARE_SCENE_OBJECT(CharacterController);
|
||||
public:
|
||||
/// <summary>
|
||||
@@ -198,8 +199,6 @@ public:
|
||||
#if USE_EDITOR
|
||||
void OnDebugDrawSelected() override;
|
||||
#endif
|
||||
void Serialize(SerializeStream& stream, const void* otherObj) override;
|
||||
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override;
|
||||
void CreateShape() override;
|
||||
void UpdateBounds() override;
|
||||
void AddMovement(const Vector3& translation, const Quaternion& rotation) override;
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#if USE_EDITOR
|
||||
#include "Engine/Level/Scene/SceneRendering.h"
|
||||
#endif
|
||||
#include "Engine/Serialization/Serialization.h"
|
||||
#include "Engine/Physics/PhysicsSettings.h"
|
||||
#include "Engine/Physics/Physics.h"
|
||||
#include "Engine/Physics/PhysicsBackend.h"
|
||||
@@ -292,30 +291,6 @@ void Collider::OnMaterialChanged()
|
||||
PhysicsBackend::SetShapeMaterial(_shape, Material.Get());
|
||||
}
|
||||
|
||||
void Collider::Serialize(SerializeStream& stream, const void* otherObj)
|
||||
{
|
||||
// Base
|
||||
PhysicsColliderActor::Serialize(stream, otherObj);
|
||||
|
||||
SERIALIZE_GET_OTHER_OBJ(Collider);
|
||||
|
||||
SERIALIZE_MEMBER(IsTrigger, _isTrigger);
|
||||
SERIALIZE_MEMBER(Center, _center);
|
||||
SERIALIZE_MEMBER(ContactOffset, _contactOffset);
|
||||
SERIALIZE(Material);
|
||||
}
|
||||
|
||||
void Collider::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
|
||||
{
|
||||
// Base
|
||||
PhysicsColliderActor::Deserialize(stream, modifier);
|
||||
|
||||
DESERIALIZE_MEMBER(IsTrigger, _isTrigger);
|
||||
DESERIALIZE_MEMBER(Center, _center);
|
||||
DESERIALIZE_MEMBER(ContactOffset, _contactOffset);
|
||||
DESERIALIZE(Material);
|
||||
}
|
||||
|
||||
void Collider::BeginPlay(SceneBeginData* data)
|
||||
{
|
||||
// Check if has no shape created (it means no rigidbody requested it but also collider may be spawned at runtime)
|
||||
|
||||
@@ -17,6 +17,7 @@ class RigidBody;
|
||||
/// <seealso cref="PhysicsColliderActor" />
|
||||
API_CLASS(Abstract) class FLAXENGINE_API Collider : public PhysicsColliderActor
|
||||
{
|
||||
API_AUTO_SERIALIZATION();
|
||||
DECLARE_SCENE_OBJECT_ABSTRACT(Collider);
|
||||
protected:
|
||||
Vector3 _center;
|
||||
@@ -196,8 +197,6 @@ private:
|
||||
|
||||
public:
|
||||
// [PhysicsColliderActor]
|
||||
void Serialize(SerializeStream& stream, const void* otherObj) override;
|
||||
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override;
|
||||
RigidBody* GetAttachedRigidBody() const override;
|
||||
|
||||
protected:
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
#include "MeshCollider.h"
|
||||
#include "Engine/Core/Math/Matrix.h"
|
||||
#include "Engine/Core/Math/Ray.h"
|
||||
#include "Engine/Serialization/Serialization.h"
|
||||
#include "Engine/Physics/Physics.h"
|
||||
#include "Engine/Physics/PhysicsScene.h"
|
||||
#if USE_EDITOR || !BUILD_RELEASE
|
||||
@@ -117,24 +116,6 @@ bool MeshCollider::IntersectsItself(const Ray& ray, Real& distance, Vector3& nor
|
||||
return _box.Intersects(ray, distance, normal);
|
||||
}
|
||||
|
||||
void MeshCollider::Serialize(SerializeStream& stream, const void* otherObj)
|
||||
{
|
||||
// Base
|
||||
Collider::Serialize(stream, otherObj);
|
||||
|
||||
SERIALIZE_GET_OTHER_OBJ(MeshCollider);
|
||||
|
||||
SERIALIZE(CollisionData);
|
||||
}
|
||||
|
||||
void MeshCollider::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
|
||||
{
|
||||
// Base
|
||||
Collider::Deserialize(stream, modifier);
|
||||
|
||||
DESERIALIZE(CollisionData);
|
||||
}
|
||||
|
||||
void MeshCollider::UpdateBounds()
|
||||
{
|
||||
// Cache bounds
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Colliders/Mesh Collider\"), ActorToolbox(\"Physics\")")
|
||||
class FLAXENGINE_API MeshCollider : public Collider
|
||||
{
|
||||
API_AUTO_SERIALIZATION();
|
||||
DECLARE_SCENE_OBJECT(MeshCollider);
|
||||
public:
|
||||
/// <summary>
|
||||
@@ -33,8 +34,6 @@ public:
|
||||
void OnDebugDrawSelected() override;
|
||||
#endif
|
||||
bool IntersectsItself(const Ray& ray, Real& distance, Vector3& normal) override;
|
||||
void Serialize(SerializeStream& stream, const void* otherObj) override;
|
||||
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override;
|
||||
|
||||
protected:
|
||||
// [Collider]
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
|
||||
|
||||
#include "SphereCollider.h"
|
||||
#include "Engine/Serialization/Serialization.h"
|
||||
|
||||
SphereCollider::SphereCollider(const SpawnParams& params)
|
||||
: Collider(params)
|
||||
@@ -58,24 +57,6 @@ bool SphereCollider::IntersectsItself(const Ray& ray, Real& distance, Vector3& n
|
||||
return _sphere.Intersects(ray, distance, normal);
|
||||
}
|
||||
|
||||
void SphereCollider::Serialize(SerializeStream& stream, const void* otherObj)
|
||||
{
|
||||
// Base
|
||||
Collider::Serialize(stream, otherObj);
|
||||
|
||||
SERIALIZE_GET_OTHER_OBJ(SphereCollider);
|
||||
|
||||
SERIALIZE_MEMBER(Radius, _radius);
|
||||
}
|
||||
|
||||
void SphereCollider::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
|
||||
{
|
||||
// Base
|
||||
Collider::Deserialize(stream, modifier);
|
||||
|
||||
DESERIALIZE_MEMBER(Radius, _radius);
|
||||
}
|
||||
|
||||
void SphereCollider::UpdateBounds()
|
||||
{
|
||||
// Cache bounds
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
API_CLASS(Attributes="ActorContextMenu(\"New/Physics/Colliders/Sphere Collider\"), ActorToolbox(\"Physics\")")
|
||||
class FLAXENGINE_API SphereCollider : public Collider
|
||||
{
|
||||
API_AUTO_SERIALIZATION();
|
||||
DECLARE_SCENE_OBJECT(SphereCollider);
|
||||
private:
|
||||
float _radius;
|
||||
@@ -38,8 +39,6 @@ public:
|
||||
void OnDebugDrawSelected() override;
|
||||
#endif
|
||||
bool IntersectsItself(const Ray& ray, Real& distance, Vector3& normal) override;
|
||||
void Serialize(SerializeStream& stream, const void* otherObj) override;
|
||||
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override;
|
||||
|
||||
protected:
|
||||
// [Collider]
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include "Engine/Core/Math/Matrix.h"
|
||||
#include "Engine/Core/Math/Ray.h"
|
||||
#include "Engine/Level/Actors/Spline.h"
|
||||
#include "Engine/Serialization/Serialization.h"
|
||||
#include "Engine/Physics/Physics.h"
|
||||
#include "Engine/Physics/PhysicsBackend.h"
|
||||
#include "Engine/Physics/PhysicsScene.h"
|
||||
@@ -124,26 +123,6 @@ bool SplineCollider::IntersectsItself(const Ray& ray, Real& distance, Vector3& n
|
||||
return _box.Intersects(ray, distance, normal);
|
||||
}
|
||||
|
||||
void SplineCollider::Serialize(SerializeStream& stream, const void* otherObj)
|
||||
{
|
||||
// Base
|
||||
Collider::Serialize(stream, otherObj);
|
||||
|
||||
SERIALIZE_GET_OTHER_OBJ(SplineCollider);
|
||||
|
||||
SERIALIZE(CollisionData);
|
||||
SERIALIZE_MEMBER(PreTransform, _preTransform)
|
||||
}
|
||||
|
||||
void SplineCollider::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
|
||||
{
|
||||
// Base
|
||||
Collider::Deserialize(stream, modifier);
|
||||
|
||||
DESERIALIZE(CollisionData);
|
||||
DESERIALIZE_MEMBER(PreTransform, _preTransform);
|
||||
}
|
||||
|
||||
void SplineCollider::OnParentChanged()
|
||||
{
|
||||
if (_spline)
|
||||
|
||||
@@ -15,6 +15,7 @@ class Spline;
|
||||
/// <seealso cref="Spline" />
|
||||
API_CLASS() class FLAXENGINE_API SplineCollider : public Collider
|
||||
{
|
||||
API_AUTO_SERIALIZATION();
|
||||
DECLARE_SCENE_OBJECT(SplineCollider);
|
||||
private:
|
||||
Spline* _spline = nullptr;
|
||||
@@ -61,8 +62,6 @@ public:
|
||||
void OnDebugDrawSelected() override;
|
||||
#endif
|
||||
bool IntersectsItself(const Ray& ray, Real& distance, Vector3& normal) override;
|
||||
void Serialize(SerializeStream& stream, const void* otherObj) override;
|
||||
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override;
|
||||
void OnParentChanged() override;
|
||||
void EndPlay() override;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user