// Auto bindings
void GLProgramState::setParameterAutoBinding(const std::string& uniformName, const std::string& autoBinding)
{
    _autoBindings[uniformName] = autoBinding;

    if (_nodeBinding)
        applyAutoBinding(uniformName, autoBinding);
}
예제 #2
0
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);
}
예제 #4
0
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;
        }
    }
}
예제 #5
0
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);
    }
}