summaryrefslogtreecommitdiff
path: root/tf2/GlowObject.h
diff options
context:
space:
mode:
authorJustSomePwner <crotchyalt@gmail.com>2018-08-30 14:01:54 +0200
committerJustSomePwner <crotchyalt@gmail.com>2018-08-30 14:01:54 +0200
commit7ccb819f867493f8ec202ea3b39c94c198c64584 (patch)
tree94622e61af0ff359e3d6689cf274d74f60b2492a /tf2/GlowObject.h
parent564d979b79e8a5aaa5014eba0ecd36c61575934f (diff)
first
Diffstat (limited to 'tf2/GlowObject.h')
-rw-r--r--tf2/GlowObject.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/tf2/GlowObject.h b/tf2/GlowObject.h
new file mode 100644
index 0000000..00dce81
--- /dev/null
+++ b/tf2/GlowObject.h
@@ -0,0 +1,43 @@
+#pragma once
+#include "UtlMem.h"
+#include <inttypes.h>
+#include "color.hpp"
+
+static const int END_OF_FREE_LIST = -1;
+static const int ENTRY_IN_USE = -2;
+
+struct GlowObject_t {
+ uintptr_t ent_ptr;
+ fclr_t glow_color;
+
+ bool render_when_occluded;
+ bool render_when_unoccluded;
+ int pad;
+
+ int next_free_slot;
+};
+
+struct GlowObjectManager_t {
+ CUtlVector< GlowObject_t > data;
+ int first_slot;
+
+ int RegisterGlowObject( IClientEntity* ent ) {
+ for( int i{ }; i < data.Count( ); i++ ) {
+ if( data[ i ].ent_ptr == ent->get_ehandle( ) ) return 0;
+ }
+ int index{ };
+ if( first_slot == -1 ) index = data.AddToTail( );
+ else {
+ index = first_slot;
+ first_slot = data[ index ].next_free_slot;
+ }
+ data[ index ].ent_ptr = ent->get_ehandle( );
+ data[ index ].glow_color = clr_t( 255, 255, 255, 255 ).to_fclr( );
+ data[ index ].render_when_occluded = true;
+ data[ index ].render_when_unoccluded = true;
+ data[ index ].pad = -1;
+ data[ index ].next_free_slot = -2;
+
+ return index;
+ }
+}; \ No newline at end of file