#pragma once

#include "Entity.h"
#include "EntityType.h"

class ItemEntityType;

class ItemEntity : public Entity
{
private:
    ItemSlot* slot;

    ItemEntity(Framework::Vec3<float> location, int dimensionId, int entityId);

public:
    void prepareTick(const Dimension* zDimension) override;
    void tick(const Dimension* zDimension) override;

    void onFall(float collisionSpeed) override;
    bool hasDefaultModel() const override;
    ModelInfo getSpecialModel() const override;

    friend ItemEntityType;
};

class ItemEntityType : public EntityType
{
public:
    ItemEntityType();

    virtual Entity* createEntity(Framework::Vec3<float> position,
        int dimensionId,
        int entityId) const override;
};