// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
#pragma once
#include "Engine/Level/Actor.h"
#include "Engine/Physics/Types.h"
#include "IPhysicsActor.h"
///
/// A base class for all physical actors.
///
///
API_CLASS(Abstract) class FLAXENGINE_API PhysicsActor : public Actor, public IPhysicsActor
{
DECLARE_SCENE_OBJECT_ABSTRACT(PhysicsActor);
protected:
Vector3 _cachedScale;
bool _isUpdatingTransform;
public:
///
/// Gets the native PhysX actor object.
///
/// The PhysX actor.
virtual PxActor* GetPhysXActor() = 0;
///
/// Updates the bounding box.
///
void UpdateBounds();
public:
// [Actor]
bool IntersectsItself(const Ray& ray, float& distance, Vector3& normal) override;
// [IPhysicsActor]
void OnActiveTransformChanged(const PxTransform& transform) override;
protected:
// [Actor]
void OnTransformChanged() override;
};