forked from jimdose/SiN_110_Source
-
Notifications
You must be signed in to change notification settings - Fork 0
/
entity.cpp
5144 lines (4578 loc) · 115 KB
/
entity.cpp
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
//-----------------------------------------------------------------------------
//
// $Logfile:: /Quake 2 Engine/Sin/code/game/entity.cpp $
// $Revision:: 297 $
// $Author:: Aldie $
// $Date:: 3/18/99 6:44p $
//
// Copyright (C) 1997 by Ritual Entertainment, Inc.
// All rights reserved.
//
// This source is may not be distributed and/or modified without
// expressly written permission by Ritual Entertainment, Inc.
//
// $Log:: /Quake 2 Engine/Sin/code/game/entity.cpp $
//
// 297 3/18/99 6:44p Aldie
// CancelPendingEvents when removiiung
//
// 296 11/18/98 5:22a Jimdose
// CheckGround properly checks normal an alternate grav axis
//
// 295 11/18/98 3:03a Jimdose
// made EV_Mutate a cheat
//
// 294 11/18/98 12:22a Jimdose
// fixed fullmins and fullmaxs when gravaxis is non-0 in setSize
//
// 293 11/15/98 11:31p Markd
// make sure all our children are deleted when removing
//
// 292 11/14/98 5:29p Jimdose
// Made BroadcastSound search through the SentientList instead of using
// findradius. This way, fewer entities are checked.
//
// 291 11/13/98 10:20p Aldie
// Fix crash bug in attachevent
//
// 290 11/13/98 1:47a Markd
// Don't set gravaxis if the same as before
//
// 289 11/10/98 8:03p Jimdose
// made setSize and SetGravityAxis change fullmins and fullmaxs appropriately
//
// 288 11/08/98 6:33p Jimdose
// added FLAG_IGNORE to the flag modifaction functions, making sure that
// illegal values don't cause flags to be modified
//
// 287 11/04/98 8:40p Jimdose
// Made it so the Flags event will not screw the flags if the string is not
// recognized.
//
// 286 10/26/98 9:41p Markd
// Fixed gotkill message not passing in gibbed parameter
//
// 285 10/26/98 4:26p Aldie
// Added ghost command for models that are notsolid, and notvisible, but still
// need to get sent over.
//
// 284 10/25/98 4:38a Aldie
// Moved link()
//
// 283 10/25/98 12:01a Markd
// put in censored support
//
// 282 10/24/98 5:43p Markd
// Fixed IfSkillEvent
//
// 281 10/24/98 12:42a Markd
// changed origins to worldorigins where appropriate
//
// 280 10/23/98 11:50p Jimdose
// fixed usagage of model as a temporary variable in AttachModelEvent
//
// 279 10/23/98 5:38a Jimdose
// Added SetMassEvent
//
// 278 10/22/98 4:57p Aldie
// Removed blastscale_z values
//
// 277 10/22/98 1:40a Markd
// Added stealth mode
//
// 276 10/21/98 1:29a Jimdose
// fixed crash bug with binding/unbinding and teams
//
// 275 10/20/98 11:29p Markd
// Revamped Broadcast sound
//
// 274 10/20/98 4:00p Aldie
// Put in teammaster checkwhen unbinding
//
// 273 10/20/98 3:32a Jimdose
// Made setSolidType not error out when loading savegames
// added isBoundTo to test is an entity is affected by another entity via
// binding
// binding is no longer order dependent
//
// 272 10/19/98 8:55p Markd
// Put check in setSolidType
//
// 271 10/19/98 5:29p Aldie
// Zero out total_delta when stop animating is called
//
// 270 10/19/98 12:07a Jimdose
// made all code use fast checks for inheritance (no text lookups when
// possible)
// isSubclassOf no longer requires ::_classinfo()
//
// 269 10/18/98 8:40p Jimdose
// Added GetEntName
// Made setModel check if it's SOLID_BSP when it has no model
//
// 268 10/17/98 11:02p Markd
// Added ifskill
//
// 267 10/17/98 8:11p Jimdose
// Changed Damage to DamgeEvent
//
// 266 10/15/98 3:39p Markd
// added forcefield ability
//
// 265 10/14/98 10:21p Markd
// Added debug code for AnimateFrame
//
// 264 10/13/98 11:13p Markd
// Added hurt and mutate support
//
// 263 10/13/98 5:25p Markd
// Added UseBoundingBoxEvent
//
// 262 10/11/98 8:50p Jimdose
// Added RandomGlobalEntitySound and RandomGlobalEntitySoundEvent
//
// 261 10/10/98 10:37p Markd
// made it so that targetnames with "$" could not be entered
//
// 260 10/10/98 9:13p Markd
// Took out SetAliasPrefix
//
// 259 10/10/98 3:24a Jimdose
// changed team to moveteam
//
// 258 10/09/98 10:18p Jimdose
// made setSize check mins and maxs in the edict instead of the shadow
// variables in Entity to check if it should change the size
//
// 257 10/09/98 8:58p Aldie
// Move air_finished to player
//
// 256 10/09/98 8:02p Jimdose
// made SetModel only post processinitcommands when LoadingSavegame is false
//
// 255 10/08/98 7:40p Aldie
// Added minlight
//
// 254 10/08/98 7:25p Aldie
// minlight, gravity, lightoffset
//
// 253 10/07/98 11:46p Jimdose
// Disabled ProcessInitCommands when loading savegames
// made setModel use str instead of char array
//
// 252 10/06/98 9:59p Aldie
// Added an oxygenator
//
// 251 10/06/98 9:39p Markd
// removed last_origin
//
// 250 10/05/98 11:30p Markd
// Changed sound radius to header
//
// 249 10/04/98 10:28p Aldie
// Added multiple weapon changes. Damage, flashes, quantum stuff
//
// 248 10/03/98 1:09p Aldie
// Added rendereffects flag
//
// 247 10/02/98 10:59p Jimdose
// Added SetEntNum
//
// 246 10/01/98 7:59p Markd
// Made dialog use NO_PHS
//
// 245 9/23/98 11:00p Markd
// put in some garbage collection on stuff that wasn't freed up
//
// 244 9/22/98 5:11p Jimdose
// Changed the radius of most of the sound events
//
// 243 9/22/98 3:21p Markd
// put in parentmode lockout for blood and gibs
//
// 242 9/22/98 2:59p Aldie
// Added effects command
//
// 241 9/20/98 7:11p Aldie
// Added flags to particles
//
// 240 9/20/98 3:45p Markd
// Changed default dialog channel from CHAN_DIALOG to CHAN_DIALOG_SECONDARY
//
// 239 9/17/98 6:19p Jimdose
// Made BroadcastSound use centroid instead of worldorigin for basing it's
// radius and phs checks
//
// 238 9/17/98 10:50a Markd
// fixed gun entity not being shown
//
// 237 9/15/98 6:37p Markd
// Added RotatedBounds flag support
//
// 236 9/12/98 11:27a Markd
// fixed check in Animateframe to go to the next animation
//
// 235 9/11/98 11:25p Markd
// cleared out last_animation_time when stopanimating is called
//
// 234 9/09/98 6:49p Markd
// forgot to check to see if num_frames_in_gun_anim was greater than one
//
// 233 9/09/98 6:45p Markd
// put in world weapon model animations
//
// 232 9/08/98 11:31p Jimdose
// Added AnimEvent
//
// 231 9/08/98 8:11p Markd
// Fixed Animation timing so frames weren't skipped
//
// 230 9/07/98 8:28p Markd
// Added fullradius
//
// 229 8/29/98 9:40p Jimdose
// Added call info to G_Trace
//
// 228 8/29/98 5:27p Markd
// added specialfx, replaced misc with specialfx where appropriate
//
// 227 8/28/98 7:03p Markd
// Fixed Broadcast Sound
//
// 226 8/28/98 4:13p Markd
// Increased VoiceSound radius
//
// 225 8/27/98 9:04p Jimdose
// Moved a lot of small functions to the header as inline
// Made Centroid a variable
//
// 224 8/24/98 6:51p Jimdose
// Added SetGravityAxis
//
// 223 8/22/98 9:36p Jimdose
// Renamed spawn arg
//
// 222 8/22/98 8:55p Jimdose
// Added support for alternate gravity axis
//
// 221 8/21/98 3:48p Markd
// Added new group "all" behavior
//
// 220 8/19/98 8:48p Aldie
// Reduce lag for weapons and fixed assertion
//
// 219 8/18/98 11:08p Markd
// Added new Alias System
//
// 218 8/18/98 11:12a Markd
// Added "skin" event
//
// 217 8/15/98 5:30p Jimdose
// Made RegisterAlias and RegisterAliasAndCache use a str for storing the name
// so we don't have any name length crashes
//
// 216 8/09/98 5:52p Markd
// Attached models are ThrowObjects by default
//
// 215 8/08/98 8:36p Markd
// forgot to return a value in attach function
//
// 214 8/08/98 8:27p Markd
// Added attach and bind check for self binding/attaching
//
// 213 8/08/98 7:50p Jimdose
// changed realWorld to world
//
// 212 8/07/98 4:21p Aldie
// Allow kill from the console.
//
// 211 8/06/98 10:53p Aldie
// Added weapon tweaks and kickback. Also modified blast radius damage and
// rocket jumping.
//
// 210 8/04/98 6:05p Aldie
// Added RF_DETAIL flag and removed some dead code
//
// 209 7/31/98 8:08p Jimdose
// Script commands now include flags to indicate cheats and console commands
//
// 208 7/29/98 2:31p Aldie
// Changed health to a float
//
// 207 7/26/98 1:14a Markd
// rename entityflags to flags because we wern't using entityflags in any def
// files
//
// 206 7/25/98 8:18p Markd
// Fixed animation bug
//
// 205 7/25/98 3:57p Markd
// Added EV_GotKill
//
// 204 7/24/98 6:18p Markd
// changed some CHAN_AUTO's to CHAN_BODY, changed CHAN_VOICE in dialog to
// CHAN_DIALOG
//
// 203 7/24/98 6:17p Aldie
// Dialog checking
//
// 202 7/23/98 6:17p Aldie
// Updated damage system and fixed some damage related bugs. Also put tracers
// back to the way they were, and added gib event to funcscriptmodels
//
// 201 7/22/98 10:41p Aldie
// Fixed tracers
//
// 200 7/21/98 10:42p Markd
// Fixed entity tesselation
//
// 199 7/21/98 10:04p Markd
// Added DIE_EXPLODE stuff to entity flags
//
// 198 7/21/98 9:34p Jimdose
// Added AliasExists and PrefixAliasExists
//
// 197 7/21/98 1:10p Aldie
// Added meansofdeath to obituaries
//
// 196 7/20/98 3:52p Aldie
// Made a ProcessInitCommands which is called from the event.
//
// 195 7/19/98 8:27p Jimdose
// Made setModel cancel any EV_ProcessInitCommands events
//
// 194 7/18/98 11:16p Markd
// Added takedamage and nodamage events
//
// 193 7/18/98 8:05p Markd
// Fixed bug with attached models
//
// 192 7/18/98 4:05p Markd
// Added movetype events to attach, detach and attachmodel
//
// 191 7/18/98 3:52p Markd
// Added attach, detach and attach model commands
//
// 190 7/17/98 3:50p Markd
// Added HasAnim method
//
// 189 7/15/98 11:22p Markd
// Added ProcessInitCommands when setting model
//
// 188 7/14/98 11:35p Markd
// Added PHSSound and RandomPHSSound
//
// 187 7/14/98 4:35p Markd
// fixed animation bug
//
// 186 7/14/98 3:53p Markd
// Added proper frame 0 animation if immediately animating when calling
// RandomAnimate
//
// 185 7/13/98 4:59p Aldie
// Added dead player bodies with gibbing
//
// 184 7/11/98 2:48p Markd
// Added dialog event
//
// 183 7/11/98 2:25p Markd
// Removed dialog event
//
// 182 7/10/98 11:11p Markd
// Added DialogEvent
//
// 181 7/09/98 11:52p Markd
// fixed greater than 10FPS support
//
// 180 7/09/98 9:37p Jimdose
// Added getParentVector, since some calls to getLocalVector needed the
// transform in terms of the parent, and some to the local vector. phew...
// hope that's that! :)
//
// 179 7/09/98 12:55a Markd
// put in arbitrary frames per second support for models
//
// 178 7/09/98 12:41a Markd
// Added support for greater than 10FPS
//
// 177 7/09/98 12:18a Jimdose
// As soon as I checked in the file, I realized that getLocalVector was only
// incorrect in returning the vector untouched when it didn't have a
// bindmaster. getLocalVector is independent of binding, so I fixed that and
// returned the bind call to getLocalVector to its original (correct) state.
// For binding, either way is correct, but getLocalVector is used in the
// physics for calculating a delta move in the coordinate system of the object,
// so this is more correct.
//
// 176 7/09/98 12:11a Jimdose
// fixed getLocalVector to do the dot products agains the bindmaster's
// orientation instead of the object's. This fixes a bug with binding to
// objects that are oriented.
//
// 175 7/08/98 12:55p Jimdose
// Added classname event to clear up warnings when loading def files
//
// 174 7/03/98 12:00p Aldie
// Fixed random animate to post endevent frametime in the future if anim not
// found
//
// 173 6/27/98 2:17p Aldie
// Updated CanDamage
//
// 172 6/25/98 4:58p Markd
// Fixed tesselation bug
//
// 171 6/24/98 12:39p Markd
// Added default tesselation percentage
//
// 170 6/20/98 7:49p Markd
// Added location to Killed and Pain events
//
// 169 6/20/98 3:42p Markd
// Changed default damage tesselation
//
// 168 6/19/98 7:24p Markd
// took out initialization of groups by setModel
//
// 167 6/19/98 4:45p Jimdose
// Added Centroid, DistanceTo, and WithinDistance
//
// 166 6/19/98 10:56a Markd
// re-ordered tesselation event
//
// 165 6/18/98 8:46p Jimdose
// Added better event error handling
// Added source info to events
//
// 164 6/18/98 6:14p Markd
// forgot to remove a warning
//
// 163 6/18/98 2:00p Markd
// rewrote tesselation code
//
// 162 6/17/98 7:34p Markd
// Fixed weird bug when world has targetname set!
//
// 161 6/17/98 6:16p Markd
// Fixed broadcast sound NumArgs bug
//
// 160 6/17/98 3:03p Markd
// Changed NumArgs back to previous behavior
//
// 159 6/15/98 8:04p Markd
// put in Group_Flags support
//
// 158 6/13/98 7:32p Markd
// put in default tesselation of 10 thick
//
// 157 6/10/98 7:53p Markd
// Made NumArgs behave correctly like argc
//
// 156 6/10/98 2:10p Aldie
// Updated damage function.
//
// 155 6/09/98 6:41p Markd
// made static sounds default to ATTN_IDLE instead of ATTN_STATIC
//
// 154 6/09/98 4:40p Markd
// Added additonal environment mapped effect
//
// 153 6/08/98 8:20p Markd
// When RandomAnimate fails, the animdone event is still posted
//
// 152 6/08/98 7:21p Aldie
// Fixed group command parsing
//
// 151 6/08/98 5:18p Markd
// made group events use '+' and '-' behavior
//
// 150 6/08/98 5:17p Aldie
// Moved defines to qshared.
//
// 149 6/08/98 4:58p Markd
// Added GroupModelEvent for model dynamic modifications
//
// 148 6/08/98 2:37p Markd
// changed some static sound stuff
//
// 147 6/08/98 1:54p Jimdose
// Made sure that animdoneevent was freed if the animation was stopped or
// changed
//
// 146 6/05/98 6:23p Aldie
// Added a location string to Damage
//
// 145 6/04/98 4:36p Markd
// made all script sounds not use PHS so that sounds would be sent over no
// matter what
//
// 144 5/27/98 8:35p Markd
// decreased health quotient
//
// 143 5/27/98 7:34p Markd
// reduce damage on player by 50%
//
// 142 5/27/98 4:55p Markd
// Added Inflictor message to Killed
//
// 141 5/26/98 10:54p Markd
// Made sound flags SOUND_SYNCH default
//
// 140 5/26/98 9:40p Markd
// Made damage appear instantly
//
// 139 5/26/98 9:25p Aldie
// Added kill event
//
// 138 5/26/98 8:45p Markd
// Initilialize number of groups for model
//
// 137 5/26/98 4:22p Markd
// Added Target registration stuff
//
// 136 5/26/98 1:29a Markd
// fixed rotated bounding boxes
//
// 135 5/25/98 12:22p Aldie
// Inited waterlevel and watertype
//
// 134 5/25/98 8:50p Markd
// Increased damage momentum for E3
//
// 133 5/25/98 7:59p Markd
// Added RandomPositionedSound
//
// 132 5/25/98 6:46p Jimdose
// Made animateframe, prethink and posthink into functions built into the base
// entity class
//
// 131 5/25/98 4:43p Markd
// Added SpawnParticles to entity
//
// 130 5/24/98 8:55p Jimdose
// Changed classname to a const char *
//
// 129 5/24/98 8:46p Jimdose
// Made a lot of functions more str-friendly.
// Got rid of a lot of char * based strings
// Cleaned up get spawn arg functions and sound functions
// sound functions now use consistant syntax
//
// 128 5/24/98 4:48p Jimdose
// Made char *'s const
//
// 127 5/24/98 2:47p Markd
// Made char *'s into const char *'s
//
// 126 5/24/98 1:06a Jimdose
// Added sound events for ai
//
// 125 5/23/98 6:47p Aldie
// Fixed FADE_OUT
//
// 124 5/20/98 1:42p Markd
// Added proper stopsound behavior
//
// 123 5/20/98 11:11a Markd
// removed char * dependency
//
// 122 5/15/98 6:46p Markd
// patched FLAGS command, also set max_health
//
// 121 5/13/98 4:44p Jimdose
// Changed remove time in FadeOut
// Damage checks if inflictor or attacker are NULL.
//
// 120 5/11/98 5:53p Markd
// Added aliascache command
//
// 119 5/11/98 2:19p Markd
// Fixed randomsound stuff
//
// 118 5/09/98 7:11p Markd
// Removed sound parameter from tesselate command
//
// 117 5/08/98 7:00p Markd
// Added FL_DARKEN Support
//
// 116 5/08/98 2:55p Markd
// Put in an additional randomsound method
//
// 115 5/07/98 11:32p Markd
// Removed footstep event and command
//
// 114 5/06/98 11:22a Markd
// Fixed up some sound stuff
//
// 113 5/04/98 8:31p Markd
// Removed cachemodel and cachesound
//
// 112 5/03/98 8:09p Markd
// Fixed calculate bounds bug in creator and also added precaching to
// modelindex and soundindex
//
// 111 5/03/98 7:13p Markd
// Added precache to alias event
//
// 110 5/03/98 4:31p Jimdose
// Changed Vector class. No longer includes PointsTo
//
// 109 5/03/98 2:41p Jimdose
// no change
//
// 107 5/02/98 8:41p Markd
// Added cachemodel and cachesound and also entityflags events
//
// 106 5/02/98 12:49a Jimdose
// added scale event
//
// 105 5/01/98 8:32p Markd
// Added some precache comments
//
// 104 5/01/98 8:17p Jimdose
// Init groundsurface to NULL
//
// 103 5/01/98 7:39p Markd
// changed entsound and related functions to ambientsound etc.
//
// 102 5/01/98 7:32p Jimdose
// Added groundplane, groundsurface, groundcontents
//
// 101 5/01/98 5:02p Markd
// temporarily commented out setting of children in setorigin
//
// 100 5/01/98 11:09a Markd
// Added sound to tesselation event
//
// 99 4/29/98 10:44p Markd
// Added positioned_sound and random_sound with more parameters
//
// 98 4/29/98 5:55p Jimdose
// Added "bind" spawn key to allow binding without using scripts
//
// 97 4/16/98 1:59p Jimdose
// Added EndAnimEvent and PrevFrameEvent
//
// 96 4/14/98 6:55p Markd
// Moved SetModel in Entity Constructor, added thickness to tesselation
// parameter
//
// 95 4/14/98 5:25p Markd
// Fixed setsize support
//
// 94 4/10/98 4:55p Jimdose
// fixed bug in tesselate
// damage no longer affects people in noclip mode
//
// 93 4/10/98 1:22a Markd
// Added FL_TESSELATE damage func
//
// 92 4/10/98 12:34a Jimdose
// RandomSound now uses CHAN_BODY
// Got rid of damage_inflictor
//
// 91 4/09/98 8:45p Jimdose
// Made channel non-specific sound functions use CHAN_AUTO instead of
// CHAN_VOICE
//
// 90 4/09/98 1:40p Markd
// Added a NextAnim(0) which I accidentally took out before, needed for single
// animation stuff
//
// 89 4/08/98 6:03p Jimdose
// Changed momentum from damage
//
// 88 4/07/98 8:00p Markd
// removed defhandle, changed all SINMDL calls to modelindex calls, removed
// SINMDL prefix
//
// 87 4/07/98 5:40p Jimdose
// Made animdone events be posted 0 time in future instead of FRAMETIME / 2
//
// 86 4/06/98 8:25p Markd
// Can't use centroid fix with B-models, only A-models
//
// 85 4/06/98 7:21p Markd
// Fixed PVS tesselation bug, fixed it by sending over centroid instead.
//
// 84 4/06/98 6:40p Jimdose
// BecomeSolid and BecomeNonSolid no longer change the movetype
// BecomeSolid now handles a-model and b-model entities
//
// 83 4/06/98 5:44p Jimdose
// Moved the "angles" stuff to Object and Sentient
//
// 82 4/06/98 12:02a Markd
// Grabbed a float as an integer instead
//
// 81 4/05/98 10:42p Markd
// Added Tesselate Event
//
// 80 4/05/98 10:17p Jimdose
// added lastorigin
//
// 79 4/05/98 9:41p Markd
// Added "angles" and "angle" support
//
// 78 4/05/98 7:19p Aldie
// Added dynamic lights.
//
// 77 4/05/98 1:55a Jimdose
// Added SetModelEvent
//
// 76 4/04/98 7:51p Jimdose
// Oops! trace->surface->surfaceinfo is NULL if it's an a-model! :)
//
// 75 4/04/98 7:29p Jimdose
// Added HitSky that takes a generic trace
//
// 74 4/04/98 6:03p Jimdose
// Added HitSky and RandomSound
//
// 73 4/02/98 4:51p Jimdose
// Added animation control events
// Made RandomSound default volume to 1
// Made droptofloor accept the max distance to fall
//
// 72 3/31/98 5:40p Markd
// Added StartAnimatingEvent
//
// 71 3/31/98 4:21p Jimdose
// Fixed angle mod
//
// 70 3/31/98 3:03p Markd
// Fixed CalculateBounds and set proper solidtype for models
//
// 69 3/31/98 2:26p Jimdose
// Got rid of some unneeded R_ConcatRotations
//
// 68 3/31/98 2:04p Jimdose
// Fixed binding bug
//
// 67 3/30/98 11:39p Markd
// Added modelIndex function
//
// 66 3/30/98 11:20p Markd
// Added scale support to entity
//
// 65 3/30/98 11:17p Markd
// Added sound and random sound support
//
// 64 3/30/98 9:14p Markd
// Fixed attenuation of footstep sounds
//
// 63 3/30/98 9:54p Jimdose
// Setmodel now prepends "models/" to model names.
//
// 62 3/30/98 7:30p Markd
// Added FootStep method
//
// 61 3/30/98 3:09p Jimdose
// made total_delta based on the entity's scale
//
// 60 3/29/98 9:01p Markd
// Added Frame events and Init Events
//
// 59 3/29/98 9:38p Jimdose
// Changed Killed and Pain to events
// Added damage event
// last_frame_in_anim wasn't being initialized when the entity was allocated
//
// 58 3/27/98 7:01p Markd
// Added vieworigin and viewangle
//
// 57 3/26/98 8:24p Jimdose
// Added GetBone (not working yet)
// Changed groundentity to an edict_t *
//
// 56 3/25/98 7:13p Markd
// Added detach to free event and made sure that parents exist when detaching
//
// 55 3/25/98 3:24p Markd
// Added attach, detach, model binding variables and modified setorigin
//
// 54 3/24/98 4:54p Jimdose
// Changed usage of GetToken to GetString so that script variables can be used
//
// 53 3/23/98 1:31p Jimdose
// Revamped event and command system
//
// 52 3/18/98 7:49p Jimdose
// Updated sound for new sound system
//
// 51 3/18/98 7:19p Jimdose
// Added RandomAnimate
// Tweaked animation code
//
// 50 3/11/98 6:51p Aldie
// Added alpha to the render state for an entity.
//
// 49 3/11/98 11:32a Markd
// Added total_delta variable
//
// 48 3/09/98 2:57p Aldie
// Fixed some alpha calculations in entity.
//
// 47 3/09/98 2:49p Jimdose
// Working on euler-quat stuff
//
// 46 3/07/98 2:04p Markd
// Got animation system up and running (no pun intended)
//
// 45 3/05/98 2:49p Jimdose
// Made playsound command work again.
//
// 44 3/02/98 8:49p Jimdose
// Changed the classid parameter of CLASS_DECLARATION to a quoted string so
// that you could have a NULL classid.
//
// 43 3/02/98 5:51p Jimdose
// Added entname to edict_t.
// Copy classname into entname
// No longer set default targetname to edict#
//
// 42 2/18/98 8:08p Jimdose
// Changed calls to getEntityFromScript to GetObject calls
//
// 41 2/17/98 6:58p Jimdose
// Gave entities a default target name.
// no longer pass script into interpretCommand
//
// 40 2/16/98 2:33p Jimdose
// Fixed bug in bind where an uninitialized pointer was referenced.
//
// 39 2/16/98 1:58p Jimdose
// Added object teams
// Added true hierarchial binding
// Fixed bug with spawning using specific edicts.
//
// 38 2/06/98 5:47p Jimdose
// Added link and unlink
// Removed touch and think functions
// Removed Spawn (all spawning done in constructor)
// Added client pointer
// No longer initialize mins and maxs to '0 0 0' since it screws up bmodels.
//
// 37 2/03/98 10:57a Jimdose
// Updated to work with Quake 2 engine
// Moved initialization to constructor and removed Init function
//
// 35 12/15/97 11:56a Markd
// zeroed out velocity in "notsolid"
//
// 34 12/15/97 1:34a Jimdose
// Decreased the momentum added from damage
//
// 33 12/13/97 5:42p Markd
// Made it so that ProcessNoteCommands no longer uses a static Script variable
//
// 32 12/12/97 7:19p Markd
// Fixed model spawning stuff for decals and *models
//
// 31 12/12/97 4:27p Markd
// Added "soundprefix"
//
// 30 12/12/97 2:10p Markd
// Only calls animcallback if animate is still true
//
// 29 12/12/97 1:19p Markd
// Moved model setArg to before setModel
//
// 28 12/12/97 1:00p Jimdose
// Added warning to AnimateThink when no animation is set
//
// 27 12/11/97 7:41p Markd
// moved note processing into setmodel
//
// 26 12/11/97 3:34p Markd
// Fixed SetArg for "model", set "model" to "" when it was processed
// checked for global_loading in registersound
//
// 25 12/08/97 4:28p Aldie
// Changed FadeOut factors so that the blood splats look ok.
//
// 24 12/06/97 4:54p Markd
// Added default spawing behavior
// Added alpha, target, targetname, spawnflags, model, origin, angle, angles to
// interpretCommand
//
// 23 12/05/97 3:03p Jimdose
// Now responds to EVENT_REMOVE.
// Made it so that if "model" is set when spawned then it precaches that model.
//
// 22 12/03/97 6:40p Markd
// changed how alias stuff works for sounds
//
// 21 11/24/97 6:54p Markd
// Added Register Sound and Random Sound, added Setsize
//
// 20 11/18/97 5:30p Markd
// Added weighting in RandomAnimate, also commented out warnings in
// InterpretCommands (they were debug messages)
//
// 19 11/17/97 5:45p Markd
// Added $owner command to ProcessFrameNotes routine
//
// 18 11/15/97 6:53p Markd
// Added ProcessNoteCommands, Added RandomAnimate, added animloop_ variables
// for animation loop processing
//
// 17 11/15/97 2:48p Jimdose
// Added ProcessEvent call which calls System->ProcessEvent
//
// 16 11/14/97 4:44p Jimdose
// Added PostEvent
//
// 15 10/30/97 7:42p Jimdose
// In Damage, now only add momentum if not a bsp model
//
// 14 10/29/97 4:19p Jimdose
// Added FadeOut.
//
// 13 10/28/97 4:13p Jimdose
// Added interpretCommand to make Entity be controllable by scripts via
// ScriptMaster.
//
// 12 10/27/97 3:30p Jimdose
// Removed dependency on quakedef.h
//
// 11 10/08/97 8:52p Jimdose
// Added EVENT_USE to Event()
//
// 10 10/08/97 6:03p Jimdose
// Began vehicle support.
//
// 9 10/01/97 10:27a Markd
// forgot to put break statement next to zero time animation
//
// 8 10/01/97 10:23a Markd
// Fixed Animate bug, some animations had ZERO length animation times, still
// investigating that problem
//
// 7 9/30/97 9:59p Markd
// Fixed AnimTime stuff
//
// 6 9/30/97 5:55p Jimdose
// Damaged entities now get velocity from inflictor
//
// 5 9/30/97 2:39p Markd
// Fixed Animate stuff
//
// 4 9/29/97 6:18p Markd
// working on animate
//
// 3 9/26/97 6:13p Jimdose
// Added standard Ritual headers
//
// DESCRIPTION:
// Base class for all enities that are controlled by Sin. If you have any
// object that should be called on a periodic basis and it is not an entity,
// then you have to have an dummy entity that calls it.
//
// An entity in Sin is any object that is not part of the world. Any non-world
// object that is visible in Sin is an entity, although it is not required that
// all entities be visible to the player. Some objects are basically just virtual
// constructs that act as an instigator of certain actions, for example, some
// triggers are invisible and cannot be touched, but when activated by other
// objects can cause things to happen.
//
// All entities are capable of receiving messages from Sin or from other entities.
// Messages received by an entity may be ignored, passed on to their superclass,
// or acted upon by the entity itself. The programmer must decide on the proper
// action for the entity to take to any message. There will be many messages
// that are completely irrelevant to an entity and should be ignored. Some messages
// may require certain states to exist and if they are received by an entity when
// it these states don't exist may indicate a logic error on the part of the
// programmer or map designer and should be reported as warnings (if the problem is
// not severe enough for the game to be halted) or as errors (if the problem should
// not be ignored at any cost).
//
#include "entity.h"
#include "worldspawn.h"
#include "scriptmaster.h"
#include "sentient.h"
#include "misc.h"
#include "specialfx.h"
#include "object.h"
#include "player.h"
CLASS_DECLARATION( Listener, Entity, NULL );