2024-10-28 15:57:39 +01:00
|
|
|
// Luanti
|
|
|
|
// SPDX-License-Identifier: LGPL-2.1-or-later
|
|
|
|
// Copyright (C) 2010-2018 nerzhul, Loic BLOT <loic.blot@unix-experience.fr>
|
2018-12-13 20:18:54 +01:00
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <functional>
|
|
|
|
#include <vector>
|
|
|
|
#include "../activeobjectmgr.h"
|
|
|
|
#include "clientobject.h"
|
|
|
|
|
|
|
|
namespace client
|
|
|
|
{
|
2023-10-09 17:13:04 +02:00
|
|
|
class ActiveObjectMgr final : public ::ActiveObjectMgr<ClientActiveObject>
|
2018-12-13 20:18:54 +01:00
|
|
|
{
|
|
|
|
public:
|
2023-10-09 17:13:04 +02:00
|
|
|
~ActiveObjectMgr() override;
|
|
|
|
|
2018-12-13 20:18:54 +01:00
|
|
|
void step(float dtime,
|
|
|
|
const std::function<void(ClientActiveObject *)> &f) override;
|
2023-10-09 17:13:04 +02:00
|
|
|
bool registerObject(std::unique_ptr<ClientActiveObject> obj) override;
|
2018-12-13 20:18:54 +01:00
|
|
|
void removeObject(u16 id) override;
|
|
|
|
|
|
|
|
void getActiveObjects(const v3f &origin, f32 max_d,
|
|
|
|
std::vector<DistanceSortedActiveObject> &dest);
|
2023-06-20 23:06:38 +03:00
|
|
|
|
|
|
|
/// Gets all CAOs whose selection boxes may intersect the @p shootline.
|
|
|
|
/// @note CAOs without a selection box are not returned.
|
|
|
|
/// @note Distances are along the @p shootline.
|
|
|
|
std::vector<DistanceSortedActiveObject> getActiveSelectableObjects(const core::line3d<f32> &shootline);
|
2018-12-13 20:18:54 +01:00
|
|
|
};
|
|
|
|
} // namespace client
|