diff options
author | Campbell Barton <ideasman42@gmail.com> | 2014-04-09 05:48:04 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2014-04-09 05:52:34 +0400 |
commit | 9de24c82bab8fc6f1b8810979ac492787d32a964 (patch) | |
tree | 3c2466ebd791a52859ce19ffee8ff5ed518a6061 /source/blender/blenkernel/intern/object.c | |
parent | b1f97a0cdb1bf6c7e0f80c6edb3182870625b9a6 (diff) |
View3D: disable LOD when game engine is disabled or ifdef'd
Diffstat (limited to 'source/blender/blenkernel/intern/object.c')
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 23af5bdf7ba..71b3e83f9de 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1049,6 +1049,9 @@ Object *BKE_object_add(Main *bmain, Scene *scene, int type) return ob; } + +#ifdef WITH_GAMEENGINE + void BKE_object_lod_add(Object *ob) { LodLevel *lod = MEM_callocN(sizeof(LodLevel), "LoD Level"); @@ -1110,21 +1113,19 @@ bool BKE_object_lod_remove(Object *ob, int level) return true; } -static LodLevel *lod_level_select(Object *ob, const float cam_loc[3]) +static LodLevel *lod_level_select(Object *ob, const float camera_position[3]) { LodLevel *current = ob->currentlod; - float ob_loc[3], delta[3]; - float dist_sq; + float dist_sq, dist_sq_curr; if (!current) return NULL; - copy_v3_v3(ob_loc, ob->obmat[3]); - sub_v3_v3v3(delta, ob_loc, cam_loc); - dist_sq = len_squared_v3(delta); + dist_sq = len_squared_v3v3(ob->obmat[3], camera_position); + dist_sq_curr = current->distance * current->distance; - if (dist_sq < current->distance * current->distance) { + if (dist_sq < dist_sq_curr) { /* check for higher LoD */ - while (current->prev && dist_sq < (current->distance * current->distance)) { + while (current->prev && dist_sq < dist_sq_curr) { current = current->prev; } } @@ -1144,17 +1145,14 @@ bool BKE_object_lod_is_usable(Object *ob, Scene *scene) return (ob->mode == OB_MODE_OBJECT || !active); } -bool BKE_object_lod_update(Object *ob, float camera_position[3]) +void BKE_object_lod_update(Object *ob, const float camera_position[3]) { LodLevel *cur_level = ob->currentlod; LodLevel *new_level = lod_level_select(ob, camera_position); if (new_level != cur_level) { ob->currentlod = new_level; - return true; } - - return false; } static Object *lod_ob_get(Object *ob, Scene *scene, int flag) @@ -1181,6 +1179,9 @@ struct Object *BKE_object_lod_matob_get(Object *ob, Scene *scene) return lod_ob_get(ob, scene, OB_LOD_USE_MAT); } +#endif /* WITH_GAMEENGINE */ + + SoftBody *copy_softbody(SoftBody *sb, bool copy_caches) { SoftBody *sbn; |