summaryrefslogtreecommitdiffstats
path: root/o3d/plugin/idl/stream_bank.idl
diff options
context:
space:
mode:
Diffstat (limited to 'o3d/plugin/idl/stream_bank.idl')
-rw-r--r--o3d/plugin/idl/stream_bank.idl148
1 files changed, 148 insertions, 0 deletions
diff --git a/o3d/plugin/idl/stream_bank.idl b/o3d/plugin/idl/stream_bank.idl
new file mode 100644
index 0000000..a5f08d9
--- /dev/null
+++ b/o3d/plugin/idl/stream_bank.idl
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2009, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+namespace o3d {
+
+%[
+ The StreamBank a collection of streams that hold vertices.
+%]
+[nocpp, include="core/cross/primitive.h"]
+class StreamBank : NamedObject {
+
+ %[
+ Binds a VertexBuffer field to the StreamBank and defines how the data in
+ the buffer should be interpreted. The field's buffer must be of a
+ compatible type otherwise the binding fails and the function returns false.
+ \param semantic The particular use of this stream.
+ \param semantic_index Which index of a particular semantic to use.
+ \param field The field containing information for this stream.
+ \param start_index The first element to use.
+ \return True if successful.
+ %]
+ bool SetVertexStream(Stream::Semantic semantic,
+ int semantic_index,
+ Field field,
+ unsigned int start_index);
+
+ %[
+ Searches the vertex streams bound to the StreamBank for one with the given
+ stream semantic. If a stream is not found then it returns null.
+ \param semantic The particular use of this stream.
+ \param semantic_index Which index of a particular semantic to use.
+ \return The found stream or null if it does not exist.
+ %]
+ [userglue]
+ Stream? GetVertexStream(Stream::Semantic semantic, int semantic_index);
+
+ %[
+ Removes a vertex stream from this StreamBank.
+ \param semantic The particular use of this stream.
+ \param semantic_index Which index of a particular semantic to use.
+ \return true if the specified stream existed.
+ %]
+ bool RemoveVertexStream(Stream::Semantic semantic, int semantic_index);
+
+ %[
+ Binds the source stream to the corresponding stream in this VertexSource.
+
+ \param source Source to get vertices from.
+ \param semantic The semantic of the vertices to get
+ \param semantic_index The semantic index of the vertices to get.
+ \return True if success. False if failure. If the requested semantic or
+ semantic index do not exist on the source or this source the bind will
+ fail.
+ %]
+ bool BindStream(VertexSource source,
+ Stream::Semantic semantic,
+ int semantic_index);
+
+ %[
+ Unbinds the requested stream.
+ \param semantic The semantic of the vertices to unbind
+ \param semantic_index The semantic index of the vertices to unbind.
+ \return True if unbound. False those vertices do not exist or were not
+ bound.
+ %]
+ bool UnbindStream(Stream::Semantic semantic, int semantic_index);
+
+ %[
+ An array of the vertex streams on this StreamBank.
+
+ Each access to this field gets the entire list so it is best to get it
+ just once. For example:
+ \code
+ var streams = streamBank.vertexStreams;
+ for (var i = 0; i < streams.length; i++) {
+ var stream = streams[i];
+ }
+ \endcode
+
+ Note that modifications to this array [e.g. push()] will not affect
+ the underlying StreamBank, while modifications to the members of the array.
+ <strong>will</strong> affect them.
+ %]
+ [userglue_getter, getter] StreamVector vertex_streams;
+
+ [verbatim=cpp_glue] %{
+ std::vector<o3d::Stream*> userglue_getter_vertex_streams(
+ o3d::StreamBank* self) {
+ std::vector<o3d::Stream*> streams;
+ const o3d::StreamParamVector& stream_params =
+ self->vertex_stream_params();
+ streams.reserve(stream_params.size());
+ for (unsigned ii = 0; ii < stream_params.size(); ++ii) {
+ streams.push_back(
+ const_cast<o3d::Stream*>(&stream_params[ii]->stream()));
+ }
+ return streams;
+ }
+ o3d::Stream* userglue_method_GetVertexStream(
+ o3d::StreamBank* self,
+ o3d::Stream::Semantic semantic,
+ int semantic_index) {
+ return const_cast<o3d::Stream*>(
+ self->GetVertexStream(semantic, semantic_index));
+ }
+ %}
+}; // StreamBank
+
+%[
+ A Param which stores a StreamBank.
+%]
+[nocpp, include="core/cross/stream_bank.h"]
+class ParamStreamBank : Param {
+ %[
+ The StreamBank stored by the Param.
+ %]
+ [getter, setter] StreamBank? value_;
+};
+
+} // namespace o3d