[Bf-blender-cvs] [978dba4] master: Fix T40257: Frustum culling not working properly

Mitchell Stokes noreply at git.blender.org
Tue Jul 1 21:40:57 CEST 2014


Commit: 978dba4616852e0b94374f2ae56934049d9b3669
Author: Mitchell Stokes
Date:   Tue Jul 1 12:39:17 2014 -0700
https://developer.blender.org/rB978dba4616852e0b94374f2ae56934049d9b3669

Fix T40257: Frustum culling not working properly

Adding a hack so that KX_GameObjects' culling status is updated based on
mesh slots.

===================================================================

M	source/gameengine/Ketsji/KX_GameObject.cpp
M	source/gameengine/Ketsji/KX_GameObject.h

===================================================================

diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp
index 9e8e58e..7b78134 100644
--- a/source/gameengine/Ketsji/KX_GameObject.cpp
+++ b/source/gameengine/Ketsji/KX_GameObject.cpp
@@ -928,6 +928,27 @@ KX_GameObject::SetVisible(
 	}
 }
 
+bool KX_GameObject::GetCulled()
+{
+	// If we're set to not cull, double-check with
+	// the mesh slots first. This is kind of nasty, but
+	// it allows us to get proper culling information.
+	if (!m_bCulled)
+	{
+		SG_QList::iterator<RAS_MeshSlot> mit(m_meshSlots);
+		for (mit.begin(); !mit.end(); ++mit)
+		{
+			if ((*mit)->m_bCulled)
+			{
+				m_bCulled = true;
+				break;
+			}
+		}
+	}
+
+	return m_bCulled;
+}
+
 static void setOccluder_recursive(SG_Node* node, bool v)
 {
 	NodeList& children = node->GetSGChildren();
diff --git a/source/gameengine/Ketsji/KX_GameObject.h b/source/gameengine/Ketsji/KX_GameObject.h
index 7450be4..f7f40ac 100644
--- a/source/gameengine/Ketsji/KX_GameObject.h
+++ b/source/gameengine/Ketsji/KX_GameObject.h
@@ -852,10 +852,10 @@ public:
 	/**
 	 * Was this object culled?
 	 */
-	inline bool
+	bool
 	GetCulled(
 		void
-	) { return m_bCulled; }
+	);
 
 	/**
 	 * Set culled flag of this object




More information about the Bf-blender-cvs mailing list