From fba33cb9cfca6eed05916965207dab9c20ca0db5 Mon Sep 17 00:00:00 2001 From: David Rose Date: Fri, 15 Apr 2005 21:58:39 +0000 Subject: [PATCH] changed_usage_hint() --- panda/src/gobj/indexBufferContext.I | 12 ++++++++++++ panda/src/gobj/indexBufferContext.h | 2 ++ panda/src/gobj/qpgeomEnums.h | 4 ++-- panda/src/gobj/qpgeomVertexReader.I | 4 ++-- panda/src/gobj/qpgeomVertexWriter.I | 4 ++-- panda/src/gobj/vertexBufferContext.I | 12 ++++++++++++ panda/src/gobj/vertexBufferContext.h | 2 ++ 7 files changed, 34 insertions(+), 6 deletions(-) diff --git a/panda/src/gobj/indexBufferContext.I b/panda/src/gobj/indexBufferContext.I index 4f603ebf46..faaddc4911 100644 --- a/panda/src/gobj/indexBufferContext.I +++ b/panda/src/gobj/indexBufferContext.I @@ -66,6 +66,17 @@ changed_size() const { return get_data_size_bytes() != _data->get_data_size_bytes(); } +//////////////////////////////////////////////////////////////////// +// Function: IndexBufferContext::changed_usage_hint +// Access: Public +// Description: Returns true if the data has changed its usage hint +// since the last time mark_loaded() was called. +//////////////////////////////////////////////////////////////////// +INLINE bool IndexBufferContext:: +changed_usage_hint() const { + return _usage_hint != _data->get_usage_hint(); +} + //////////////////////////////////////////////////////////////////// // Function: IndexBufferContext::was_modified // Access: Public @@ -87,5 +98,6 @@ was_modified() const { INLINE void IndexBufferContext:: mark_loaded() { _data_size_bytes = _data->get_data_size_bytes(); + _usage_hint = _data->get_usage_hint(); _modified = _data->get_modified(); } diff --git a/panda/src/gobj/indexBufferContext.h b/panda/src/gobj/indexBufferContext.h index 25cd54e489..91371e1046 100644 --- a/panda/src/gobj/indexBufferContext.h +++ b/panda/src/gobj/indexBufferContext.h @@ -44,6 +44,7 @@ public: INLINE int get_data_size_bytes() const; INLINE bool changed_size() const; + INLINE bool changed_usage_hint() const; INLINE bool was_modified() const; INLINE void mark_loaded(); @@ -55,6 +56,7 @@ private: qpGeomPrimitive *_data; UpdateSeq _modified; int _data_size_bytes; + qpGeomEnums::UsageHint _usage_hint; public: static TypeHandle get_class_type() { diff --git a/panda/src/gobj/qpgeomEnums.h b/panda/src/gobj/qpgeomEnums.h index 2c5b57d62f..068e5c9819 100644 --- a/panda/src/gobj/qpgeomEnums.h +++ b/panda/src/gobj/qpgeomEnums.h @@ -199,8 +199,8 @@ PUBLISHED: }; -ostream &operator << (ostream &out, qpGeomEnums::NumericType numeric_type); -ostream &operator << (ostream &out, qpGeomEnums::Contents contents); +EXPCL_PANDA ostream &operator << (ostream &out, qpGeomEnums::NumericType numeric_type); +EXPCL_PANDA ostream &operator << (ostream &out, qpGeomEnums::Contents contents); #endif diff --git a/panda/src/gobj/qpgeomVertexReader.I b/panda/src/gobj/qpgeomVertexReader.I index 2d2eed7b6a..3fc3b09a94 100644 --- a/panda/src/gobj/qpgeomVertexReader.I +++ b/panda/src/gobj/qpgeomVertexReader.I @@ -404,9 +404,9 @@ inc_pointer() { nassertr(_pointer < _pointer_end, empty_buffer); if (_vertex_data != (const qpGeomVertexData *)NULL){ const qpGeomVertexArrayData *array_data = _vertex_data->get_array(_array); - nassertr(_pointer >= array_data->get_data() && _pointer < array_data->get_data() + array_data->get_data_size_bytes(), empty_buffer); + nassertr(_pointer >= array_data->get_data().p() && _pointer < array_data->get_data().p() + array_data->get_data_size_bytes(), empty_buffer); } else { - nassertr(_pointer >= _array_data->get_data() && _pointer < _array_data->get_data() + _array_data->get_data_size_bytes(), empty_buffer); + nassertr(_pointer >= _array_data->get_data().p() && _pointer < _array_data->get_data().p() + _array_data->get_data_size_bytes(), empty_buffer); } #endif diff --git a/panda/src/gobj/qpgeomVertexWriter.I b/panda/src/gobj/qpgeomVertexWriter.I index ddbfa973c7..06b55366ad 100644 --- a/panda/src/gobj/qpgeomVertexWriter.I +++ b/panda/src/gobj/qpgeomVertexWriter.I @@ -709,9 +709,9 @@ inc_pointer() { nassertr(_pointer < _pointer_end, empty_buffer); if (_vertex_data != (qpGeomVertexData *)NULL){ const qpGeomVertexArrayData *array_data = _vertex_data->get_array(_array); - nassertr(_pointer >= array_data->get_data() && _pointer < array_data->get_data() + array_data->get_data_size_bytes(), empty_buffer); + nassertr(_pointer >= array_data->get_data().p() && _pointer < array_data->get_data().p() + array_data->get_data_size_bytes(), empty_buffer); } else { - nassertr(_pointer >= _array_data->get_data() && _pointer < _array_data->get_data() + _array_data->get_data_size_bytes(), empty_buffer); + nassertr(_pointer >= _array_data->get_data().p() && _pointer < _array_data->get_data().p() + _array_data->get_data_size_bytes(), empty_buffer); } #endif diff --git a/panda/src/gobj/vertexBufferContext.I b/panda/src/gobj/vertexBufferContext.I index 74b481ec8c..da1bbad75a 100644 --- a/panda/src/gobj/vertexBufferContext.I +++ b/panda/src/gobj/vertexBufferContext.I @@ -66,6 +66,17 @@ changed_size() const { return get_data_size_bytes() != _data->get_data_size_bytes(); } +//////////////////////////////////////////////////////////////////// +// Function: VertexBufferContext::changed_usage_hint +// Access: Public +// Description: Returns true if the data has changed its usage hint +// since the last time mark_loaded() was called. +//////////////////////////////////////////////////////////////////// +INLINE bool VertexBufferContext:: +changed_usage_hint() const { + return _usage_hint != _data->get_usage_hint(); +} + //////////////////////////////////////////////////////////////////// // Function: VertexBufferContext::was_modified // Access: Public @@ -87,5 +98,6 @@ was_modified() const { INLINE void VertexBufferContext:: mark_loaded() { _data_size_bytes = _data->get_data_size_bytes(); + _usage_hint = _data->get_usage_hint(); _modified = _data->get_modified(); } diff --git a/panda/src/gobj/vertexBufferContext.h b/panda/src/gobj/vertexBufferContext.h index 231b64fed2..a60f39f15d 100644 --- a/panda/src/gobj/vertexBufferContext.h +++ b/panda/src/gobj/vertexBufferContext.h @@ -44,6 +44,7 @@ public: INLINE int get_data_size_bytes() const; INLINE bool changed_size() const; + INLINE bool changed_usage_hint() const; INLINE bool was_modified() const; INLINE void mark_loaded(); @@ -55,6 +56,7 @@ private: qpGeomVertexArrayData *_data; UpdateSeq _modified; int _data_size_bytes; + qpGeomEnums::UsageHint _usage_hint; public: static TypeHandle get_class_type() {