summaryrefslogtreecommitdiff
path: root/public/gcsdk/gcdirtyfield.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/gcsdk/gcdirtyfield.h')
-rw-r--r--public/gcsdk/gcdirtyfield.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/public/gcsdk/gcdirtyfield.h b/public/gcsdk/gcdirtyfield.h
new file mode 100644
index 0000000..283bfad
--- /dev/null
+++ b/public/gcsdk/gcdirtyfield.h
@@ -0,0 +1,82 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Network dirty field marker for shared objects
+//
+//=============================================================================
+
+#ifndef GC_DIRTYFIELD_H
+#define GC_DIRTYFIELD_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+//#include "sharedobject.h"
+
+namespace GCSDK
+{
+
+ class CSharedObject;
+
+//----------------------------------------------------------------------------
+// Purpose: Holds the set of dirty fields for this object
+//----------------------------------------------------------------------------
+class CSharedObjectDirtyFieldList
+{
+public:
+ CSharedObjectDirtyFieldList( CSharedObject *obj );
+ ~CSharedObjectDirtyFieldList();
+
+ CSharedObject *Obj() const;
+ void DirtyField( int index );
+ void GetDirtyFieldSet( CUtlVector<int> &fieldSet ) const;
+
+private:
+ CSharedObject *m_obj;
+ uint32 m_firstFieldBits;
+ CUtlVector<int> *m_pExtendedFields;
+};
+
+
+//----------------------------------------------------------------------------
+// Purpose: Holds a list of dirty fields on objects
+//----------------------------------------------------------------------------
+class CSharedObjectDirtyList
+{
+public:
+ CSharedObjectDirtyList();
+ ~CSharedObjectDirtyList();
+
+ void DirtyObjectField( CSharedObject *obj, int field );
+
+ int InvalidIndex() const;
+ int NumDirtyObjects() const;
+ int FindIndexByObj( const CSharedObject *pObj ) const;
+ bool HasElement( const CSharedObject *pObj ) const;
+ bool GetDirtyFieldSetByIndex( int index, CSharedObject **ppObj, CUtlVector<int> &fieldSet ) const;
+ bool GetDirtyFieldSetByObj( CSharedObject *pObj, CUtlVector<int> &fieldSet );
+ bool FindAndRemove( CSharedObject *pObj );
+ void RemoveAll();
+
+#ifdef DBGFLAG_VALIDATE
+ void Validate( CValidator &validator, const char *pchName );
+#endif
+
+private:
+
+ CUtlVector< CSharedObjectDirtyFieldList > m_sharedObjectDirtyFieldList;
+};
+
+inline int CSharedObjectDirtyList::InvalidIndex() const
+{
+ return m_sharedObjectDirtyFieldList.InvalidIndex();
+}
+
+inline int CSharedObjectDirtyList::NumDirtyObjects() const
+{
+ return m_sharedObjectDirtyFieldList.Count();
+}
+
+} // GCSDK
+
+
+#endif //GC_DIRTYFIELD_H