Make thin wrappers non-copyable
This commit is contained in:
parent
541af4a4ad
commit
35b7108d0b
@ -84,18 +84,6 @@ Ref<Mesh> DirectMeshInstance::get_mesh() const {
|
|||||||
return _mesh;
|
return _mesh;
|
||||||
}
|
}
|
||||||
|
|
||||||
// void DirectMeshInstance::set_use_baked_light(bool enable) {
|
|
||||||
// ERR_FAIL_COND(!_mesh_instance.is_valid());
|
|
||||||
// RenderingServer &vs = *RenderingServer::get_singleton();
|
|
||||||
// vs.instance_geometry_set_flag(_mesh_instance, RenderingServer::INSTANCE_FLAG_USE_BAKED_LIGHT, true);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// void DirectMeshInstance::set_use_dynamic_gi(bool enable) {
|
|
||||||
// ERR_FAIL_COND(!_mesh_instance.is_valid());
|
|
||||||
// RenderingServer &vs = *RenderingServer::get_singleton();
|
|
||||||
// vs.instance_geometry_set_flag(_mesh_instance, RenderingServer::INSTANCE_FLAG_USE_DYNAMIC_GI, true);
|
|
||||||
// }
|
|
||||||
|
|
||||||
void DirectMeshInstance::set_gi_mode(GIMode mode) {
|
void DirectMeshInstance::set_gi_mode(GIMode mode) {
|
||||||
ERR_FAIL_COND(!_mesh_instance.is_valid());
|
ERR_FAIL_COND(!_mesh_instance.is_valid());
|
||||||
RenderingServer &vs = *RenderingServer::get_singleton();
|
RenderingServer &vs = *RenderingServer::get_singleton();
|
||||||
@ -123,3 +111,13 @@ void DirectMeshInstance::set_gi_mode(GIMode mode) {
|
|||||||
vs.instance_geometry_set_flag(_mesh_instance, RenderingServer::INSTANCE_FLAG_USE_BAKED_LIGHT, baked_light);
|
vs.instance_geometry_set_flag(_mesh_instance, RenderingServer::INSTANCE_FLAG_USE_BAKED_LIGHT, baked_light);
|
||||||
vs.instance_geometry_set_flag(_mesh_instance, RenderingServer::INSTANCE_FLAG_USE_DYNAMIC_GI, dynamic_gi);
|
vs.instance_geometry_set_flag(_mesh_instance, RenderingServer::INSTANCE_FLAG_USE_DYNAMIC_GI, dynamic_gi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// void DirectMeshInstance::move_to(DirectMeshInstance &dst) {
|
||||||
|
// dst.destroy();
|
||||||
|
|
||||||
|
// dst._mesh_instance = _mesh_instance;
|
||||||
|
// dst._mesh = _mesh;
|
||||||
|
|
||||||
|
// _mesh_instance = RID();
|
||||||
|
// _mesh.unref();
|
||||||
|
// }
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
#ifndef DIRECT_MESH_INSTANCE_H
|
#ifndef DIRECT_MESH_INSTANCE_H
|
||||||
#define DIRECT_MESH_INSTANCE_H
|
#define DIRECT_MESH_INSTANCE_H
|
||||||
|
|
||||||
|
#include "../non_copyable.h"
|
||||||
#include <core/templates/rid.h>
|
#include <core/templates/rid.h>
|
||||||
#include <scene/resources/mesh.h>
|
#include <scene/resources/mesh.h>
|
||||||
|
|
||||||
class World3D;
|
class World3D;
|
||||||
|
|
||||||
// Thin wrapper around VisualServer mesh instance API
|
// Thin wrapper around VisualServer mesh instance API
|
||||||
class DirectMeshInstance {
|
class DirectMeshInstance : public zylann::NonCopyable {
|
||||||
public:
|
public:
|
||||||
DirectMeshInstance();
|
DirectMeshInstance();
|
||||||
~DirectMeshInstance();
|
~DirectMeshInstance();
|
||||||
@ -21,8 +22,6 @@ public:
|
|||||||
void set_material_override(Ref<Material> material);
|
void set_material_override(Ref<Material> material);
|
||||||
void set_visible(bool visible);
|
void set_visible(bool visible);
|
||||||
void set_cast_shadows_setting(RenderingServer::ShadowCastingSetting mode);
|
void set_cast_shadows_setting(RenderingServer::ShadowCastingSetting mode);
|
||||||
// void set_use_baked_light(bool enable);
|
|
||||||
// void set_use_dynamic_gi(bool enable);
|
|
||||||
|
|
||||||
// Convenience
|
// Convenience
|
||||||
enum GIMode { //
|
enum GIMode { //
|
||||||
@ -36,6 +35,8 @@ public:
|
|||||||
|
|
||||||
Ref<Mesh> get_mesh() const;
|
Ref<Mesh> get_mesh() const;
|
||||||
|
|
||||||
|
// void move_to(DirectMeshInstance &dst);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RID _mesh_instance;
|
RID _mesh_instance;
|
||||||
Ref<Mesh> _mesh;
|
Ref<Mesh> _mesh;
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#define DIRECT_MULTIMESH_INSTANCE_H
|
#define DIRECT_MULTIMESH_INSTANCE_H
|
||||||
|
|
||||||
#include "../math/color8.h"
|
#include "../math/color8.h"
|
||||||
|
#include "../non_copyable.h"
|
||||||
#include "../span.h"
|
#include "../span.h"
|
||||||
|
|
||||||
#include <core/templates/rid.h>
|
#include <core/templates/rid.h>
|
||||||
@ -10,7 +11,7 @@
|
|||||||
class World3D;
|
class World3D;
|
||||||
|
|
||||||
// Thin wrapper around VisualServer multimesh instance API
|
// Thin wrapper around VisualServer multimesh instance API
|
||||||
class DirectMultiMeshInstance {
|
class DirectMultiMeshInstance : public zylann::NonCopyable {
|
||||||
public:
|
public:
|
||||||
DirectMultiMeshInstance();
|
DirectMultiMeshInstance();
|
||||||
~DirectMultiMeshInstance();
|
~DirectMultiMeshInstance();
|
||||||
@ -33,14 +34,16 @@ public:
|
|||||||
Color8 color;
|
Color8 color;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void make_transform_and_color8_3d_bulk_array(Span<const TransformAndColor8> data, PackedFloat32Array &bulk_array);
|
static void make_transform_and_color8_3d_bulk_array(
|
||||||
|
Span<const TransformAndColor8> data, PackedFloat32Array &bulk_array);
|
||||||
|
|
||||||
struct TransformAndColor32 {
|
struct TransformAndColor32 {
|
||||||
Transform3D transform;
|
Transform3D transform;
|
||||||
Color color;
|
Color color;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void make_transform_and_color32_3d_bulk_array(Span<const TransformAndColor32> data, PackedFloat32Array &bulk_array);
|
static void make_transform_and_color32_3d_bulk_array(
|
||||||
|
Span<const TransformAndColor32> data, PackedFloat32Array &bulk_array);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RID _multimesh_instance;
|
RID _multimesh_instance;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#ifndef DIRECT_STATIC_BODY_H
|
#ifndef DIRECT_STATIC_BODY_H
|
||||||
#define DIRECT_STATIC_BODY_H
|
#define DIRECT_STATIC_BODY_H
|
||||||
|
|
||||||
|
#include "../non_copyable.h"
|
||||||
#include "direct_mesh_instance.h"
|
#include "direct_mesh_instance.h"
|
||||||
|
|
||||||
#include <core/templates/rid.h>
|
#include <core/templates/rid.h>
|
||||||
@ -9,7 +10,7 @@
|
|||||||
class World3D;
|
class World3D;
|
||||||
|
|
||||||
// Thin wrapper around static body API
|
// Thin wrapper around static body API
|
||||||
class DirectStaticBody {
|
class DirectStaticBody : public zylann::NonCopyable {
|
||||||
public:
|
public:
|
||||||
DirectStaticBody();
|
DirectStaticBody();
|
||||||
~DirectStaticBody();
|
~DirectStaticBody();
|
||||||
|
17
util/non_copyable.h
Normal file
17
util/non_copyable.h
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#ifndef ZYLANN_NON_COPYABLE_H
|
||||||
|
#define ZYLANN_NON_COPYABLE_H
|
||||||
|
|
||||||
|
namespace zylann {
|
||||||
|
|
||||||
|
class NonCopyable {
|
||||||
|
protected:
|
||||||
|
NonCopyable() = default;
|
||||||
|
~NonCopyable() = default;
|
||||||
|
|
||||||
|
NonCopyable(NonCopyable const &) = delete;
|
||||||
|
void operator=(NonCopyable const &x) = delete;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace zylann
|
||||||
|
|
||||||
|
#endif // ZYLANN_NON_COPYABLE_H
|
Loading…
x
Reference in New Issue
Block a user