mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2024-12-27 06:07:14 +01:00
200 lines
6.3 KiB
C++
200 lines
6.3 KiB
C++
|
|
||
|
#ifndef TERRAIN_DEFINES_H
|
||
|
#define TERRAIN_DEFINES_H
|
||
|
|
||
|
#include "core/version.h"
|
||
|
|
||
|
#if VERSION_MAJOR >= 4
|
||
|
#define GODOT4 true
|
||
|
#endif
|
||
|
|
||
|
//includes
|
||
|
#if GODOT4
|
||
|
#define core_input_h "core/input/input_event.h"
|
||
|
#define spatial_editor_plugin_h "editor/plugins/node_3d_editor_plugin.h"
|
||
|
#define camera_h "scene/3d/camera_3d.h"
|
||
|
#define spatial_h "scene/3d/node_3d.h"
|
||
|
#define navigation_h "scene/3d/node_3d.h"
|
||
|
#define Navigation3D Node3D
|
||
|
#define light_h "scene/3d/light_3d.h"
|
||
|
#define visual_server_h "servers/rendering_server.h"
|
||
|
#define mesh_instance_h "scene/3d/mesh_instance_3d.h"
|
||
|
#define pool_vector_h "core/templates/vector.h"
|
||
|
#define physics_server_h "servers/physics_server_3d.h"
|
||
|
#define immediate_geometry_h "scene/3d/immediate_geometry_3d.h"
|
||
|
#define include_pool_vector \
|
||
|
template <class N> \
|
||
|
class Vector; \
|
||
|
template <class N> \
|
||
|
using PoolVector = Vector<N>;
|
||
|
#else
|
||
|
#define core_input_h "core/os/input.h"
|
||
|
#define spatial_editor_plugin_h "editor/plugins/spatial_editor_plugin.h"
|
||
|
#define camera_h "scene/3d/camera.h"
|
||
|
#define spatial_h "scene/3d/spatial.h"
|
||
|
#define navigation_h "scene/3d/navigation.h"
|
||
|
#define light_h "scene/3d/light.h"
|
||
|
#define visual_server_h "servers/visual_server.h"
|
||
|
#define mesh_instance_h "scene/3d/mesh_instance.h"
|
||
|
#define pool_vector_h "core/pool_vector.h"
|
||
|
#define physics_server_h "servers/physics_server.h"
|
||
|
#define immediate_geometry_h "scene/3d/immediate_geometry.h"
|
||
|
#define include_pool_vector
|
||
|
#endif
|
||
|
|
||
|
//Type Defines
|
||
|
#if GODOT4
|
||
|
#define PhysicsDirectSpaceState PhysicsDirectSpaceState3D
|
||
|
#define SpatialEditor Node3DEditor
|
||
|
#define SpatialEditorPlugin Node3DEditorPlugin
|
||
|
#define SpatialEditorViewport Node3DEditorViewport
|
||
|
#define PoolStringArray PackedStringArray
|
||
|
#define REAL FLOAT
|
||
|
#define POOL_STRING_ARRAY PACKED_STRING_ARRAY
|
||
|
#define POOL_BYTE_ARRAY PACKED_BYTE_ARRAY
|
||
|
#define Spatial Node3D
|
||
|
#define SpatialMaterial StandardMaterial3D
|
||
|
#define PoolVector3Array PackedVector3Array
|
||
|
#define PoolVector2Array PackedVector2Array
|
||
|
#define PoolColorArray PackedColorArray
|
||
|
#define PoolIntArray PackedInt64Array
|
||
|
#define PoolRealArray PackedFloat32Array
|
||
|
#define PoolByteArray PackedByteArray
|
||
|
#define MeshInstance MeshInstance3D
|
||
|
#define Camera Camera3D
|
||
|
#define ToolButton Button
|
||
|
#define Shape Shape3D
|
||
|
#define Reference RefCounted
|
||
|
|
||
|
typedef class World3D World;
|
||
|
|
||
|
#define DirectionalLight DirectionalLight3D
|
||
|
|
||
|
typedef class ImmediateGeometry3D ImmediateGeometry;
|
||
|
typedef class Navigation3D Navigation;
|
||
|
typedef class PhysicsServer3D PhysicsServer;
|
||
|
typedef class RenderingServer VisualServer;
|
||
|
typedef class RenderingServer VS;
|
||
|
//typedef class StandardMaterial3D SpatialMaterial;
|
||
|
|
||
|
//toodo figure out a way to have this
|
||
|
//#define Variant::CallError Callable::CallError
|
||
|
#endif
|
||
|
|
||
|
#if GODOT4
|
||
|
|
||
|
#define VARIANT_ARRAY_GET(arr) \
|
||
|
Vector<Variant> r; \
|
||
|
for (int i = 0; i < arr.size(); i++) { \
|
||
|
r.push_back(arr[i]); \
|
||
|
} \
|
||
|
return r;
|
||
|
|
||
|
#else
|
||
|
|
||
|
#define VARIANT_ARRAY_GET(arr) \
|
||
|
Vector<Variant> r; \
|
||
|
for (int i = 0; i < arr.size(); i++) { \
|
||
|
r.push_back(arr[i].get_ref_ptr()); \
|
||
|
} \
|
||
|
return r;
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#define VARIANT_ARRAY_SET(arr, arr_into, type) \
|
||
|
arr_into.clear(); \
|
||
|
for (int i = 0; i < arr.size(); i++) { \
|
||
|
Ref<type> e = Ref<type>(arr[i]); \
|
||
|
arr_into.push_back(e); \
|
||
|
}
|
||
|
|
||
|
#if GODOT4
|
||
|
//TODO do this properly
|
||
|
#define INSTANCE_VALIDATE(var) var
|
||
|
#define CONNECT(sig, obj, target_method_class, method) connect(sig, callable_mp(obj, &target_method_class::method))
|
||
|
#define DISCONNECT(sig, obj, target_method_class, method) disconnect(sig, callable_mp(obj, &target_method_class::method))
|
||
|
#define GET_WORLD get_world_3d
|
||
|
#define INSTANCE instantiate
|
||
|
#define VREMOVE remove_at
|
||
|
|
||
|
#define CALL(func, ...) \
|
||
|
_gdvirtual_##func##_call(__VA_ARGS__)
|
||
|
|
||
|
#define RETURN_CALL(ret_type, func) \
|
||
|
ret_type _return_call_ret_var; \
|
||
|
_gdvirtual_##func##_call(_return_call_ret_var); \
|
||
|
return _return_call_ret_var;
|
||
|
|
||
|
#define RETURN_CALLP(ret_type, func, ...) \
|
||
|
ret_type _return_call_ret_var; \
|
||
|
_gdvirtual_##func##_call(__VA_ARGS__, _return_call_ret_var); \
|
||
|
return _return_call_ret_var;
|
||
|
|
||
|
#define GET_CALL(ret_type, ret_var, func) \
|
||
|
_gdvirtual_##func##_call(ret_var);
|
||
|
|
||
|
#define GET_CALLP(ret_type, ret_var, func, ...) \
|
||
|
_gdvirtual_##func##_call(__VA_ARGS__, ret_var);
|
||
|
|
||
|
#define RETURN_CALLD(ret_type, def_val, func) \
|
||
|
ret_type _return_call_ret_var = def_val; \
|
||
|
if (_gdvirtual_##func##_call(_return_call_ret_var)) { \
|
||
|
return _return_call_ret_var; \
|
||
|
} \
|
||
|
return def_val;
|
||
|
|
||
|
#define RETURN_CALLPD(ret_type, def_val, func, ...) \
|
||
|
ret_type _return_call_ret_var = def_val; \
|
||
|
if (_gdvirtual_##func##_call(__VA_ARGS__, _return_call_ret_var)) { \
|
||
|
return _return_call_ret_var; \
|
||
|
} \
|
||
|
return def_val;
|
||
|
|
||
|
#define GET_CALLD(ret_type, def_val, ret_var, func) \
|
||
|
if (!_gdvirtual_##func##_call(ret_var)) { \
|
||
|
ret_var = def_val; \
|
||
|
}
|
||
|
|
||
|
#define GET_CALLPD(ret_type, def_val, ret_var, func, ...) \
|
||
|
if (!_gdvirtual_##func##_call(__VA_ARGS__, ret_var)) { \
|
||
|
ret_var = def_val; \
|
||
|
}
|
||
|
|
||
|
#else
|
||
|
#define INSTANCE_VALIDATE(var) ObjectDB::instance_validate(var)
|
||
|
#define CONNECT(sig, obj, target_method_class, method) connect(sig, obj, #method)
|
||
|
#define DISCONNECT(sig, obj, target_method_class, method) disconnect(sig, obj, #method)
|
||
|
#define GET_WORLD get_world
|
||
|
#define INSTANCE instance
|
||
|
#define VREMOVE remove
|
||
|
|
||
|
#define CALL(func, ...) \
|
||
|
call(#func, ##__VA_ARGS__);
|
||
|
|
||
|
#define RETURN_CALL(ret_type, func) \
|
||
|
return call(#func);
|
||
|
|
||
|
#define RETURN_CALLP(ret_type, func, ...) \
|
||
|
return call(#func, ##__VA_ARGS__);
|
||
|
|
||
|
#define GET_CALL(ret_type, ret_var, func) \
|
||
|
ret_var = call(#func);
|
||
|
|
||
|
#define GET_CALLP(ret_type, ret_var, func, ...) \
|
||
|
ret_var = call(#func, ##__VA_ARGS__);
|
||
|
|
||
|
#define RETURN_CALLD(ret_type, def_val, func) \
|
||
|
return call(#func);
|
||
|
|
||
|
#define RETURN_CALLPD(ret_type, def_val, func, ...) \
|
||
|
return call(#func, ##__VA_ARGS__);
|
||
|
|
||
|
#define GET_CALLD(ret_type, def_val, ret_var, func) \
|
||
|
ret_var = call(#func);
|
||
|
|
||
|
#define GET_CALLPD(ret_type, def_val, ret_var, func, ...) \
|
||
|
return call(#func, ##__VA_ARGS__);
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#endif
|