blob: 00dce8184df1633c192d6ec13ff6417a1feb8e38 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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;
}
};
|