#ifndef OPENMW_COMPONENTS_RESOURCE_FOREACHBULLETOBJECT_H
#define OPENMW_COMPONENTS_RESOURCE_FOREACHBULLETOBJECT_H

#include <components/esm/defs.hpp>
#include <components/misc/convert.hpp>
#include <components/resource/bulletshape.hpp>

#include <osg/ref_ptr>

#include <functional>
#include <vector>

namespace ESM
{
    class ReadersCache;
    struct Cell;
}

namespace VFS
{
    class Manager;
}

namespace Resource
{
    class BulletShapeManager;
}

namespace EsmLoader
{
    struct EsmData;
}

namespace Resource
{
    struct BulletObject
    {
        osg::ref_ptr<const Resource::BulletShape> mShape;
        ESM::Position mPosition;
        float mScale;
    };

    void forEachBulletObject(ESM::ReadersCache& readers, const VFS::Manager& vfs,
        Resource::BulletShapeManager& bulletShapeManager, const EsmLoader::EsmData& esmData,
        std::function<void (const ESM::Cell&, const BulletObject& object)> callback);
}

#endif
