aboutsummaryrefslogtreecommitdiff
path: root/core/bind/core_bind.h
diff options
context:
space:
mode:
Diffstat (limited to 'core/bind/core_bind.h')
-rw-r--r--core/bind/core_bind.h417
1 files changed, 417 insertions, 0 deletions
diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h
new file mode 100644
index 000000000..e47c9c434
--- /dev/null
+++ b/core/bind/core_bind.h
@@ -0,0 +1,417 @@
+#ifndef CORE_BIND_H
+#define CORE_BIND_H
+
+#include "io/resource_loader.h"
+#include "io/resource_saver.h"
+#include "os/file_access.h"
+#include "os/dir_access.h"
+#include "os/thread.h"
+#include "os/semaphore.h"
+
+
+class _ResourceLoader : public Object {
+ OBJ_TYPE(_ResourceLoader,Object);
+
+protected:
+
+ static void _bind_methods();
+ static _ResourceLoader *singleton;
+public:
+
+
+ static _ResourceLoader *get_singleton() { return singleton; }
+ Ref<ResourceInteractiveLoader> load_interactive(const String& p_path,const String& p_type_hint="");
+ RES load(const String &p_path,const String& p_type_hint="");
+ DVector<String> get_recognized_extensions_for_type(const String& p_type);
+ void set_abort_on_missing_resources(bool p_abort);
+ StringArray get_dependencies(const String& p_path);
+ bool has(const String& p_path);
+
+ _ResourceLoader();
+};
+
+class _ResourceSaver : public Object {
+ OBJ_TYPE(_ResourceSaver,Object);
+
+protected:
+
+ static void _bind_methods();
+ static _ResourceSaver *singleton;
+public:
+
+ static _ResourceSaver *get_singleton() { return singleton; }
+
+ Error save(const String &p_path,const RES& p_resource, uint32_t p_flags);
+ DVector<String> get_recognized_extensions(const RES& p_resource);
+
+
+ _ResourceSaver();
+};
+
+class MainLoop;
+
+class _OS : public Object {
+ OBJ_TYPE(_OS,Object);
+
+protected:
+
+ static void _bind_methods();
+ static _OS *singleton;
+public:
+
+ enum Weekday {
+ DAY_SUNDAY,
+ DAY_MONDAY,
+ DAY_TUESDAY,
+ DAY_WEDNESDAY,
+ DAY_THURSDAY,
+ DAY_FRIDAY,
+ DAY_SATURDAY
+ };
+
+ enum Month {
+ MONTH_JANUARY,
+ MONTH_FEBRUARY,
+ MONTH_MARCH,
+ MONTH_APRIL,
+ MONTH_MAY,
+ MONTH_JUNE,
+ MONTH_JULY,
+ MONTH_AUGUST,
+ MONTH_SEPTEMBER,
+ MONTH_OCTOBER,
+ MONTH_NOVEMBER,
+ MONTH_DECEMBER
+ };
+
+ Point2 get_mouse_pos() const;
+ void set_window_title(const String& p_title);
+ int get_mouse_button_state() const;
+
+
+ void set_clipboard(const String& p_text);
+ String get_clipboard() const;
+
+ void set_video_mode(const Size2& p_size, bool p_fullscreen,bool p_resizeable,int p_screen=0);
+ Size2 get_video_mode(int p_screen=0) const;
+ bool is_video_mode_fullscreen(int p_screen=0) const;
+ bool is_video_mode_resizable(int p_screen=0) const;
+ Array get_fullscreen_mode_list(int p_screen=0) const;
+
+ void set_iterations_per_second(int p_ips);
+ int get_iterations_per_second() const;
+
+ void set_low_processor_usage_mode(bool p_enabled);
+ bool is_in_low_processor_usage_mode() const;
+
+ String get_executable_path() const;
+ int execute(const String& p_path, const Vector<String> & p_arguments,bool p_blocking);
+ Error kill(int p_pid);
+ Error shell_open(String p_uri);
+
+ bool has_environment(const String& p_var) const;
+ String get_environment(const String& p_var) const;
+
+ String get_name() const;
+ Vector<String> get_cmdline_args();
+
+ String get_locale() const;
+ String get_model_name() const;
+ MainLoop *get_main_loop() const;
+
+ String get_custom_level() const;
+
+ float get_frames_per_second() const;
+
+ void dump_memory_to_file(const String& p_file);
+ void dump_resources_to_file(const String& p_file);
+
+ void print_resources_in_use(bool p_short=false);
+ void print_all_resources(const String& p_to_file);
+
+ bool has_touchscreen_ui_hint() const;
+
+ String get_unique_ID() const;
+
+ /*
+ struct Date {
+
+ int year;
+ Month month;
+ int day;
+ Weekday weekday;
+ bool dst;
+ };
+
+ struct Time {
+
+ int hour;
+ int min;
+ int sec;
+ };
+*/
+
+
+ void set_icon(const Image& p_icon);
+ Dictionary get_date() const;
+ Dictionary get_time() const;
+ uint64_t get_unix_time() const;
+
+ int get_static_memory_usage() const;
+ int get_static_memory_peak_usage() const;
+ int get_dynamic_memory_usage() const;
+
+ void delay_usec(uint32_t p_usec) const;
+ void delay_msec(uint32_t p_msec) const;
+ uint32_t get_ticks_msec() const;
+
+
+ bool can_draw() const;
+
+ int get_frames_drawn();
+
+ bool is_stdout_verbose() const;
+
+ int get_processor_count() const;
+
+ String get_data_dir() const;
+
+ static _OS *get_singleton() { return singleton; }
+
+ _OS();
+};
+
+class _Geometry : public Object {
+
+ OBJ_TYPE(_Geometry, Object);
+
+ static _Geometry *singleton;
+protected:
+
+ static void _bind_methods();
+public:
+
+ static _Geometry *get_singleton();
+ DVector<Plane> build_box_planes(const Vector3& p_extents);
+ DVector<Plane> build_cylinder_planes(float p_radius, float p_height, int p_sides, Vector3::Axis p_axis=Vector3::AXIS_Z);
+ DVector<Plane> build_capsule_planes(float p_radius, float p_height, int p_sides, int p_lats, Vector3::Axis p_axis=Vector3::AXIS_Z);
+ Variant segment_intersects_segment_2d(const Vector2& p_from_a,const Vector2& p_to_a,const Vector2& p_from_b,const Vector2& p_to_b);
+ DVector<Vector2> get_closest_points_between_segments_2d( const Vector2& p1,const Vector2& q1, const Vector2& p2,const Vector2& q2);
+ DVector<Vector3> get_closest_points_between_segments(const Vector3& p1,const Vector3& p2,const Vector3& q1,const Vector3& q2);
+ Vector3 get_closest_point_to_segment(const Vector3& p_point, const Vector3& p_a,const Vector3& p_b);
+ Variant ray_intersects_triangle( const Vector3& p_from, const Vector3& p_dir, const Vector3& p_v0,const Vector3& p_v1,const Vector3& p_v2);
+ Variant segment_intersects_triangle( const Vector3& p_from, const Vector3& p_to, const Vector3& p_v0,const Vector3& p_v1,const Vector3& p_v2);
+ DVector<Vector3> segment_intersects_sphere( const Vector3& p_from, const Vector3& p_to, const Vector3& p_sphere_pos,real_t p_sphere_radius);
+ DVector<Vector3> segment_intersects_cylinder( const Vector3& p_from, const Vector3& p_to, float p_height,float p_radius);
+ DVector<Vector3> segment_intersects_convex(const Vector3& p_from, const Vector3& p_to,const Vector<Plane>& p_planes);
+ real_t segment_intersects_circle(const Vector2& p_from, const Vector2& p_to, const Vector2& p_circle_pos, real_t p_circle_radius);
+
+ Vector<int> triangulate_polygon(const Vector<Vector2>& p_polygon);
+
+ _Geometry();
+};
+
+
+
+
+class _File : public Reference {
+
+ OBJ_TYPE(_File,Reference);
+ FileAccess *f;
+ bool eswap;
+protected:
+
+ static void _bind_methods();
+public:
+
+ enum ModeFlags {
+
+ READ=1,
+ WRITE=2,
+ READ_WRITE=3,
+ };
+
+ Error open(const String& p_path, int p_mode_flags); ///< open a file
+ void close(); ///< close a file
+ bool is_open() const; ///< true when file is open
+
+ void seek(int64_t p_position); ///< seek to a given position
+ void seek_end(int64_t p_position=0); ///< seek from the end of file
+ int64_t get_pos() const; ///< get position in the file
+ int64_t get_len() const; ///< get size of the file
+
+ bool eof_reached() const; ///< reading passed EOF
+
+ uint8_t get_8() const; ///< get a byte
+ uint16_t get_16() const; ///< get 16 bits uint
+ uint32_t get_32() const; ///< get 32 bits uint
+ uint64_t get_64() const; ///< get 64 bits uint
+
+ float get_float() const;
+ double get_double() const;
+ real_t get_real() const;
+
+ Variant get_var() const;
+
+ DVector<uint8_t> get_buffer(int p_length) const; ///< get an array of bytes
+ String get_line() const;
+ String get_as_text() const;
+
+ /**< use this for files WRITTEN in _big_ endian machines (ie, amiga/mac)
+ * It's not about the current CPU type but file formats.
+ * this flags get reset to false (little endian) on each open
+ */
+
+ void set_endian_swap(bool p_swap);
+ bool get_endian_swap();
+
+ Error get_error() const; ///< get last error
+
+ void store_8(uint8_t p_dest); ///< store a byte
+ void store_16(uint16_t p_dest); ///< store 16 bits uint
+ void store_32(uint32_t p_dest); ///< store 32 bits uint
+ void store_64(uint64_t p_dest); ///< store 64 bits uint
+
+ void store_float(float p_dest);
+ void store_double(double p_dest);
+ void store_real(real_t p_real);
+
+ void store_string(const String& p_string);
+ void store_line(const String& p_string);
+
+ Vector<String> get_csv_line() const;
+
+
+ void store_buffer(const DVector<uint8_t>& p_buffer); ///< store an array of bytes
+
+ void store_var(const Variant& p_var);
+
+ bool file_exists(const String& p_name) const; ///< return true if a file exists
+
+ _File();
+ virtual ~_File();
+
+};
+
+class _Directory : public Reference {
+
+ OBJ_TYPE(_Directory,Reference);
+ DirAccess *d;
+protected:
+
+ static void _bind_methods();
+public:
+
+ Error open(const String& p_path);
+
+ bool list_dir_begin(); ///< This starts dir listing
+ String get_next();
+ bool current_is_dir() const;
+
+ void list_dir_end(); ///<
+
+ int get_drive_count();
+ String get_drive(int p_drive);
+
+ Error change_dir(String p_dir); ///< can be relative or absolute, return false on success
+ String get_current_dir(); ///< return current dir location
+
+ Error make_dir(String p_dir);
+ Error make_dir_recursive(String p_dir);
+
+ bool file_exists(String p_file);
+
+ int get_space_left();
+
+ Error copy(String p_from,String p_to);
+ Error rename(String p_from, String p_to);
+ Error remove(String p_name);
+
+
+ _Directory();
+ virtual ~_Directory();
+
+};
+
+class _Marshalls : public Reference {
+
+ OBJ_TYPE(_Marshalls,Reference);
+
+protected:
+
+ static void _bind_methods();
+
+
+public:
+
+ String variant_to_base64(const Variant& p_var);
+ Variant base64_to_variant(const String& p_str);
+
+ _Marshalls() {};
+};
+
+
+class _Mutex : public Reference {
+
+ OBJ_TYPE(_Mutex,Reference);
+ Mutex *mutex;
+
+ static void _bind_methods();
+public:
+
+ void lock();
+ Error try_lock();
+ void unlock();
+
+ _Mutex();
+ ~_Mutex();
+};
+
+class _Semaphore : public Reference {
+
+ OBJ_TYPE(_Semaphore,Reference);
+ Semaphore *semaphore;
+
+ static void _bind_methods();
+public:
+
+ Error wait();
+ Error post();
+
+ _Semaphore();
+ ~_Semaphore();
+};
+
+class _Thread : public Reference {
+
+ OBJ_TYPE(_Thread,Reference);
+
+protected:
+
+ Variant ret;
+ Variant userdata;
+ volatile bool active;
+ Object *target_instance;
+ StringName target_method;
+ Thread *thread;
+ static void _bind_methods();
+ static void _start_func(void *ud);
+public:
+
+ enum Priority {
+
+ PRIORITY_LOW,
+ PRIORITY_NORMAL,
+ PRIORITY_HIGH
+ };
+
+ Error start(Object *p_instance,const StringName& p_method,const Variant& p_userdata=Variant(),int p_priority=PRIORITY_NORMAL);
+ String get_id() const;
+ bool is_active() const;
+ Variant wait_to_finish();
+
+ _Thread();
+ ~_Thread();
+};
+
+#endif // CORE_BIND_H