// Darkflame Universe
// Copyright 2024

#ifndef RIGIDBODYPHANTOMPHYSICS_H
#define RIGIDBODYPHANTOMPHYSICS_H

#include "BitStream.h"
#include "dCommonVars.h"
#include "NiPoint3.h"
#include "NiQuaternion.h"
#include "PhysicsComponent.h"
#include "eReplicaComponentType.h"

class dpEntity;

 /**
  * Component that handles rigid bodies that can be interacted with, mostly client-side rendered. An example is the
  * bananas that fall from trees in GF.
  */
class RigidbodyPhantomPhysicsComponent : public PhysicsComponent {
public:
	static constexpr eReplicaComponentType ComponentType = eReplicaComponentType::RIGID_BODY_PHANTOM_PHYSICS;

	RigidbodyPhantomPhysicsComponent(Entity* parent, int32_t componentId);

	void Update(const float deltaTime) override;

	void Serialize(RakNet::BitStream& outBitStream, bool bIsInitialUpdate) override;

	void SpawnVertices() const;
private:
	float m_Scale{};

	dpEntity* m_dpEntity{};
};

#endif // RIGIDBODYPHANTOMPHYSICS_H