Add IVertexBuffer::setValue. Add comments.

Same as in IIndexBuffer. Needed as replacement for non const operator[] which can't be done for this interface (as type is dynamic).

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6344 dfc29bdd-3216-0410-991c-e03cc46cb475
This commit is contained in:
cutealien 2022-04-20 10:38:26 +00:00
parent dd36699ad2
commit 57bcc52ca1
3 changed files with 34 additions and 7 deletions

@ -25,6 +25,7 @@ namespace scene
virtual u32 size() const =0;
virtual void push_back (const video::S3DVertex &element) =0;
virtual void setValue(u32 index, const video::S3DVertex &value) =0;
virtual video::S3DVertex& operator [](const u32 index) const =0;
virtual video::S3DVertex& getLast() =0;
virtual void set_used(u32 usedNow) =0;
@ -47,6 +48,9 @@ namespace scene
virtual void push_back (const video::S3DVertex &element) IRR_OVERRIDE
{Vertices.push_back((T&)element);}
virtual void setValue(u32 index, const video::S3DVertex &value) IRR_OVERRIDE
{Vertices[index] = (T&)value;}
virtual video::S3DVertex& operator [](const u32 index) const IRR_OVERRIDE
{return (video::S3DVertex&)Vertices[index];}
@ -149,6 +153,11 @@ namespace scene
Vertices->push_back(element);
}
virtual void setValue(u32 index, const video::S3DVertex &value) IRR_OVERRIDE
{
Vertices->setValue(index, value);
}
virtual video::S3DVertex& operator [](const u32 index) const IRR_OVERRIDE
{
return (*Vertices)[index];

@ -20,24 +20,33 @@ namespace scene
{
public:
//! Pointer to first element
virtual void* getData() =0;
//! Same as getData()
virtual void* pointer() =0;
virtual video::E_INDEX_TYPE getType() const =0;
virtual void setType(video::E_INDEX_TYPE IndexType) =0;
//! Number of bytes per element
virtual u32 stride() const =0;
//! Number of elements
virtual u32 size() const =0;
virtual void push_back (const u32 &element) =0;
//! Set value at index.
/** Buffer must be already large enough. This is basically the non const version of operator [] */
virtual void setValue(u32 index, u32 value) =0;
virtual u32 operator [](u32 index) const =0;
virtual u32 getLast() =0;
virtual void setValue(u32 index, u32 value) =0;
virtual void set_used(u32 usedNow) =0;
virtual void reallocate(u32 new_size, bool canShrink=true) =0;
virtual u32 allocated_size() const=0;
virtual void* pointer() =0;
//! get the current hardware mapping hint
virtual E_HARDWARE_MAPPING getHardwareMappingHint() const =0;

@ -21,6 +21,9 @@ namespace scene
//! Pointer to first element of vertex data
virtual void* getData() =0;
//! Same as getData() and real type returned is not always video::S3DVertex* but depends on type
virtual video::S3DVertex* pointer() =0;
virtual video::E_VERTEX_TYPE getType() const =0;
virtual void setType(video::E_VERTEX_TYPE vertexType) =0;
@ -30,17 +33,23 @@ namespace scene
//! Number of elements
virtual u32 size() const =0;
//! Add vertex to end. Note that depending on vertex type this will be one of the types derived from video::S3DVertex.
//! Add vertex to end.
//* Note that depending on vertex type reference has to be one of the types derived from video::S3DVertex. */
virtual void push_back(const video::S3DVertex &element) =0;
//! Set value at index.
/** Depending on vertex type reference has to be one of the types derived from video::S3DVertex.
Buffer must be already large enough. This is basically the non const version of operator [] */
virtual void setValue(u32 index, const video::S3DVertex &value) =0;
// Note that the reference can also be to one of the derived types
virtual video::S3DVertex& operator [](const u32 index) const =0;
virtual video::S3DVertex& getLast() =0;
virtual void set_used(u32 usedNow) =0;
virtual void reallocate(u32 new_size, bool canShrink=true) =0;
virtual u32 allocated_size() const =0;
//! Same as getData() - not sure why we got 2, should probably deprecate (and we don't always have video::S3DVertex*, so just confusing)
virtual video::S3DVertex* pointer() =0;
//! get the current hardware mapping hint
virtual E_HARDWARE_MAPPING getHardwareMappingHint() const =0;