Program Listing for File prism_pent_mesh.h
↰ Return to documentation for file (src/prism_impl/prism_pent_mesh.h)
#pragma once
#include "core/pent_mesh.h" // for PentMesh, PentagonMeshParams
#include "core/tile_mesh.h" // for TileMesh
#include "core/utils.h"
#include "misc/types.h"
#include "primitives/pentagon.h" // for Pentagon
#include "tal/reference.h" // for Ref
#include "tal/wrapped.h"
namespace sota {
struct PrismPentMeshParams {
PentagonMeshParams pent_mesh_params;
float height{0.0};
};
class PrismPentMesh : public PentMesh {
GDCLASS(PrismPentMesh, PentMesh)
public:
PrismPentMesh() = default; // existence is 'must' for Godot
PrismPentMesh(const PrismPentMesh& other) = delete;
PrismPentMesh(PrismPentMesh&& other) = delete;
// copying operator= defined inside GDCLASS
PrismPentMesh& operator=(PrismPentMesh&& rhs) = delete;
void set_height(const float p_height);
float get_height() const;
PrismPentMesh(Pentagon pentagon, PrismPentMeshParams params);
protected:
static void _bind_methods();
void init_impl() override;
private:
float _height{0.0};
};
class PrismPentTile : public TileMesh {
GDCLASS(PrismPentTile, TileMesh)
public:
PrismPentTile() = default; // required by godot
int get_id() override { return _prism_pent_mesh->get_id(); }
PentMesh* inner_mesh() const override { return _prism_pent_mesh.ptr(); }
PrismPentTile(Pentagon pentagon, PrismPentMeshParams params)
: _prism_pent_mesh(Ref<PrismPentMesh>(memnew(PrismPentMesh(pentagon, params)))) {
_prism_pent_mesh->init();
}
protected:
static void _bind_methods() {}
private:
Ref<PrismPentMesh> _prism_pent_mesh;
};
} // namespace sota