// Auto bindings void GLProgramState::setParameterAutoBinding(const std::string& uniformName, const std::string& autoBinding) { _autoBindings[uniformName] = autoBinding; if (_nodeBinding) applyAutoBinding(uniformName, autoBinding); }
void RenderState::setParameterAutoBinding(const char* name, AutoBinding autoBinding) { GP_ASSERT(name); // Store the auto-binding. if (autoBinding == NONE) { // Clear current auto binding. std::map<std::string, AutoBinding>::iterator itr = _autoBindings.find(name); if (itr != _autoBindings.end()) { _autoBindings.erase(itr); } } else { // Set new auto binding. _autoBindings[name] = autoBinding; } // If we have a currently set node binding, apply the auto binding immediately. if (_nodeBinding) { applyAutoBinding(name, autoBinding); } }
void GLProgramState::setNodeBinding(Node* target) { CCASSERT(target, "must be non-null"); // weak ref _nodeBinding = target; for (const auto autobinding: _autoBindings) applyAutoBinding(autobinding.first, autobinding.second); }
void RenderState::setNodeBinding(Node* node) { _nodeBinding = node; if (_nodeBinding) { // Apply all existing auto-bindings using this node. std::map<std::string, AutoBinding>::const_iterator itr = _autoBindings.begin(); while (itr != _autoBindings.end()) { applyAutoBinding(itr->first.c_str(), itr->second); ++itr; } } }
void RenderState::setParameterAutoBinding(const char* name, const char* autoBinding) { GP_ASSERT(name); GP_ASSERT(autoBinding); if (autoBinding == NULL) { // Remove an existing auto-binding std::map<std::string, std::string>::iterator itr = _autoBindings.find(name); if (itr != _autoBindings.end()) _autoBindings.erase(itr); } else { // Add/update an auto-binding _autoBindings[name] = autoBinding; } // If we already have a node binding set, pass it to our handler now if (_nodeBinding) { applyAutoBinding(name, autoBinding); } }