-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathbetterhololib.txt
82 lines (72 loc) · 2.21 KB
/
betterhololib.txt
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
@name betterhololib
@persist BETTERHOLO_AVAILABLE:array BETTERHOLO_MAX
@model models/bull/gates/microcontroller1.mdl
#[ ]#
## E2 Library: betterhololib ##
## ##
## Manages hologram IDs for you. ##
## Call holoAlloc() to get started. ##
## ##
## Now completely vanilla! ##
#[ ]#
if( first() ){
# until vurv adds a way to ignore warnings, this is needed
BETTERHOLO_AVAILABLE = array()
BETTERHOLO_MAX = 0
### INTERNAL ##
##
# nextHoloID()
# Returns the next available hologram ID for use.
#
function number nextHoloID(){
if( BETTERHOLO_AVAILABLE:count() == 0 ){
BETTERHOLO_MAX++
return BETTERHOLO_MAX
}
else {
return BETTERHOLO_AVAILABLE:popNumber()
}
}
###############
##
# holoAlloc( Pos:vector = entity():pos(), Ang:angle = entity():angles() )
# Creates a new BetterHolo and returns its index.
# Optionally takes in a position to spawn the holo at.
#
function number holoAlloc(){
local Next = nextHoloID()
holoCreate(Next)
return Next
}
function number holoAlloc(Pos:vector){
local Next = nextHoloID()
holoCreate(Next,Pos)
return Next
}
function number holoAlloc(Pos:vector,Ang:angle){
local Next = nextHoloID()
holoCreate(Next,Pos,vec(1),Ang)
return Next
}
###############
##
# <BetterHolo>:holoFree( )
# Deletes the BetterHolo it's called on and frees the index for use again.
#
function number:holoFree(){
holoDelete(This)
BETTERHOLO_AVAILABLE:pushNumber(This)
}
### DEPRECATED ##
##
# <BetterHolo>:destroy( )
# Old alias of holoFree, kept for backwards-compatibility
#
function number:destroy(){
This:holoFree()
}
if(entity():model() == "models/bull/gates/microcontroller1.mdl"){
selfDestruct()
error("This is a library; #include it in something.")
}
}