Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2018-05-15 12:35:39 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2018-05-15 18:20:02 +0300
commit361bc2bc507fc187c205781130df9fed11907455 (patch)
treebb30a4b172574e361d37f4827e74ca435aa46778 /source/blender/draw/engines/basic
parentf25be56bc785b76c9ee19c8e67e76c7c21ea117b (diff)
Particle edit: Make visibility check to be per-particle system
This way we can see other particle systems while combing another one.
Diffstat (limited to 'source/blender/draw/engines/basic')
-rw-r--r--source/blender/draw/engines/basic/basic_engine.c35
1 files changed, 16 insertions, 19 deletions
diff --git a/source/blender/draw/engines/basic/basic_engine.c b/source/blender/draw/engines/basic/basic_engine.c
index 67481a68162..fe368872d48 100644
--- a/source/blender/draw/engines/basic/basic_engine.c
+++ b/source/blender/draw/engines/basic/basic_engine.c
@@ -140,30 +140,27 @@ static void basic_cache_populate(void *vedata, Object *ob)
{
BASIC_StorageList *stl = ((BASIC_Data *)vedata)->stl;
- if (!DRW_object_is_renderable(ob))
- return;
-
- if (!DRW_check_particles_visible_within_active_context(ob)) {
+ if (!DRW_object_is_renderable(ob)) {
return;
}
const DRWContextState *draw_ctx = DRW_context_state_get();
+ if (ob == draw_ctx->object_edit) {
+ return;
+ }
- if (ob != draw_ctx->object_edit) {
- for (ParticleSystem *psys = ob->particlesystem.first; psys; psys = psys->next) {
- if (psys_check_enabled(ob, psys, false)) {
- ParticleSettings *part = psys->part;
- int draw_as = (part->draw_as == PART_DRAW_REND) ? part->ren_as : part->draw_as;
-
- if (draw_as == PART_DRAW_PATH && !psys->pathcache && !psys->childcache) {
- draw_as = PART_DRAW_DOT;
- }
-
- if (draw_as == PART_DRAW_PATH) {
- struct Gwn_Batch *hairs = DRW_cache_particles_get_hair(psys, NULL);
- DRW_shgroup_call_add(stl->g_data->depth_shgrp, hairs, NULL);
- }
- }
+ for (ParticleSystem *psys = ob->particlesystem.first; psys; psys = psys->next) {
+ if (!psys_check_enabled(ob, psys, false)) {
+ continue;
+ }
+ if (!DRW_check_psys_visible_within_active_context(ob, psys)) {
+ return;
+ }
+ ParticleSettings *part = psys->part;
+ const int draw_as = (part->draw_as == PART_DRAW_REND) ? part->ren_as : part->draw_as;
+ if (draw_as == PART_DRAW_PATH) {
+ struct Gwn_Batch *hairs = DRW_cache_particles_get_hair(psys, NULL);
+ DRW_shgroup_call_add(stl->g_data->depth_shgrp, hairs, NULL);
}
}