| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | /*************************************************************************/ | 
					
						
							|  |  |  | /*  grid_map.h                                                           */ | 
					
						
							|  |  |  | /*************************************************************************/ | 
					
						
							|  |  |  | /*                       This file is part of:                           */ | 
					
						
							|  |  |  | /*                           GODOT ENGINE                                */ | 
					
						
							| 
									
										
										
										
											2017-08-27 14:16:55 +02:00
										 |  |  | /*                      https://godotengine.org                          */ | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | /*************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-01 14:40:08 +01:00
										 |  |  | /* Copyright (c) 2007-2018 Juan Linietsky, Ariel Manzur.                 */ | 
					
						
							|  |  |  | /* Copyright (c) 2014-2018 Godot Engine contributors (cf. AUTHORS.md)    */ | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | /*                                                                       */ | 
					
						
							|  |  |  | /* Permission is hereby granted, free of charge, to any person obtaining */ | 
					
						
							|  |  |  | /* a copy of this software and associated documentation files (the       */ | 
					
						
							|  |  |  | /* "Software"), to deal in the Software without restriction, including   */ | 
					
						
							|  |  |  | /* without limitation the rights to use, copy, modify, merge, publish,   */ | 
					
						
							|  |  |  | /* distribute, sublicense, and/or sell copies of the Software, and to    */ | 
					
						
							|  |  |  | /* permit persons to whom the Software is furnished to do so, subject to */ | 
					
						
							|  |  |  | /* the following conditions:                                             */ | 
					
						
							|  |  |  | /*                                                                       */ | 
					
						
							|  |  |  | /* The above copyright notice and this permission notice shall be        */ | 
					
						
							|  |  |  | /* included in all copies or substantial portions of the Software.       */ | 
					
						
							|  |  |  | /*                                                                       */ | 
					
						
							|  |  |  | /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */ | 
					
						
							|  |  |  | /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */ | 
					
						
							|  |  |  | /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ | 
					
						
							|  |  |  | /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */ | 
					
						
							|  |  |  | /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */ | 
					
						
							|  |  |  | /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */ | 
					
						
							|  |  |  | /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */ | 
					
						
							|  |  |  | /*************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-05 00:50:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | #ifndef GRID_MAP_H
 | 
					
						
							|  |  |  | #define GRID_MAP_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-20 21:19:05 +03:00
										 |  |  | #include "scene/3d/navigation.h"
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | #include "scene/3d/spatial.h"
 | 
					
						
							|  |  |  | #include "scene/resources/mesh_library.h"
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | #include "scene/resources/multimesh.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //heh heh, godotsphir!! this shares no code and the design is completely different with previous projects i've done..
 | 
					
						
							|  |  |  | //should scale better with hardware that supports instancing
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class GridMap : public Spatial { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 	GDCLASS(GridMap, Spatial); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	enum { | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 		MAP_DIRTY_TRANSFORMS = 1, | 
					
						
							|  |  |  | 		MAP_DIRTY_INSTANCES = 2, | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	union IndexKey { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		struct { | 
					
						
							|  |  |  | 			int16_t x; | 
					
						
							|  |  |  | 			int16_t y; | 
					
						
							|  |  |  | 			int16_t z; | 
					
						
							|  |  |  | 		}; | 
					
						
							|  |  |  | 		uint64_t key; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 		_FORCE_INLINE_ bool operator<(const IndexKey &p_key) const { | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 			return key < p_key.key; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 		IndexKey() { key = 0; } | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-20 21:19:05 +03:00
										 |  |  | 	/**
 | 
					
						
							|  |  |  | 	 * @brief A Cell is a single cell in the cube map space; it is defined by its coordinates and the populating Item, identified by int id. | 
					
						
							|  |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	union Cell { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		struct { | 
					
						
							|  |  |  | 			unsigned int item : 16; | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 			unsigned int rot : 5; | 
					
						
							|  |  |  | 			unsigned int layer : 8; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 		}; | 
					
						
							|  |  |  | 		uint32_t cell; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 		Cell() { | 
					
						
							|  |  |  | 			item = 0; | 
					
						
							|  |  |  | 			rot = 0; | 
					
						
							|  |  |  | 			layer = 0; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-20 21:19:05 +03:00
										 |  |  | 	/**
 | 
					
						
							|  |  |  | 	 * @brief An Octant is a prism containing Cells, and possibly belonging to an Area. | 
					
						
							|  |  |  | 	 * A GridMap can have multiple Octants. | 
					
						
							|  |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	struct Octant { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-20 21:19:05 +03:00
										 |  |  | 		struct NavMesh { | 
					
						
							|  |  |  | 			int id; | 
					
						
							|  |  |  | 			Transform xform; | 
					
						
							|  |  |  | 		}; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-27 16:00:59 -03:00
										 |  |  | 		struct MultimeshInstance { | 
					
						
							|  |  |  | 			RID instance; | 
					
						
							|  |  |  | 			RID multimesh; | 
					
						
							|  |  |  | 			struct Item { | 
					
						
							|  |  |  | 				int index; | 
					
						
							|  |  |  | 				Transform transform; | 
					
						
							|  |  |  | 				IndexKey key; | 
					
						
							|  |  |  | 			}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			Vector<Item> items; //tools only, for changing visibility
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 		}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-27 16:00:59 -03:00
										 |  |  | 		Vector<MultimeshInstance> multimesh_instances; | 
					
						
							|  |  |  | 		Set<IndexKey> cells; | 
					
						
							| 
									
										
										
										
											2015-09-20 13:03:46 -03:00
										 |  |  | 		RID collision_debug; | 
					
						
							|  |  |  | 		RID collision_debug_instance; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		bool dirty; | 
					
						
							|  |  |  | 		RID static_body; | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 		Map<IndexKey, NavMesh> navmesh_ids; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	union OctantKey { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		struct { | 
					
						
							|  |  |  | 			int16_t x; | 
					
						
							|  |  |  | 			int16_t y; | 
					
						
							|  |  |  | 			int16_t z; | 
					
						
							| 
									
										
										
										
											2017-08-26 00:40:45 -03:00
										 |  |  | 			int16_t empty; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 		}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		uint64_t key; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 		_FORCE_INLINE_ bool operator<(const OctantKey &p_key) const { | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 			return key < p_key.key; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		//OctantKey(const IndexKey& p_k, int p_item) { indexkey=p_k.key; item=p_item; }
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 		OctantKey() { key = 0; } | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-28 16:13:45 +01:00
										 |  |  | 	uint32_t collision_layer; | 
					
						
							|  |  |  | 	uint32_t collision_mask; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	Transform last_transform; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	bool _in_tree; | 
					
						
							| 
									
										
										
										
											2017-08-27 16:00:59 -03:00
										 |  |  | 	Vector3 cell_size; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	int octant_size; | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 	bool center_x, center_y, center_z; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	float cell_scale; | 
					
						
							| 
									
										
										
										
											2016-04-20 21:19:05 +03:00
										 |  |  | 	Navigation *navigation; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	bool clip; | 
					
						
							|  |  |  | 	bool clip_above; | 
					
						
							|  |  |  | 	int clip_floor; | 
					
						
							| 
									
										
										
										
											2017-12-18 00:34:48 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	bool recreating_octants; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	Vector3::Axis clip_axis; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	Ref<MeshLibrary> theme; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 	Map<OctantKey, Octant *> octant_map; | 
					
						
							|  |  |  | 	Map<IndexKey, Cell> cell_map; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void _recreate_octant_data(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	struct BakeLight { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		VS::LightType type; | 
					
						
							|  |  |  | 		Vector3 pos; | 
					
						
							|  |  |  | 		Vector3 dir; | 
					
						
							|  |  |  | 		float param[VS::LIGHT_PARAM_MAX]; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	_FORCE_INLINE_ Vector3 _octant_get_offset(const OctantKey &p_key) const { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 		return Vector3(p_key.x, p_key.y, p_key.z) * cell_size * octant_size; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-28 16:13:45 +01:00
										 |  |  | 	void _reset_physic_bodies_collision_filters(); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void _octant_enter_world(const OctantKey &p_key); | 
					
						
							|  |  |  | 	void _octant_exit_world(const OctantKey &p_key); | 
					
						
							| 
									
										
										
										
											2017-08-27 16:00:59 -03:00
										 |  |  | 	bool _octant_update(const OctantKey &p_key); | 
					
						
							|  |  |  | 	void _octant_clean_up(const OctantKey &p_key); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void _octant_transform(const OctantKey &p_key); | 
					
						
							|  |  |  | 	bool awaiting_update; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-27 16:00:59 -03:00
										 |  |  | 	void _queue_octants_dirty(); | 
					
						
							|  |  |  | 	void _update_octants_callback(); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 	void resource_changed(const RES &p_res); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-26 00:40:45 -03:00
										 |  |  | 	void _clear_internal(); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-07 12:30:58 +01:00
										 |  |  | 	Vector3 _get_offset() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-15 18:23:16 -03:00
										 |  |  | 	struct BakedMesh { | 
					
						
							|  |  |  | 		Ref<Mesh> mesh; | 
					
						
							| 
									
										
										
										
											2017-12-18 00:34:48 -03:00
										 |  |  | 		RID instance; | 
					
						
							| 
									
										
										
										
											2017-12-15 18:23:16 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-18 00:34:48 -03:00
										 |  |  | 	Vector<BakedMesh> baked_meshes; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | protected: | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 	bool _set(const StringName &p_name, const Variant &p_value); | 
					
						
							|  |  |  | 	bool _get(const StringName &p_name, Variant &r_ret) const; | 
					
						
							|  |  |  | 	void _get_property_list(List<PropertyInfo> *p_list) const; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void _notification(int p_what); | 
					
						
							| 
									
										
										
										
											2017-09-04 21:52:44 +01:00
										 |  |  | 	void _update_visibility(); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	enum { | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 		INVALID_CELL_ITEM = -1 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-28 16:13:45 +01:00
										 |  |  | 	void set_collision_layer(uint32_t p_layer); | 
					
						
							|  |  |  | 	uint32_t get_collision_layer() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_collision_mask(uint32_t p_mask); | 
					
						
							|  |  |  | 	uint32_t get_collision_mask() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_collision_layer_bit(int p_bit, bool p_value); | 
					
						
							|  |  |  | 	bool get_collision_layer_bit(int p_bit) const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_collision_mask_bit(int p_bit, bool p_value); | 
					
						
							|  |  |  | 	bool get_collision_mask_bit(int p_bit) const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 	void set_theme(const Ref<MeshLibrary> &p_theme); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	Ref<MeshLibrary> get_theme() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-27 16:00:59 -03:00
										 |  |  | 	void set_cell_size(const Vector3 &p_size); | 
					
						
							|  |  |  | 	Vector3 get_cell_size() const; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_octant_size(int p_size); | 
					
						
							|  |  |  | 	int get_octant_size() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_center_x(bool p_enable); | 
					
						
							|  |  |  | 	bool get_center_x() const; | 
					
						
							|  |  |  | 	void set_center_y(bool p_enable); | 
					
						
							|  |  |  | 	bool get_center_y() const; | 
					
						
							|  |  |  | 	void set_center_z(bool p_enable); | 
					
						
							|  |  |  | 	bool get_center_z() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-12 12:52:50 -04:00
										 |  |  | 	void set_cell_item(int p_x, int p_y, int p_z, int p_item, int p_rot = 0); | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 	int get_cell_item(int p_x, int p_y, int p_z) const; | 
					
						
							|  |  |  | 	int get_cell_item_orientation(int p_x, int p_y, int p_z) const; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-01 09:57:10 +01:00
										 |  |  | 	Vector3 world_to_map(const Vector3 &p_world_pos) const; | 
					
						
							| 
									
										
										
										
											2017-10-07 12:30:58 +01:00
										 |  |  | 	Vector3 map_to_world(int p_x, int p_y, int p_z) const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 	void set_clip(bool p_enabled, bool p_clip_above = true, int p_floor = 0, Vector3::Axis p_axis = Vector3::AXIS_X); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_cell_scale(float p_scale); | 
					
						
							|  |  |  | 	float get_cell_scale() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-05 15:34:34 +02:00
										 |  |  | 	Array get_used_cells() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-15 08:29:46 -03:00
										 |  |  | 	Array get_meshes(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-18 00:34:48 -03:00
										 |  |  | 	void clear_baked_meshes(); | 
					
						
							|  |  |  | 	void make_baked_meshes(bool p_gen_lightmap_uv = false, float p_lightmap_uv_texel_size = 0.1); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void clear(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-18 00:34:48 -03:00
										 |  |  | 	Array get_bake_meshes(); | 
					
						
							|  |  |  | 	RID get_bake_mesh_instance(int p_idx); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	GridMap(); | 
					
						
							|  |  |  | 	~GridMap(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-27 21:07:15 +02:00
										 |  |  | #endif // GRID_MAP_H
 |