2498
|
1 #pragma once
|
|
2 #include "Items.h"
|
|
3
|
|
4 enum
|
|
5 {
|
|
6 OBJECT_40 = 0x40
|
|
7 , OBJECT_ATTACHED_TO_ACTOR = 0x80
|
|
8 };
|
|
9
|
|
10 #define MAX_SPRITE_OBJECTS 1000
|
|
11 /* 72 */
|
|
12 #pragma pack(push, 1)
|
|
13 struct SpriteObject
|
|
14 {
|
|
15 inline bool AttachedToActor() const {return (uAttributes & OBJECT_ATTACHED_TO_ACTOR) != 0;}
|
|
16
|
|
17 SpriteObject();
|
|
18 int Create(int yaw, int pitch, int a4, int a5);
|
|
19 void _46BEF1_apply_spells_aoe();
|
|
20 void ExplosionTraps();
|
|
21
|
|
22 static void UpdateObject_fn0_BLV(unsigned int uLayingItemID);
|
|
23 static void UpdateObject_fn0_ODM(unsigned int uLayingItemID);
|
|
24 static void OnInteraction(unsigned int uLayingItemID);
|
|
25 static bool sub_42F7EB_DropItemAt(unsigned int uSpriteID, int x, int y, int z, int a4, int count, int a7, unsigned __int16 attributes, ItemGen *a9);
|
|
26 static void sub_42F960_create_object(int x, int y, int z);
|
|
27 static void InitializeSpriteObjects();
|
|
28
|
|
29
|
|
30 unsigned __int16 uType;
|
|
31 unsigned __int16 uObjectDescID;
|
|
32 struct Vec3_int_ vPosition;
|
|
33 struct Vec3_short_ vVelocity;
|
|
34 unsigned __int16 uFacing;
|
|
35 unsigned __int16 uSoundID;
|
|
36 unsigned __int16 uAttributes;
|
|
37 __int16 uSectorID;
|
|
38 unsigned __int16 uSpriteFrameID;
|
|
39 __int16 field_20;
|
|
40 __int16 field_22_glow_radius_multiplier;
|
|
41 struct ItemGen stru_24;
|
|
42 int spell_id;
|
|
43 int spell_level;
|
|
44 int spell_skill;
|
|
45 int field_54;
|
|
46 int spell_caster_pid;
|
|
47 int spell_target_pid;
|
|
48 char field_60_distance_related_prolly_lod;
|
|
49 char field_61;
|
|
50 char field_62[2];
|
|
51 Vec3_int_ field_64;
|
|
52 };
|
|
53 #pragma pack(pop)
|
|
54
|
|
55
|
|
56 void CompactLayingItemsList();
|
|
57
|
|
58 extern size_t uNumSpriteObjects;
|
|
59 extern std::array<SpriteObject, MAX_SPRITE_OBJECTS> pSpriteObjects;
|
|
60
|
|
61 bool __fastcall _46BFFA_check_object_intercept(unsigned int uLayingItemID, signed int a2);
|
|
62 void __fastcall sub_43A97E(unsigned int uLayingItemID, signed int a2); // idb
|