mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-12 21:47:03 +03:00
Decompiled InitialiseHair() and InitialiseSpecialEffects()
- added macro for getting mesh: MESHES(slot, mesh). - fixed duplicate array in vars.h. - fixed lara left hand flare mesh.
This commit is contained in:
parent
8a6dffe0d2
commit
04e93b1998
13 changed files with 220 additions and 140 deletions
|
@ -72,10 +72,10 @@ void NewObjects()
|
|||
obj->saveAnim = true;
|
||||
obj->saveFlags = true;
|
||||
|
||||
Bones[obj->boneIndex + 192] |= ROT_Z;
|
||||
Bones[obj->boneIndex + 192] |= ROT_Y;
|
||||
Bones[obj->boneIndex + 208] |= ROT_Z;
|
||||
Bones[obj->boneIndex + 208] |= ROT_Y;
|
||||
Bones[obj->boneIndex + 48 * 4] |= ROT_Z;
|
||||
Bones[obj->boneIndex + 48 * 4] |= ROT_Y;
|
||||
Bones[obj->boneIndex + 52 * 4] |= ROT_Z;
|
||||
Bones[obj->boneIndex + 52 * 4] |= ROT_Y;
|
||||
}
|
||||
|
||||
obj = &Objects[ID_BAT];
|
||||
|
@ -165,14 +165,14 @@ void NewObjects()
|
|||
obj->saveAnim = true;
|
||||
obj->saveFlags = true;
|
||||
|
||||
Bones[obj->boneIndex + 112] |= ROT_Y;
|
||||
Bones[obj->boneIndex + 112] |= ROT_X;
|
||||
Bones[obj->boneIndex + 352] |= ROT_Y;
|
||||
Bones[obj->boneIndex + 352] |= ROT_X;
|
||||
Bones[obj->boneIndex + 28 * 4] |= ROT_Y;
|
||||
Bones[obj->boneIndex + 28 * 4] |= ROT_X;
|
||||
Bones[obj->boneIndex + 88 * 4] |= ROT_Y;
|
||||
Bones[obj->boneIndex + 88 * 4] |= ROT_X;
|
||||
|
||||
Meshes[obj->meshIndex + 36] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 32];
|
||||
Meshes[obj->meshIndex + 60] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 56];
|
||||
Meshes[obj->meshIndex + 36] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 22];
|
||||
Meshes[obj->meshIndex + 18 * 2] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 16 * 2];
|
||||
Meshes[obj->meshIndex + 30 * 2] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 28 * 2];
|
||||
Meshes[obj->meshIndex + 18 * 2] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 11 * 2];
|
||||
}
|
||||
|
||||
obj = &Objects[ID_BADDY2];
|
||||
|
@ -191,10 +191,10 @@ void NewObjects()
|
|||
obj->saveAnim = true;
|
||||
obj->saveFlags = true;
|
||||
|
||||
Bones[obj->boneIndex + 112] |= ROT_Y;
|
||||
Bones[obj->boneIndex + 112] |= ROT_X;
|
||||
Bones[obj->boneIndex + 352] |= ROT_Y;
|
||||
Bones[obj->boneIndex + 352] |= ROT_X;
|
||||
Bones[obj->boneIndex + 28 * 4] |= ROT_Y;
|
||||
Bones[obj->boneIndex + 28 * 4] |= ROT_X;
|
||||
Bones[obj->boneIndex + 88 * 4] |= ROT_Y;
|
||||
Bones[obj->boneIndex + 88 * 4] |= ROT_X;
|
||||
}
|
||||
|
||||
obj = &Objects[ID_SAS_CAIRO];
|
||||
|
@ -215,8 +215,8 @@ void NewObjects()
|
|||
|
||||
Bones[obj->boneIndex] |= ROT_Y;
|
||||
Bones[obj->boneIndex] |= ROT_X;
|
||||
Bones[obj->boneIndex + 112] |= ROT_Y;
|
||||
Bones[obj->boneIndex + 112] |= ROT_X;
|
||||
Bones[obj->boneIndex + 28 * 4] |= ROT_Y;
|
||||
Bones[obj->boneIndex + 28 * 4] |= ROT_X;
|
||||
}
|
||||
|
||||
obj = &Objects[ID_MUMMY];
|
||||
|
@ -234,9 +234,9 @@ void NewObjects()
|
|||
obj->saveAnim = true;
|
||||
obj->saveFlags = true;
|
||||
|
||||
Bones[obj->boneIndex + 112] |= ROT_Y;
|
||||
Bones[obj->boneIndex + 112] |= ROT_X;
|
||||
Bones[obj->boneIndex + 288] |= ROT_Y;
|
||||
Bones[obj->boneIndex + 28 * 4] |= ROT_Y;
|
||||
Bones[obj->boneIndex + 28 * 4] |= ROT_X;
|
||||
Bones[obj->boneIndex + 72 * 4] |= ROT_Y;
|
||||
}
|
||||
|
||||
obj = &Objects[ID_QUAD];
|
||||
|
@ -913,9 +913,9 @@ void NewObjects()
|
|||
Bones[obj->boneIndex + 20 * 4] |= ROT_X | ROT_Y;
|
||||
|
||||
// TODO: check if constants are byte, short or int
|
||||
Meshes[obj->meshIndex + 124] = Meshes[Objects[ID_MESHSWAP2].meshIndex + 120];
|
||||
Meshes[obj->meshIndex + 148] = Meshes[Objects[ID_MESHSWAP2].meshIndex + 144];
|
||||
Meshes[obj->meshIndex + 172] = Meshes[Objects[ID_MESHSWAP2].meshIndex + 168];
|
||||
Meshes[obj->meshIndex + 60 * 2] = Meshes[Objects[ID_MESHSWAP2].meshIndex + 60 * 2];
|
||||
Meshes[obj->meshIndex + 72 * 2] = Meshes[Objects[ID_MESHSWAP2].meshIndex + 72 * 2];
|
||||
Meshes[obj->meshIndex + 84 * 2] = Meshes[Objects[ID_MESHSWAP2].meshIndex + 84 * 2];
|
||||
}
|
||||
|
||||
obj = &Objects[ID_CROCODILE];
|
||||
|
@ -2939,6 +2939,67 @@ void TrapObjects()
|
|||
}
|
||||
}
|
||||
|
||||
void InitialiseHair()
|
||||
{
|
||||
int* bone;
|
||||
|
||||
FirstHair = 1;
|
||||
bone = &Bones[Objects[ID_HAIR].boneIndex];
|
||||
|
||||
Hairs[0].pos.yRot = 0;
|
||||
Hairs[0].pos.xRot = -0x4000;
|
||||
|
||||
// normal hair
|
||||
for (int i = 1; i < HAIR_SEGMENTS; i++, bone += 4)
|
||||
{
|
||||
Hairs[i].pos.xPos = *(bone + 1);
|
||||
Hairs[i].pos.yPos = *(bone + 2);
|
||||
Hairs[i].pos.zPos = *(bone + 3);
|
||||
Hairs[i].pos.xRot = -0x4000;
|
||||
Hairs[i].pos.yRot = 0;
|
||||
Hairs[i].pos.zRot = 0;
|
||||
//Hairs[i].hvel.x = 0;
|
||||
//Hairs[i].hvel.y = 0;
|
||||
//Hairs[i].hvel.z = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void InitialiseSpecialEffects()
|
||||
{
|
||||
int i;
|
||||
SPARKS* sptr;
|
||||
|
||||
memset(&Sparks, 0, MAX_SPARKS * sizeof(SPARKS));
|
||||
memset(&FireSparks, 0, MAX_SPARKS_FIRE * sizeof(FIRE_SPARKS));
|
||||
memset(&SmokeSparks, 0, MAX_SPARKS_SMOKE * sizeof(SMOKE_SPARKS));
|
||||
memset(&GunShells, 0, MAX_GUNSHELL * sizeof(GUNSHELL_STRUCT));
|
||||
memset(&GunFlashes, 0, (MAX_GUNFLASH * sizeof(GUNFLASH_STRUCT)) - sizeof(int)); // the size is 200 on IDA (without -4 it's 204 ??)
|
||||
memset(&Debris, 0, MAX_DEBRIS * sizeof(DEBRIS_STRUCT));
|
||||
memset(&Blood, 0, MAX_SPARKS_BLOOD * sizeof(BLOOD_STRUCT));
|
||||
memset(&Splashes, 0, MAX_SPLASH * sizeof(SPLASH_STRUCT));
|
||||
memset(&Ripples, 0, MAX_RIPPLES * sizeof(RIPPLE_STRUCT));
|
||||
memset(&Bubbles, 0, MAX_BUBBLES * sizeof(BUBBLE_STRUCT));
|
||||
memset(&Drips, 0, MAX_DRIPS * sizeof(DRIP_STRUCT));
|
||||
memset(&ShockWaves, 0, MAX_SHOCKWAVE * sizeof(SHOCKWAVE_STRUCT));
|
||||
|
||||
sptr = &Sparks[0];
|
||||
for (i = 0; i < MAX_SPARKS; i++)
|
||||
{
|
||||
sptr->on = false;
|
||||
sptr->dynamic = -1;
|
||||
sptr++;
|
||||
}
|
||||
|
||||
NextFireSpark = 1;
|
||||
NextSmokeSpark = 0;
|
||||
NextGunShell = 0;
|
||||
NextBubble = 0;
|
||||
NextDrip = 0;
|
||||
NextDebris = 0;
|
||||
NextBlood = 0;
|
||||
NextItem = NO_ITEM;
|
||||
}
|
||||
|
||||
void PickupObjects()
|
||||
{
|
||||
OBJECT_INFO* obj;
|
||||
|
@ -3569,14 +3630,14 @@ void InitialiseObjects()
|
|||
// Reset MIP flag so we can reuse slots
|
||||
//for (short i = 0; i < ID_NUMBER_OBJECTS; i++)
|
||||
// Objects[i].objectMip = NULL;
|
||||
|
||||
|
||||
// New objects imported from old TRs
|
||||
NewObjects();
|
||||
|
||||
// User defined objects
|
||||
CustomObjects();
|
||||
|
||||
InitialiseHairs();
|
||||
InitialiseHair();
|
||||
InitialiseSpecialEffects();
|
||||
|
||||
NumRPickups = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue