mirror of
https://github.com/Relintai/terraman.git
synced 2025-04-21 21:41:20 +02:00
Added a few virtual methods to store additional textures with in MaterialCache. This will likely make implementing caching for props fairly trivial.
This commit is contained in:
parent
e5c860e578
commit
6acaef6a5d
@ -146,6 +146,42 @@ void TerraMaterialCache::surfaces_clear() {
|
||||
_surfaces.clear();
|
||||
}
|
||||
|
||||
void TerraMaterialCache::additional_texture_add(const Ref<Texture> &tex) {
|
||||
_additional_textures.push_back(tex);
|
||||
}
|
||||
void TerraMaterialCache::additional_texture_remove(const Ref<Texture> &tex) {
|
||||
for (int i = 0; i < _additional_textures.size(); ++i) {
|
||||
if (_additional_textures[i] == tex) {
|
||||
_additional_textures.remove(i);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
void TerraMaterialCache::additional_texture_remove_index(const int index) {
|
||||
ERR_FAIL_INDEX(index, _additional_textures.size());
|
||||
|
||||
_additional_textures.remove(index);
|
||||
}
|
||||
void TerraMaterialCache::additional_textures_clear() {
|
||||
_additional_textures.clear();
|
||||
}
|
||||
int TerraMaterialCache::additional_texture_count() {
|
||||
return _additional_textures.size();
|
||||
}
|
||||
Ref<Texture> TerraMaterialCache::additional_texture_get(const int index) {
|
||||
ERR_FAIL_INDEX_V(index, _additional_textures.size(), Ref<Texture>());
|
||||
|
||||
return _additional_textures[index];
|
||||
}
|
||||
Ref<AtlasTexture> TerraMaterialCache::additional_texture_get_atlas(const int index) {
|
||||
ERR_FAIL_INDEX_V(index, _additional_textures.size(), Ref<AtlasTexture>());
|
||||
|
||||
return Ref<AtlasTexture>();
|
||||
}
|
||||
Rect2 TerraMaterialCache::additional_texture_get_uv_rect(const Ref<Texture> &tex) {
|
||||
return Rect2(0, 0, 1, 1);
|
||||
}
|
||||
|
||||
void TerraMaterialCache::refresh_rects() {
|
||||
_initialized = true;
|
||||
}
|
||||
@ -199,6 +235,15 @@ void TerraMaterialCache::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("surface_get_num"), &TerraMaterialCache::surface_get_num);
|
||||
ClassDB::bind_method(D_METHOD("surfaces_clear"), &TerraMaterialCache::surfaces_clear);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("additional_texture_add", "tex"), &TerraMaterialCache::additional_texture_add);
|
||||
ClassDB::bind_method(D_METHOD("additional_texture_remove", "tex"), &TerraMaterialCache::additional_texture_remove);
|
||||
ClassDB::bind_method(D_METHOD("additional_texture_remove_index", "index"), &TerraMaterialCache::additional_texture_remove_index);
|
||||
ClassDB::bind_method(D_METHOD("additional_textures_clear"), &TerraMaterialCache::additional_textures_clear);
|
||||
ClassDB::bind_method(D_METHOD("additional_texture_count"), &TerraMaterialCache::additional_texture_count);
|
||||
ClassDB::bind_method(D_METHOD("additional_texture_get", "index"), &TerraMaterialCache::additional_texture_get);
|
||||
ClassDB::bind_method(D_METHOD("additional_texture_get_atlas", "index"), &TerraMaterialCache::additional_texture_get_atlas);
|
||||
ClassDB::bind_method(D_METHOD("additional_texture_get_uv_rect", "tex"), &TerraMaterialCache::additional_texture_get_uv_rect);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("refresh_rects"), &TerraMaterialCache::refresh_rects);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("setup_material_albedo", "texture"), &TerraMaterialCache::setup_material_albedo);
|
||||
|
@ -75,6 +75,15 @@ public:
|
||||
virtual int surface_get_num() const;
|
||||
virtual void surfaces_clear();
|
||||
|
||||
virtual void additional_texture_add(const Ref<Texture> &tex);
|
||||
virtual void additional_texture_remove(const Ref<Texture> &tex);
|
||||
virtual void additional_texture_remove_index(const int index);
|
||||
virtual void additional_textures_clear();
|
||||
virtual int additional_texture_count();
|
||||
virtual Ref<Texture> additional_texture_get(const int index);
|
||||
virtual Ref<AtlasTexture> additional_texture_get_atlas(const int index);
|
||||
virtual Rect2 additional_texture_get_uv_rect(const Ref<Texture> &tex);
|
||||
|
||||
virtual void refresh_rects();
|
||||
|
||||
void setup_material_albedo(Ref<Texture> texture);
|
||||
@ -89,6 +98,7 @@ protected:
|
||||
|
||||
Vector<Ref<TerraSurface>> _surfaces;
|
||||
Vector<Ref<Material>> _materials;
|
||||
Vector<Ref<Texture>> _additional_textures;
|
||||
|
||||
int _ref_count;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user