bool ModelEntity::setOrthographicCameraCascadedShadowMap(const string& lightName, const CameraSP& camera, const OrthographicCameraCascadedShadowMap2DSP& orthographicCameraCascadedShadowMap2D, int32_t section) const { Quaternion baseRotation(-90.0f, Vector3(1.0f, 0.0f, 0.0f)); baseRotation *= Quaternion(90.0f, Vector3(0.0f, 1.0f, 0.0f)); auto walker = allLights.begin(); InstanceNodeSP instanceNode; while (walker != allLights.end()) { instanceNode = *walker; if (instanceNode->getNode()->getName().compare(lightName) == 0) { orthographicCameraCascadedShadowMap2D->getOrthographicCamera(section)->adjustToFrustum(camera->getViewFrustum(), section, instanceNode->getPosition(), instanceNode->getRotation() * baseRotation); ProgramManagerProxy::setCameraByType(GeneralEntity::currentProgramType, orthographicCameraCascadedShadowMap2D->getOrthographicCamera(section), Point4(), Quaternion(), false); return true; } walker++; } return false; }