本文整理汇总了C++中AudioBufferSourceNode::setPannerNode方法的典型用法代码示例。如果您正苦于以下问题:C++ AudioBufferSourceNode::setPannerNode方法的具体用法?C++ AudioBufferSourceNode::setPannerNode怎么用?C++ AudioBufferSourceNode::setPannerNode使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AudioBufferSourceNode
的用法示例。
在下文中一共展示了AudioBufferSourceNode::setPannerNode方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: notifyAudioSourcesConnectedToNode
void PannerNode::notifyAudioSourcesConnectedToNode(AudioNode* node, HashSet<AudioNode*>& visitedNodes)
{
ASSERT(node);
if (!node)
return;
// First check if this node is an AudioBufferSourceNode. If so, let it know about us so that doppler shift pitch can be taken into account.
if (node->nodeType() == NodeTypeAudioBufferSource) {
AudioBufferSourceNode* bufferSourceNode = reinterpret_cast<AudioBufferSourceNode*>(node);
bufferSourceNode->setPannerNode(this);
} else {
// Go through all inputs to this node.
for (unsigned i = 0; i < node->numberOfInputs(); ++i) {
AudioNodeInput* input = node->input(i);
// For each input, go through all of its connections, looking for AudioBufferSourceNodes.
for (unsigned j = 0; j < input->numberOfRenderingConnections(); ++j) {
AudioNodeOutput* connectedOutput = input->renderingOutput(j);
AudioNode* connectedNode = connectedOutput->node();
if (visitedNodes.contains(connectedNode))
continue;
visitedNodes.add(connectedNode);
notifyAudioSourcesConnectedToNode(connectedNode, visitedNodes);
}
}
}
}
示例2: notifyAudioSourcesConnectedToNode
void PannerNode::notifyAudioSourcesConnectedToNode(ContextRenderLock& r, AudioNode* node)
{
ASSERT(node);
if (!node)
return;
// First check if this node is an AudioBufferSourceNode. If so, let it know about us so that doppler shift pitch can be taken into account.
if (node->nodeType() == NodeTypeAudioBufferSource)
{
AudioBufferSourceNode* bufferSourceNode = reinterpret_cast<AudioBufferSourceNode*>(node);
bufferSourceNode->setPannerNode(this);
}
else
{
// Go through all inputs to this node.
for (unsigned i = 0; i < node->numberOfInputs(); ++i)
{
auto input = node->input(i);
// For each input, go through all of its connections, looking for AudioBufferSourceNodes.
for (unsigned j = 0; j < input->numberOfRenderingConnections(r); ++j)
{
auto connectedOutput = input->renderingOutput(r, j);
AudioNode* connectedNode = connectedOutput->node();
notifyAudioSourcesConnectedToNode(r, connectedNode); // recurse
}
}
}
}
示例3: notifyAudioSourcesConnectedToNode
void PannerNode::notifyAudioSourcesConnectedToNode(AudioNode* node, HashMap<AudioNode*, bool>& visitedNodes)
{
ASSERT(node);
if (!node)
return;
// First check if this node is an AudioBufferSourceNode. If so, let it know about us so that doppler shift pitch can be taken into account.
if (node->nodeType() == NodeTypeAudioBufferSource) {
AudioBufferSourceNode* bufferSourceNode = static_cast<AudioBufferSourceNode*>(node);
bufferSourceNode->setPannerNode(this);
} else {
// Go through all inputs to this node.
for (unsigned i = 0; i < node->numberOfInputs(); ++i) {
AudioNodeInput* input = node->input(i);
// For each input, go through all of its connections, looking for AudioBufferSourceNodes.
for (unsigned j = 0; j < input->numberOfRenderingConnections(); ++j) {
AudioNodeOutput* connectedOutput = input->renderingOutput(j);
AudioNode* connectedNode = connectedOutput->node();
HashMap<AudioNode*, bool>::iterator iterator = visitedNodes.find(connectedNode);
// If we've seen this node already, we don't need to process it again. Otherwise,
// mark it as visited and recurse through the node looking for sources.
if (iterator == visitedNodes.end()) {
visitedNodes.set(connectedNode, true);
notifyAudioSourcesConnectedToNode(connectedNode, visitedNodes); // recurse
}
}
}
}
}