void Water::_OnOptimizeCullResult(Event * _sender) { VisibleCullResult * result = (VisibleCullResult *)_sender->GetParam(0); SceneNodeList & list = result->nodes; SceneNodeList::Iterator whr = list.Begin(); SceneNodeList::Iterator end = list.End(); while (whr != end) { SceneNode * node = *whr; Vec3 pos = node->GetWorldAabb().GetCenter(); if (!HasWater(pos.x, pos.z)) node->_setVisibleMask(false); ++whr; } }