From 8b19b8a0186b3e7fd50b542c18e1a646e9f0add3 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Thu, 27 Oct 2022 00:15:16 +1000 Subject: [PATCH] Replace individual x/y/z copies with struct copies where possible --- src/game/bg.c | 84 +++--------- src/game/bondbike.c | 24 +--- src/game/bondeyespy.c | 12 +- src/game/bondgrab.c | 36 ++--- src/game/bondgun.c | 100 ++++---------- src/game/bondhead.c | 8 +- src/game/bondmove.c | 8 +- src/game/bondwalk.c | 28 +--- src/game/bot.c | 20 +-- src/game/botmgr.c | 4 +- src/game/botroom.c | 8 +- src/game/chr.c | 16 +-- src/game/chraction.c | 252 +++++++++-------------------------- src/game/explosions.c | 32 ++--- src/game/gunfx.c | 60 +++------ src/game/lv.c | 8 +- src/game/menugfx.c | 4 +- src/game/nbomb.c | 12 +- src/game/player.c | 100 ++++---------- src/game/prop.c | 40 ++---- src/game/propobj.c | 300 +++++++++++------------------------------- src/game/propsnd.c | 4 +- src/game/room.c | 4 +- src/game/setup.c | 28 +--- src/game/shards.c | 4 +- src/game/sky.c | 12 +- src/game/smoke.c | 16 +-- src/game/sparks.c | 4 +- src/game/splat.c | 8 +- src/game/training.c | 24 +--- src/game/utils.c | 8 +- src/game/wallhit.c | 32 ++--- src/lib/collision.c | 176 +++++++------------------ src/lib/lib_17ce0.c | 4 +- src/lib/model.c | 60 +++------ 35 files changed, 385 insertions(+), 1155 deletions(-) diff --git a/src/game/bg.c b/src/game/bg.c index 3031974a3..d88232487 100644 --- a/src/game/bg.c +++ b/src/game/bg.c @@ -1221,9 +1221,7 @@ Gfx *bgRenderRoomXrayPass(Gfx *gdl, s32 roomnum, struct roomblock *block, bool r struct coord sp28; f32 sum; - sp34.x = coords[1].x; - sp34.y = coords[1].y; - sp34.z = coords[1].z; + sp34 = coords[1]; sp28.x = coords[0].x - player->cam_pos.x; sp28.y = coords[0].y - player->cam_pos.y; @@ -2439,9 +2437,7 @@ void func0f15b3e4(s32 portalnum, struct coord *a, struct coord *b, struct coord struct portalvertices *pvertices; pvertices = (struct portalvertices *)((u32)g_BgPortals + g_BgPortals[portalnum].verticesoffset); - a->x = pvertices->vertices[0].x; - a->y = pvertices->vertices[0].y; - a->z = pvertices->vertices[0].z; + *a = pvertices->vertices[0]; b->x = pvertices->vertices[1].x - pvertices->vertices[0].x; b->y = pvertices->vertices[1].y - pvertices->vertices[0].y; @@ -3205,9 +3201,7 @@ void bgBuildTables(s32 stagenum) } tmp = &var800a4ccc[i]; - tmp->coord.x = tmp2.coord.x; - tmp->coord.y = tmp2.coord.y; - tmp->coord.z = tmp2.coord.z; + tmp->coord = tmp2.coord; tmp->min = tmp2.min; tmp->max = tmp2.max; } @@ -3652,9 +3646,7 @@ bool func0f15d08c(struct coord *a, struct coord *b) { Mtxf *matrix = camGetWorldToScreenMtxf(); - b->x = a->x; - b->y = a->y; - b->z = a->z; + *b = *a; mtx4TransformVecInPlace(matrix, b); cam0f0b4d68(b, b->f); @@ -6291,12 +6283,8 @@ bool bgTestHitOnObj(struct coord *arg0, struct coord *arg1, struct coord *arg2, lowestsqdist = sqdist; - hitthing->unk00.x = sp8c.x; - hitthing->unk00.y = sp8c.y; - hitthing->unk00.z = sp8c.z; - hitthing->unk0c.x = sp80.x; - hitthing->unk0c.y = sp80.y; - hitthing->unk0c.z = sp80.z; + hitthing->unk00 = sp8c; + hitthing->unk0c = sp80; hitthing->unk18 = &vtx[points[0]]; hitthing->unk1c = &vtx[points[1]]; hitthing->unk20 = &vtx[points[2]]; @@ -6569,12 +6557,8 @@ bool bgTestHitOnChr(struct model *model, struct coord *arg1, struct coord *arg2, *sqdistptr = sqdist; - hitthing->unk00.x = sp84.x; - hitthing->unk00.y = sp84.y; - hitthing->unk00.z = sp84.z; - hitthing->unk0c.x = sp78.x; - hitthing->unk0c.y = sp78.y; - hitthing->unk0c.z = sp78.z; + hitthing->unk00 = sp84; + hitthing->unk0c = sp78; hitthing->unk18 = &vtx[points[0]]; hitthing->unk1c = &vtx[points[1]]; hitthing->unk20 = &vtx[points[2]]; @@ -6793,12 +6777,8 @@ bool bgTestHitInVtxBatch(struct coord *arg0, struct coord *arg1, struct coord *a if (hit) { lowestsqdist = sqdist; - hitthing->unk00.x = spb0.x; - hitthing->unk00.y = spb0.y; - hitthing->unk00.z = spb0.z; - hitthing->unk0c.x = spa4.x; - hitthing->unk0c.y = spa4.y; - hitthing->unk0c.z = spa4.z; + hitthing->unk00 = spb0; + hitthing->unk0c = spa4; hitthing->unk18 = &vtx[points[0]]; hitthing->unk1c = &vtx[points[1]]; hitthing->unk20 = &vtx[points[2]]; @@ -6941,13 +6921,9 @@ bool bgTestHitInRoom(struct coord *frompos, struct coord *topos, s32 roomnum, st count = 0; - spb8.x = frompos->x; - spb8.y = frompos->y; - spb8.z = frompos->z; + spb8 = *frompos; - spac.x = topos->x; - spac.y = topos->y; - spac.z = topos->z; + spac = *topos; spa0.x = spac.x - spb8.x; spa0.y = spac.y - spb8.y; @@ -7087,12 +7063,8 @@ bool bgTestHitInRoom(struct coord *frompos, struct coord *topos, s32 roomnum, st f20 += f0 * f0; if (f20 < spc8) { - hitthing->unk00.x = sp60.unk00.x; - hitthing->unk00.y = sp60.unk00.y; - hitthing->unk00.z = sp60.unk00.z; - hitthing->unk0c.x = sp60.unk0c.x; - hitthing->unk0c.y = sp60.unk0c.y; - hitthing->unk0c.z = sp60.unk0c.z; + hitthing->unk00 = sp60.unk00; + hitthing->unk0c = sp60.unk0c; hitthing->unk18 = sp60.unk18; hitthing->unk1c = sp60.unk1c; hitthing->unk20 = sp60.unk20; @@ -7123,9 +7095,7 @@ bool roomIsLoaded(s32 room) bool roomContainsCoord(struct coord *pos, s16 roomnum) { struct coord copy; - copy.x = pos->x; - copy.y = pos->y; - copy.z = pos->z; + copy = *pos; return copy.f[0] >= g_Rooms[roomnum].bbmin[0] && copy.f[0] <= g_Rooms[roomnum].bbmax[0] @@ -7308,9 +7278,7 @@ void bgFindRoomsByPos(struct coord *posarg, s16 *inrooms, s16 *aboverooms, s32 m s32 i; s32 j; - pos.x = posarg->x; - pos.y = posarg->y; - pos.z = posarg->z; + pos = *posarg; // Try rooms which have portals for (i = 1; i < g_Vars.roomcount; i++) { @@ -8750,18 +8718,12 @@ void func0f164ab8(s32 portalnum) roomnum1 = g_BgPortals[portalnum].roomnum1; roomnum2 = g_BgPortals[portalnum].roomnum2; - room1centre.x = g_Rooms[roomnum1].centre.x; - room1centre.y = g_Rooms[roomnum1].centre.y; - room1centre.z = g_Rooms[roomnum1].centre.z; + room1centre = g_Rooms[roomnum1].centre; - room2centre.x = g_Rooms[roomnum2].centre.x; - room2centre.y = g_Rooms[roomnum2].centre.y; - room2centre.z = g_Rooms[roomnum2].centre.z; + room2centre = g_Rooms[roomnum2].centre; ptr = &var800a4ccc[portalnum]; - sp28.coord.x = ptr->coord.x; - sp28.coord.y = ptr->coord.y; - sp28.coord.z = ptr->coord.z; + sp28.coord = ptr->coord; sp28.min = ptr->min; sp28.max = ptr->max; @@ -8952,13 +8914,9 @@ void bgFindEnteredRooms(struct coord *bbmin, struct coord *bbmax, s16 *rooms, s3 struct coord portalbbmin; struct coord portalbbmax; - propbbmin.x = bbmin->x; - propbbmin.y = bbmin->y; - propbbmin.z = bbmin->z; + propbbmin = *bbmin; - propbbmax.x = bbmax->x; - propbbmax.y = bbmax->y; - propbbmax.z = bbmax->z; + propbbmax = *bbmax; i = 0; diff --git a/src/game/bondbike.c b/src/game/bondbike.c index f46c58956..92c814607 100644 --- a/src/game/bondbike.c +++ b/src/game/bondbike.c @@ -40,9 +40,7 @@ void bbikeInit(void) g_Vars.currentplayer->bondentert = 0; g_Vars.currentplayer->bondentert2 = 1; - g_Vars.currentplayer->bondenterpos.x = g_Vars.currentplayer->prop->pos.x; - g_Vars.currentplayer->bondenterpos.y = g_Vars.currentplayer->prop->pos.y; - g_Vars.currentplayer->bondenterpos.z = g_Vars.currentplayer->prop->pos.z; + g_Vars.currentplayer->bondenterpos = g_Vars.currentplayer->prop->pos; mtx3ToMtx4(hoverbike->base.realrot, &matrix); mtx4SetTranslation(&hoverbike->base.prop->pos, &matrix); @@ -153,9 +151,7 @@ void bbikeTryDismountAngle(f32 relativeangle, f32 distance) if (result == CDRESULT_NOCOLLISION) { g_Vars.currentplayer->walkinitmove = true; - g_Vars.currentplayer->walkinitpos.x = pos.x; - g_Vars.currentplayer->walkinitpos.y = pos.y; - g_Vars.currentplayer->walkinitpos.z = pos.z; + g_Vars.currentplayer->walkinitpos = pos; g_Vars.currentplayer->moveinitspeed.x = bike->speed[0]; g_Vars.currentplayer->moveinitspeed.y = 0; @@ -315,9 +311,7 @@ void bbike0f0d2b40(struct defaultobj *bike, struct coord *arg1, f32 arg2, struct cdGetEdge(&sp78, &sp6c, 333, "bondbike.c"); - sp60.x = bike->prop->pos.x; - sp60.y = bike->prop->pos.y; - sp60.z = bike->prop->pos.z; + sp60 = bike->prop->pos; sp54.x = obstacle->prop->pos.x - bike->prop->pos.x; sp54.y = obstacle->prop->pos.y - bike->prop->pos.y; @@ -383,9 +377,7 @@ s32 bbikeCalculateNewPosition(struct coord *vel, f32 angledelta) f32 radius; f32 halfradius; - dstpos.x = g_Vars.currentplayer->hoverbike->pos.x; - dstpos.y = g_Vars.currentplayer->hoverbike->pos.y; - dstpos.z = g_Vars.currentplayer->hoverbike->pos.z; + dstpos = g_Vars.currentplayer->hoverbike->pos; if (vel->x || vel->y || vel->z) { propSetPerimEnabled(g_Vars.currentplayer->prop, false); @@ -559,9 +551,7 @@ void bbikeUpdateVertical(struct coord *pos) g_Vars.currentplayer->vv_theta = (M_BADTAU - angle) * 360.0f / M_BADTAU; - g_Vars.currentplayer->prop->pos.x = pos->x; - g_Vars.currentplayer->prop->pos.y = pos->y; - g_Vars.currentplayer->prop->pos.z = pos->z; + g_Vars.currentplayer->prop->pos = *pos; ground = cdFindGroundInfoAtCyl(&g_Vars.currentplayer->prop->pos, g_Vars.currentplayer->bond2.radius, @@ -832,9 +822,7 @@ void bbikeTick(void) static f32 var80070f04 = 0; if (g_Vars.lvupdate240 > 0) { - g_Vars.currentplayer->bondprevpos.x = g_Vars.currentplayer->prop->pos.x; - g_Vars.currentplayer->bondprevpos.y = g_Vars.currentplayer->prop->pos.y; - g_Vars.currentplayer->bondprevpos.z = g_Vars.currentplayer->prop->pos.z; + g_Vars.currentplayer->bondprevpos = g_Vars.currentplayer->prop->pos; g_Vars.currentplayer->bondbreathing -= (0.75f * g_Vars.lvupdate60freal) / 2700.0f; diff --git a/src/game/bondeyespy.c b/src/game/bondeyespy.c index 0a129a4a7..08c24c266 100644 --- a/src/game/bondeyespy.c +++ b/src/game/bondeyespy.c @@ -201,9 +201,7 @@ s32 eyespyCalculateNewPosition(struct coord *vel) if (result == CDRESULT_NOCOLLISION) { // Apply the destination - eyespyprop->pos.x = dstpos.x; - eyespyprop->pos.y = dstpos.y; - eyespyprop->pos.z = dstpos.z; + eyespyprop->pos = dstpos; propDeregisterRooms(eyespyprop); @@ -563,9 +561,7 @@ bool eyespyTryLaunch(void) insafe = stageGetIndex(g_Vars.stagenum) == STAGEINDEX_G5BUILDING && g_Vars.currentplayer->prop->rooms[0] == 0x53; - playerpos.x = g_Vars.currentplayer->prop->pos.x; - playerpos.y = g_Vars.currentplayer->prop->pos.y; - playerpos.z = g_Vars.currentplayer->prop->pos.z; + playerpos = g_Vars.currentplayer->prop->pos; chr->soundtimer = TICKS(10); @@ -867,9 +863,7 @@ void eyespyProcessInput(bool allowbuttons) g_Vars.currentplayer->eyespy->startuptimer60 = TICKS(50); } - chr->prevpos.x = g_Vars.currentplayer->eyespy->prop->pos.x; - chr->prevpos.y = g_Vars.currentplayer->eyespy->prop->pos.y; - chr->prevpos.z = g_Vars.currentplayer->eyespy->prop->pos.z; + chr->prevpos = g_Vars.currentplayer->eyespy->prop->pos; roomsCopy(g_Vars.currentplayer->eyespy->prop->rooms, prevrooms); diff --git a/src/game/bondgrab.c b/src/game/bondgrab.c index 1388160ec..5cf392daf 100644 --- a/src/game/bondgrab.c +++ b/src/game/bondgrab.c @@ -36,9 +36,7 @@ void bgrabInit(void) g_Vars.currentplayer->bondmovemode = MOVEMODE_GRAB; g_Vars.currentplayer->bondgrabthetaspeedsum = 0; - g_Vars.currentplayer->grabbedprevpos.x = prop->pos.x; - g_Vars.currentplayer->grabbedprevpos.y = prop->pos.y; - g_Vars.currentplayer->grabbedprevpos.z = prop->pos.z; + g_Vars.currentplayer->grabbedprevpos = prop->pos; g_Vars.currentplayer->grabbedrotoffset = 0; g_Vars.currentplayer->grabbedforcez = 0; g_Vars.currentplayer->grabbedposoffset.x = prop->pos.x - g_Vars.currentplayer->prop->pos.x; @@ -227,9 +225,7 @@ void bgrab0f0ccbf0(struct coord *delta, f32 angle, struct defaultobj *obj) sp44.y -= sp50.y; sp44.z -= sp50.z; } else { - sp50.x = var8009de70->pos.x; - sp50.y = var8009de70->pos.y; - sp50.z = var8009de70->pos.z; + sp50 = var8009de70->pos; sp44.x = obj->prop->pos.x - var8009de70->pos.x; sp44.y = obj->prop->pos.y - var8009de70->pos.y; @@ -340,9 +336,7 @@ s32 bgrabCalculateNewPosition(struct coord *delta, f32 angle, bool arg2) propSetPerimEnabled(g_Vars.currentplayer->prop, false); propSetPerimEnabled(g_Vars.currentplayer->grabbedprop, false); - pos.x = g_Vars.currentplayer->prop->pos.x; - pos.y = g_Vars.currentplayer->prop->pos.y; - pos.z = g_Vars.currentplayer->prop->pos.z; + pos = g_Vars.currentplayer->prop->pos; if (delta->f[0] != 0.0f || delta->f[1] != 0.0f || delta->f[2] != 0.0f) { pos.x += delta->x; @@ -431,9 +425,7 @@ s32 bgrabCalculateNewPosition(struct coord *delta, f32 angle, bool arg2) posextra.f[2] = g_Vars.currentplayer->grabbedposextra.f[2]; } - sp7c.x = delta->x; - sp7c.y = delta->y; - sp7c.z = delta->z; + sp7c = *delta; if (obj->type == OBJTYPE_HOVERPROP) { struct hoverpropobj *tmp = (struct hoverpropobj *)g_Vars.currentplayer->grabbedprop->obj; @@ -513,9 +505,7 @@ s32 bgrabCalculateNewPosition(struct coord *delta, f32 angle, bool arg2) g_Vars.currentplayer->vv_theta = theta; - g_Vars.currentplayer->prop->pos.x = pos.x; - g_Vars.currentplayer->prop->pos.y = pos.y; - g_Vars.currentplayer->prop->pos.z = pos.z; + g_Vars.currentplayer->prop->pos = pos; if (ismoving) { propDeregisterRooms(g_Vars.currentplayer->prop); @@ -524,13 +514,9 @@ s32 bgrabCalculateNewPosition(struct coord *delta, f32 angle, bool arg2) if (g_Vars.currentplayer->grabbeddoextra) { g_Vars.currentplayer->grabbedrotextra = rotextra; - g_Vars.currentplayer->grabbedposextra.x = posextra.x; - g_Vars.currentplayer->grabbedposextra.y = posextra.y; - g_Vars.currentplayer->grabbedposextra.z = posextra.z; + g_Vars.currentplayer->grabbedposextra = posextra; g_Vars.currentplayer->grabbedrotextrasum = rotextrasum; - g_Vars.currentplayer->grabbedposextrasum.x = posextrasum.x; - g_Vars.currentplayer->grabbedposextrasum.y = posextrasum.y; - g_Vars.currentplayer->grabbedposextrasum.z = posextrasum.z; + g_Vars.currentplayer->grabbedposextrasum = posextrasum; } } } @@ -791,15 +777,11 @@ void bgrab0f0ce0bc(struct coord *arg0) void bgrabUpdatePrevPos(void) { - g_Vars.currentplayer->bondprevpos.x = g_Vars.currentplayer->prop->pos.x; - g_Vars.currentplayer->bondprevpos.y = g_Vars.currentplayer->prop->pos.y; - g_Vars.currentplayer->bondprevpos.z = g_Vars.currentplayer->prop->pos.z; + g_Vars.currentplayer->bondprevpos = g_Vars.currentplayer->prop->pos; g_Vars.currentplayer->bondprevtheta = g_Vars.currentplayer->vv_theta; - g_Vars.currentplayer->grabbedprevpos.x = g_Vars.currentplayer->grabbedprop->pos.x; - g_Vars.currentplayer->grabbedprevpos.y = g_Vars.currentplayer->grabbedprop->pos.y; - g_Vars.currentplayer->grabbedprevpos.z = g_Vars.currentplayer->grabbedprop->pos.z; + g_Vars.currentplayer->grabbedprevpos = g_Vars.currentplayer->grabbedprop->pos; } void bgrab0f0ce178(void) diff --git a/src/game/bondgun.c b/src/game/bondgun.c index d714889d3..8a2d1c955 100644 --- a/src/game/bondgun.c +++ b/src/game/bondgun.c @@ -2203,9 +2203,7 @@ bool bgun0f09aba4(struct hand *hand, struct handweaponinfo *info, s32 handnum, s hand->posend.y = 0; hand->posend.z = 0; - hand->posstart.x = hand->posoffset.x; - hand->posstart.y = hand->posoffset.y; - hand->posstart.z = hand->posoffset.z; + hand->posstart = hand->posoffset; } if (hand->stateflags & HANDSTATEFLAG_00000040) { @@ -2235,9 +2233,7 @@ bool bgun0f09aba4(struct hand *hand, struct handweaponinfo *info, s32 handnum, s if ((hand->stateflags & HANDSTATEFLAG_00000080) == 0) { hand->stateflags |= HANDSTATEFLAG_00000080; hand->rotxstart = hand->rotxoffset; - hand->posstart.x = hand->posoffset.x; - hand->posstart.y = hand->posoffset.y; - hand->posstart.z = hand->posoffset.z; + hand->posstart = hand->posoffset; } hand->rotxend = M_BADTAU - (recoilangle * M_BADTAU) / 360.0f; @@ -4375,9 +4371,7 @@ void bgun0f09ebcc(struct defaultobj *obj, struct coord *coord, s16 *rooms, Mtxf projectileSetSticky(objprop); mtx4Copy(matrix2, (Mtxf *)&obj->projectile->mtx); - obj->projectile->speed.x = velocity->x; - obj->projectile->speed.y = velocity->y; - obj->projectile->speed.z = velocity->z; + obj->projectile->speed = *velocity; obj->projectile->obj = obj; obj->projectile->unk0d8 = g_Vars.lvframenum; } @@ -4393,9 +4387,7 @@ void bgun0f09ed2c(struct defaultobj *obj, struct coord *newpos, Mtxf *arg2, stru if (objprop) { struct prop *playerprop = g_Vars.currentplayer->prop; - pos.x = playerprop->pos.x; - pos.y = playerprop->pos.y; - pos.z = playerprop->pos.z; + pos = playerprop->pos; roomsCopy(playerprop->rooms, rooms); @@ -4404,9 +4396,7 @@ void bgun0f09ed2c(struct defaultobj *obj, struct coord *newpos, Mtxf *arg2, stru if (obj->hidden & OBJHFLAG_PROJECTILE) { obj->projectile->flags |= PROJECTILEFLAG_LAUNCHING; - obj->projectile->nextsteppos.x = newpos->x; - obj->projectile->nextsteppos.y = newpos->y; - obj->projectile->nextsteppos.z = newpos->z; + obj->projectile->nextsteppos = *newpos; } } } @@ -4543,9 +4533,7 @@ void bgunCreateThrownProjectile(s32 handnum, struct gset *gset) hand = g_Vars.currentplayer->hands + handnum; - muzzlepos.x = g_Vars.currentplayer->hands[handnum].muzzlepos.x; - muzzlepos.y = g_Vars.currentplayer->hands[handnum].muzzlepos.y; - muzzlepos.z = g_Vars.currentplayer->hands[handnum].muzzlepos.z; + muzzlepos = g_Vars.currentplayer->hands[handnum].muzzlepos; mtx4LoadIdentity(&sp1f4); @@ -4570,13 +4558,9 @@ void bgunCreateThrownProjectile(s32 handnum, struct gset *gset) playerSetPerimEnabled(playerprop, false); if (cdTestLos11(&playerprop->pos, playerprop->rooms, &muzzlepos, spawnrooms, CDTYPE_ALL) != CDRESULT_COLLISION) { - spawnpos.x = muzzlepos.x; - spawnpos.y = muzzlepos.y; - spawnpos.z = muzzlepos.z; + spawnpos = muzzlepos; } else { - spawnpos.x = playerprop->pos.x; - spawnpos.y = playerprop->pos.y; - spawnpos.z = playerprop->pos.z; + spawnpos = playerprop->pos; roomsCopy(playerprop->rooms, spawnrooms); } @@ -4596,9 +4580,7 @@ void bgunCreateThrownProjectile(s32 handnum, struct gset *gset) func0f061d54(0, 0, 0); if (hand->hasdotinfo) { - aimpos.x = hand->dotpos.x; - aimpos.y = hand->dotpos.y; - aimpos.z = hand->dotpos.z; + aimpos = hand->dotpos; chrCalculateTrajectory(&spawnpos, 21.666666f, &aimpos, &sp140); @@ -4626,9 +4608,7 @@ void bgunCreateThrownProjectile(s32 handnum, struct gset *gset) sp1dc.y = -sp78.m[2][1]; sp1dc.z = -sp78.m[2][2]; } else { - sp1dc.x = sp140.x; - sp1dc.y = sp140.y; - sp1dc.z = sp140.z; + sp1dc = sp140; } } @@ -4684,9 +4664,7 @@ void bgunCreateThrownProjectile(s32 handnum, struct gset *gset) if (obj->hidden & OBJHFLAG_PROJECTILE) { obj->projectile->flags |= PROJECTILEFLAG_LAUNCHING; - obj->projectile->nextsteppos.x = muzzlepos.x; - obj->projectile->nextsteppos.y = muzzlepos.y; - obj->projectile->nextsteppos.z = muzzlepos.z; + obj->projectile->nextsteppos = muzzlepos; if (gset->weaponnum == WEAPON_GRENADE && gset->weaponfunc == FUNC_SECONDARY) { obj->projectile->unk08c = 1.0f; @@ -4823,9 +4801,7 @@ void bgunCreateFiredProjectile(s32 handnum) bgunCalculatePlayerShotSpread(&sp204, &sp1f8, handnum, true); mtx4RotateVecInPlace(camGetProjectionMtxF(), &sp1f8); - spawnpos.x = hand->muzzlepos.x; - spawnpos.y = hand->muzzlepos.y; - spawnpos.z = hand->muzzlepos.z; + spawnpos = hand->muzzlepos; if (hand->gset.weaponnum == WEAPON_SLAYER && hand->gset.weaponfunc == FUNC_SECONDARY) { spawnpos.x += 50.0f * sp1f8.x; @@ -4840,9 +4816,7 @@ void bgunCreateFiredProjectile(s32 handnum) func0f061d54(0, 0, 0); if (hand->hasdotinfo) { - aimpos.x = hand->dotpos.x; - aimpos.y = hand->dotpos.y; - aimpos.z = hand->dotpos.z; + aimpos = hand->dotpos; chrCalculateTrajectory(&spawnpos, sp25c, &aimpos, &sp1bc); @@ -4869,9 +4843,7 @@ void bgunCreateFiredProjectile(s32 handnum) sp1f8.y = -spf4.m[2][1]; sp1f8.z = -spf4.m[2][2]; } else { - sp1f8.x = sp1bc.x; - sp1f8.y = sp1bc.y; - sp1f8.z = sp1bc.z; + sp1f8 = sp1bc; } } } @@ -5141,9 +5113,7 @@ void bgunSwivel(f32 screenx, f32 screeny, f32 crossdamp, f32 aimdamp) hand = &player->hands[h]; if (hand->hasdotinfo && !g_Vars.mplayerisrunning) { - sp94.x = hand->dotpos.x; - sp94.y = hand->dotpos.y; - sp94.z = hand->dotpos.z; + sp94 = hand->dotpos; mtx4TransformVecInPlace(camGetWorldToScreenMtxf(), &sp94); @@ -5409,13 +5379,9 @@ bool bgunGetLastShootInfo(struct coord *pos, struct coord *dir, s32 handnum) return false; } - pos->x = hand->lastshootpos.x; - pos->y = hand->lastshootpos.y; - pos->z = hand->lastshootpos.z; + *pos = hand->lastshootpos; - dir->x = hand->lastshootdir.x; - dir->y = hand->lastshootdir.y; - dir->z = hand->lastshootdir.z; + *dir = hand->lastshootdir; return true; } @@ -5426,13 +5392,9 @@ void bgunSetLastShootInfo(struct coord *pos, struct coord *dir, s32 handnum) hand->lastdirvalid = true; - hand->lastshootpos.x = pos->x; - hand->lastshootpos.y = pos->y; - hand->lastshootpos.z = pos->z; + hand->lastshootpos = *pos; - hand->lastshootdir.x = dir->x; - hand->lastshootdir.y = dir->y; - hand->lastshootdir.z = dir->z; + hand->lastshootdir = *dir; } s32 bgunGetShotsToTake(s32 handnum) @@ -6146,9 +6108,7 @@ void bgun0f0a24f0(struct coord *arg0, s32 handnum) b.y *= 1000; b.z *= 1000; - arg0->x = b.x; - arg0->y = b.y; - arg0->z = b.z; + *arg0 = b; } /** @@ -6834,9 +6794,7 @@ void bgunUpdateSmoke(struct hand *hand, s32 handnum, s32 weaponnum, struct weapo smokerooms[0] = g_Vars.currentplayer->cam_room; smokerooms[1] = -1; - smokepos.x = hand->muzzlepos.x; - smokepos.y = hand->muzzlepos.y; - smokepos.z = hand->muzzlepos.z; + smokepos = hand->muzzlepos; hand->gunsmokepoint = 0.0f; @@ -6882,13 +6840,9 @@ void bgunUpdateLasersight(struct hand *hand, struct modelfiledata *modeldef, s32 mtx4RotateVecInPlace(&hand->cammtx, &beamfar); - sp48.x = beamfar.x; - sp48.y = beamfar.y; - sp48.z = beamfar.z; + sp48 = beamfar; - sp3c.x = beamnear.x; - sp3c.y = beamnear.y; - sp3c.z = beamnear.z; + sp3c = beamnear; mtx4TransformVec(camGetWorldToScreenMtxf(), &sp3c, &sp54); mtx4RotateVec(camGetProjectionMtxF(), &sp48, &sp30); @@ -6933,13 +6887,9 @@ void bgunUpdateLasersight(struct hand *hand, struct modelfiledata *modeldef, s32 lasersightSetBeam(handnum, 1, &beamnear, &beamfar); if (handnum == HAND_RIGHT && hand->hasdotinfo && !busy) { - dotpos.x = hand->dotpos.x; - dotpos.y = hand->dotpos.y; - dotpos.z = hand->dotpos.z; + dotpos = hand->dotpos; - dotrot.x = hand->dotrot.x; - dotrot.y = hand->dotrot.y; - dotrot.z = hand->dotrot.z; + dotrot = hand->dotrot; lasersightSetDot(handnum, &dotpos, &dotrot); } diff --git a/src/game/bondhead.c b/src/game/bondhead.c index 070c2c8cb..126978293 100644 --- a/src/game/bondhead.c +++ b/src/game/bondhead.c @@ -158,9 +158,7 @@ void bheadUpdate(f32 arg0, f32 arg1) sp80.unk10 = g_Vars.currentplayer->bondheadmatrices; model0001cebc(&sp80, &g_Vars.currentplayer->model); - g_Vars.currentplayer->headbodyoffset.x = g_Vars.currentplayer->standbodyoffset.x; - g_Vars.currentplayer->headbodyoffset.y = g_Vars.currentplayer->standbodyoffset.y; - g_Vars.currentplayer->headbodyoffset.z = g_Vars.currentplayer->standbodyoffset.z; + g_Vars.currentplayer->headbodyoffset = g_Vars.currentplayer->standbodyoffset; modelGetRootPosition(&g_Vars.currentplayer->model, &modelpos); @@ -213,9 +211,7 @@ void bheadUpdate(f32 arg0, f32 arg1) bheadSetdamp(PAL ? 0.952f : 0.96f); } } else { - g_Vars.currentplayer->headbodyoffset.x = g_Vars.currentplayer->standbodyoffset.x; - g_Vars.currentplayer->headbodyoffset.y = g_Vars.currentplayer->standbodyoffset.y; - g_Vars.currentplayer->headbodyoffset.z = g_Vars.currentplayer->standbodyoffset.z; + g_Vars.currentplayer->headbodyoffset = g_Vars.currentplayer->standbodyoffset; headpos.x = 0; headpos.y = g_Vars.currentplayer->standheight; diff --git a/src/game/bondmove.c b/src/game/bondmove.c index fc85b9cd7..dc464cae7 100644 --- a/src/game/bondmove.c +++ b/src/game/bondmove.c @@ -417,9 +417,7 @@ f32 bmoveCalculateLookahead(void) playerGetBbox(g_Vars.currentplayer->prop, &radius, &ymax, &ymin); - sp100.x = g_Vars.currentplayer->bond2.unk00.x; - sp100.y = g_Vars.currentplayer->bond2.unk00.y; - sp100.z = g_Vars.currentplayer->bond2.unk00.z; + sp100 = g_Vars.currentplayer->bond2.unk00; spf0.x = g_Vars.currentplayer->prop->pos.x; spf0.y = g_Vars.currentplayer->prop->pos.y - 30; @@ -2018,9 +2016,7 @@ void bmove0f0cc19c(struct coord *arg) f32 min; f32 mult; - g_Vars.currentplayer->bond2.unk10.x = arg->x; - g_Vars.currentplayer->bond2.unk10.y = arg->y; - g_Vars.currentplayer->bond2.unk10.z = arg->z; + g_Vars.currentplayer->bond2.unk10 = *arg; if (g_Vars.currentplayer->isdead && g_Vars.currentplayer->bondleandown > 0) { g_Vars.currentplayer->bondleandown -= 0.25f; diff --git a/src/game/bondwalk.c b/src/game/bondwalk.c index 5f004c1ca..8f016105e 100644 --- a/src/game/bondwalk.c +++ b/src/game/bondwalk.c @@ -102,9 +102,7 @@ void bwalkInit(void) g_Vars.currentplayer->bond2.unk28.x, g_Vars.currentplayer->bond2.unk28.y, g_Vars.currentplayer->bond2.unk28.z); g_Vars.currentplayer->walkinitt = 0; g_Vars.currentplayer->walkinitt2 = 0; - g_Vars.currentplayer->walkinitstart.x = g_Vars.currentplayer->prop->pos.x; - g_Vars.currentplayer->walkinitstart.y = g_Vars.currentplayer->prop->pos.y; - g_Vars.currentplayer->walkinitstart.z = g_Vars.currentplayer->prop->pos.z; + g_Vars.currentplayer->walkinitstart = g_Vars.currentplayer->prop->pos; delta.x = g_Vars.currentplayer->walkinitpos.x - g_Vars.currentplayer->prop->pos.x; delta.y = 0; @@ -252,9 +250,7 @@ bool bwalkCalculateNewPosition(struct coord *vel, f32 rotateamount, bool apply, g_Vars.enableslopes = true; } - dstpos.x = g_Vars.currentplayer->prop->pos.x; - dstpos.y = g_Vars.currentplayer->prop->pos.y; - dstpos.z = g_Vars.currentplayer->prop->pos.z; + dstpos = g_Vars.currentplayer->prop->pos; if (vel->x || vel->y || vel->z) { if (g_Vars.currentplayer->tank) { @@ -336,9 +332,7 @@ bool bwalkCalculateNewPosition(struct coord *vel, f32 rotateamount, bool apply, g_Vars.currentplayer->vv_theta = angle; - g_Vars.currentplayer->prop->pos.x = dstpos.x; - g_Vars.currentplayer->prop->pos.y = dstpos.y; - g_Vars.currentplayer->prop->pos.z = dstpos.z; + g_Vars.currentplayer->prop->pos = dstpos; if (copyrooms) { propDeregisterRooms(g_Vars.currentplayer->prop); @@ -436,9 +430,7 @@ bool bwalkCalculateNewPositionWithPush(struct coord *delta, f32 rotateamount, bo chrCalculatePushPos(chr, &newpos, newrooms, false); - obstacle->pos.x = newpos.x; - obstacle->pos.y = newpos.y; - obstacle->pos.z = newpos.z; + obstacle->pos = newpos; propDeregisterRooms(obstacle); roomsCopy(newrooms, obstacle->rooms); @@ -771,9 +763,7 @@ void bwalkUpdateVertical(void) rooms, GEOFLAG_LADDER | GEOFLAG_LADDER_PLAYERONLY, &g_Vars.currentplayer->laddernormal); } - testpos.x = g_Vars.currentplayer->prop->pos.x; - testpos.y = g_Vars.currentplayer->prop->pos.y; - testpos.z = g_Vars.currentplayer->prop->pos.z; + testpos = g_Vars.currentplayer->prop->pos; if (g_Vars.currentplayer->inlift) { testpos.y -= g_Vars.currentplayer->crouchheight + g_Vars.currentplayer->crouchoffsetrealsmall; @@ -1124,9 +1114,7 @@ void bwalkUpdateVertical(void) || newpos.z != g_Vars.currentplayer->prop->pos.z) { func0f065e74(&g_Vars.currentplayer->prop->pos, g_Vars.currentplayer->prop->rooms, &newpos, newrooms); - g_Vars.currentplayer->prop->pos.x = newpos.x; - g_Vars.currentplayer->prop->pos.y = newpos.y; - g_Vars.currentplayer->prop->pos.z = newpos.z; + g_Vars.currentplayer->prop->pos = newpos; propDeregisterRooms(g_Vars.currentplayer->prop); roomsCopy(newrooms, g_Vars.currentplayer->prop->rooms); @@ -1265,9 +1253,7 @@ void bwalk0f0c63bc(struct coord *arg0, u32 arg1, s32 types) void bwalkUpdatePrevPos(void) { - g_Vars.currentplayer->bondprevpos.x = g_Vars.currentplayer->prop->pos.x; - g_Vars.currentplayer->bondprevpos.y = g_Vars.currentplayer->prop->pos.y; - g_Vars.currentplayer->bondprevpos.z = g_Vars.currentplayer->prop->pos.z; + g_Vars.currentplayer->bondprevpos = g_Vars.currentplayer->prop->pos; roomsCopy(g_Vars.currentplayer->prop->rooms, g_Vars.currentplayer->bondprevrooms); } diff --git a/src/game/bot.c b/src/game/bot.c index 494a719fa..effa144e5 100644 --- a/src/game/bot.c +++ b/src/game/bot.c @@ -1207,9 +1207,7 @@ void botApplyProtect(struct chrdata *chr, struct prop *prop) void botApplyDefend(struct chrdata *chr, struct coord *pos, s16 *room, f32 arg3) { chr->aibot->command = AIBOTCMD_DEFEND; - chr->aibot->defendholdpos.x = pos->x; - chr->aibot->defendholdpos.y = pos->y; - chr->aibot->defendholdpos.z = pos->z; + chr->aibot->defendholdpos = *pos; roomsCopy(room, chr->aibot->defendholdrooms); chr->aibot->unk098 = arg3; chr->aibot->forcemainloop = true; @@ -1218,9 +1216,7 @@ void botApplyDefend(struct chrdata *chr, struct coord *pos, s16 *room, f32 arg3) void botApplyHold(struct chrdata *chr, struct coord *pos, s16 *room, f32 arg3) { chr->aibot->command = AIBOTCMD_HOLD; - chr->aibot->defendholdpos.x = pos->x; - chr->aibot->defendholdpos.y = pos->y; - chr->aibot->defendholdpos.z = pos->z; + chr->aibot->defendholdpos = *pos; roomsCopy(room, chr->aibot->defendholdrooms); chr->aibot->unk098 = arg3; chr->aibot->forcemainloop = true; @@ -2759,9 +2755,7 @@ void botTickUnpaused(struct chrdata *chr) } else { // Token is not held - go to the pos to defend it newaction = MA_AIBOTGOTOPOS; - aibot->gotopos.x = token->pos.x; - aibot->gotopos.y = token->pos.y; - aibot->gotopos.z = token->pos.z; + aibot->gotopos = token->pos; roomsCopy(token->rooms, aibot->gotorooms); aibot->unk04c_00 = false; } @@ -2787,9 +2781,7 @@ void botTickUnpaused(struct chrdata *chr) if (botroomFindPos(g_ScenarioData.koh.hillrooms[0], &posinhill, &angle, &padnuminhill, &covernuminhill)) { newaction = MA_AIBOTGOTOPOS; - aibot->gotopos.x = posinhill.x; - aibot->gotopos.y = posinhill.y; - aibot->gotopos.z = posinhill.z; + aibot->gotopos = posinhill; roomsCopy(g_ScenarioData.koh.hillrooms, aibot->gotorooms); aibot->unk04c_00 = (chr->prop->rooms[0] == g_ScenarioData.koh.hillrooms[0]) != 0; aibot->hillpadnum = padnuminhill; @@ -2809,9 +2801,7 @@ void botTickUnpaused(struct chrdata *chr) // Go to the hill if not there already if (botroomFindPos(g_ScenarioData.koh.hillrooms[0], &posinhill, &angle, &padnuminhill, &covernuminhill)) { newaction = MA_AIBOTGOTOPOS; - aibot->gotopos.x = posinhill.x; - aibot->gotopos.y = posinhill.y; - aibot->gotopos.z = posinhill.z; + aibot->gotopos = posinhill; roomsCopy(g_ScenarioData.koh.hillrooms, aibot->gotorooms); aibot->unk04c_00 = (chr->prop->rooms[0] == g_ScenarioData.koh.hillrooms[0]) != 0; aibot->hillpadnum = padnuminhill; diff --git a/src/game/botmgr.c b/src/game/botmgr.c index e14d0347c..9cbaec29a 100644 --- a/src/game/botmgr.c +++ b/src/game/botmgr.c @@ -164,9 +164,7 @@ void botmgrAllocateBot(s32 chrnum, s32 aibotnum) aibot->command = AIBOTCMD_NORMAL; aibot->unk098 = 0.0f; - aibot->defendholdpos.x = pos.x; - aibot->defendholdpos.y = pos.y; - aibot->defendholdpos.z = pos.z; + aibot->defendholdpos = pos; aibot->weaponnum = WEAPON_UNARMED; diff --git a/src/game/botroom.c b/src/game/botroom.c index 6b348b452..8e5e195d2 100644 --- a/src/game/botroom.c +++ b/src/game/botroom.c @@ -138,9 +138,7 @@ bool botroomFindPos(s16 room, struct coord *pos, f32 *angleptr, s32 *padnumptr, if (i < covercount) { coverUnpack(covernums[i], &cover); - pos->x = cover.pos->x; - pos->y = cover.pos->y; - pos->z = cover.pos->z; + *pos = *cover.pos; *angleptr = atan2f(cover.look->z, cover.look->x); *padnumptr = -1; @@ -150,9 +148,7 @@ bool botroomFindPos(s16 room, struct coord *pos, f32 *angleptr, s32 *padnumptr, pad = &g_Pads[padnums[i]]; - pos->x = pad->pos.x; - pos->y = pad->pos.y; - pos->z = pad->pos.z; + *pos = pad->pos; *angleptr = atan2f(pad->look.z, pad->look.x); *padnumptr = padnums[i]; diff --git a/src/game/chr.c b/src/game/chr.c index eda4e1c25..60eef0cc2 100644 --- a/src/game/chr.c +++ b/src/game/chr.c @@ -700,9 +700,7 @@ bool chr0f01f378(struct model *model, struct coord *arg1, struct coord *arg2, f3 struct eyespy *eyespy = chrToEyespy(chr); if (eyespy && eyespy->deployed) { - arg2->x = chr->prop->pos.x; - arg2->y = chr->prop->pos.y; - arg2->z = chr->prop->pos.z; + *arg2 = chr->prop->pos; } } else if (chr->actiontype == ACT_SKJUMP && chr->act_skjump.state == SKJUMPSTATE_AIRBORNE @@ -828,9 +826,7 @@ bool chr0f01f378(struct model *model, struct coord *arg1, struct coord *arg2, f3 && (chr->prop->flags & PROPFLAG_ONANYSCREENPREVTICK) == 0) { chr->aibot->unk078 = 10; - arg2->x = prop->pos.x; - arg2->y = prop->pos.y; - arg2->z = prop->pos.z; + *arg2 = prop->pos; roomsCopy(prop->rooms, spfc); @@ -942,9 +938,7 @@ bool chr0f01f378(struct model *model, struct coord *arg1, struct coord *arg2, f3 #if VERSION >= VERSION_NTSC_1_0 if (manground != chr->manground) { - spd0.x = arg2->x; - spd0.y = arg2->y; - spd0.z = arg2->z; + spd0 = *arg2; roomsCopy(spfc, spc0); @@ -1325,9 +1319,7 @@ struct prop *chr0f020b14(struct prop *prop, struct model *model, rwdata->chrinfo.ground = ground; } - chr->prevpos.x = prop->pos.x; - chr->prevpos.y = prop->pos.y; - chr->prevpos.z = prop->pos.z; + chr->prevpos = prop->pos; propCalculateShadeColour(prop, chr->nextcol, chr->floorcol); diff --git a/src/game/chraction.c b/src/game/chraction.c index 4739e88c9..c686ff0ab 100644 --- a/src/game/chraction.c +++ b/src/game/chraction.c @@ -1568,13 +1568,9 @@ void func0f02e3dc(struct coord *a, struct coord *b,struct coord *c, struct coord dst->y = d->y * tmp + c->y; dst->z = d->z * tmp + c->z; } else if (d->x == 0 && d->z == 0) { - dst->x = c->x; - dst->y = c->y; - dst->z = c->z; + *dst = *c; } else { - dst->x = a->x; - dst->y = a->y; - dst->z = a->z; + *dst = *a; } } @@ -2201,9 +2197,7 @@ void chrRunToPos(struct chrdata *chr, struct coord *pos) { chrStopFiring(chr); chr->actiontype = ACT_RUNPOS; - chr->act_runpos.pos.x = pos->x; - chr->act_runpos.pos.y = pos->y; - chr->act_runpos.pos.z = pos->z; + chr->act_runpos.pos = *pos; chr->sleep = 0; chr->act_runpos.neardist = 30; chr->act_runpos.turnspeed = 0; @@ -3633,9 +3627,7 @@ void chrYeetFromPos(struct chrdata *chr, struct coord *exppos, f32 force) dist.y *= speed; dist.z *= speed; - chr->fallspeed.x = dist.x; - chr->fallspeed.y = dist.y; - chr->fallspeed.z = dist.z; + chr->fallspeed = dist; if (latangle < faceangle) { angletoexplosion += M_BADTAU; @@ -5041,9 +5033,7 @@ void chrDamage(struct chrdata *chr, f32 damage, struct coord *vector, struct gse } chr->actiontype = ACT_PREARGH; - chr->act_preargh.dir.x = vector->x; - chr->act_preargh.dir.y = vector->y; - chr->act_preargh.dir.z = vector->z; + chr->act_preargh.dir = *vector; chr->act_preargh.relshotdir = angle; chr->act_preargh.hitpart = hitpart; chr->act_preargh.aplayernum = aplayernum; @@ -5371,9 +5361,7 @@ void chrGoPosGetCurWaypointInfoWithFlags(struct chrdata *chr, struct coord *pos, if (waypoint) { pad = &g_Pads[waypoint->padnum]; - pos->x = pad->pos.x; - pos->y = pad->pos.y; - pos->z = pad->pos.z; + *pos = pad->pos; rooms[0] = pad->room; rooms[1] = -1; @@ -5382,9 +5370,7 @@ void chrGoPosGetCurWaypointInfoWithFlags(struct chrdata *chr, struct coord *pos, *flags = pad->flags; } } else { - pos->x = chr->act_gopos.endpos.x; - pos->y = chr->act_gopos.endpos.y; - pos->z = chr->act_gopos.endpos.z; + *pos = chr->act_gopos.endpos; rooms[0] = chr->act_gopos.endrooms[0]; rooms[1] = -1; @@ -5493,9 +5479,7 @@ void chrGoPosInitExpensive(struct chrdata *chr) chr->act_gopos.waydata.mode = WAYMODE_INIT; chr->act_gopos.waydata.iter = 0; chr->act_gopos.waydata.gotaimpos = false; - chr->act_gopos.waydata.aimpos.x = pos.x; - chr->act_gopos.waydata.aimpos.y = pos.y; - chr->act_gopos.waydata.aimpos.z = pos.z; + chr->act_gopos.waydata.aimpos = pos; chrGoPosClearRestartTtl(chr); } @@ -5609,9 +5593,7 @@ void chrPatrolGetCurWaypointInfoWithFlags(struct chrdata *chr, struct coord *pos pad = &g_Pads[padnum]; - pos->x = pad->pos.x; - pos->y = pad->pos.y; - pos->z = pad->pos.z; + *pos = pad->pos; rooms[0] = pad->room; rooms[1] = -1; @@ -5690,9 +5672,7 @@ void chrNavTickMagic(struct chrdata *chr, struct waydata *waydata, f32 speed, st if (cdTestVolume(&spf4, chr->radius, sp118, CDTYPE_ALL, CHECKVERTICAL_YES, ymax - prop->pos.y, ymin - prop->pos.y) != CDRESULT_COLLISION) { // Reached end of segment with no collision - prop->pos.x = spf4.x; - prop->pos.y = spf4.y; - prop->pos.z = spf4.z; + prop->pos = spf4; chr->ground = ground; chr->manground = ground; @@ -5797,9 +5777,7 @@ void chrCalculatePosition(struct chrdata *chr, struct coord *pos) pos->z = (pos->z - chr->prop->pos.z) * frac + chr->prop->pos.z; } } else { - pos->x = chr->prop->pos.x; - pos->y = chr->prop->pos.y; - pos->z = chr->prop->pos.z; + *pos = chr->prop->pos; } } @@ -6117,17 +6095,13 @@ bool chrGoToRoomPos(struct chrdata *chr, struct coord *pos, s16 *room, u32 gopos if (isgopos && ismagic) { chrCalculatePosition(chr, &prevpos); } else { - prevpos.x = prop->pos.x; - prevpos.y = prop->pos.y; - prevpos.z = prop->pos.z; + prevpos = prop->pos; } chrStopFiring(chr); chr->actiontype = ACT_GOPOS; - chr->act_gopos.endpos.x = pos->x; - chr->act_gopos.endpos.y = pos->y; - chr->act_gopos.endpos.z = pos->z; + chr->act_gopos.endpos = *pos; roomsCopy(room, chr->act_gopos.endrooms); chr->act_gopos.target = lastwaypoint; @@ -7565,9 +7539,7 @@ bool chrConsiderGrenadeThrow(struct chrdata *chr, u32 attackflags, u32 entityid) struct coord pos; if (target) { - pos.x = target->pos.x; - pos.y = target->pos.y; - pos.z = target->pos.z; + pos = target->pos; } if (target && cdTestLos04(&chr->prop->pos, chr->prop->rooms, &pos, @@ -8640,9 +8612,7 @@ void chrTickPreArgh(struct chrdata *chr) if (modelGetCurAnimFrame(model) >= modelGetAnimEndFrame(model)) { struct coord dir; - dir.x = chr->act_preargh.dir.x; - dir.y = chr->act_preargh.dir.y; - dir.z = chr->act_preargh.dir.z; + dir = chr->act_preargh.dir; chrReactToDamage(chr, &dir, chr->act_preargh.relshotdir, @@ -9045,9 +9015,7 @@ bool func0f03e9f4(struct chrdata *chr, struct attackanimconfig *animcfg, bool fi if ((flags & ATTACKFLAG_AIMATTARGET) && targetprop->type == PROPTYPE_PLAYER) { f32 eyeheight = g_Vars.players[playermgrGetPlayerNumByProp(targetprop)]->vv_eyeheight; - targetpos.x = targetprop->pos.x; - targetpos.y = targetprop->pos.y; - targetpos.z = targetprop->pos.z; + targetpos = targetprop->pos; if (chr->aibot) { sp174 -= eyeheight * (0.4f + (0.05f * RANDOMFRAC() * arg4)); @@ -9144,16 +9112,12 @@ bool func0f03e9f4(struct chrdata *chr, struct attackanimconfig *animcfg, bool fi mtx00016798(sp108, &spc8); mtx00015be0(spb4, &spc8); - spb8.x = burstrodata->pos.x; - spb8.y = burstrodata->pos.y; - spb8.z = burstrodata->pos.z; + spb8 = burstrodata->pos; mtx4TransformVecInPlace(&spc8, &spb8); sp114 = 1; - sp118.x = spb8.x; - sp118.y = spb8.y; - sp118.z = spb8.z; + sp118 = spb8; } } else { posnode = modelGetPart(gunmodel->filedata, MODELPART_CHRGUN_0001); @@ -9582,9 +9546,7 @@ bool chrGetGunPos(struct chrdata *chr, s32 handnum, struct coord *gunpos) spac = model0001a5cc(model, part0, 0); rodata = &part0->rodata->chrgunfire; - gunpos->x = rodata->pos.x; - gunpos->y = rodata->pos.y; - gunpos->z = rodata->pos.z; + *gunpos = rodata->pos; mtx00015be4(camGetProjectionMtxF(), spac, &sp6c); mtx4TransformVecInPlace(&sp6c, gunpos); @@ -10039,9 +10001,7 @@ void chrTickShoot(struct chrdata *chr, s32 handnum) if (fudgeforeyespy) { hitprop = targetprop; - hitpos.x = hitprop->pos.x; - hitpos.y = hitprop->pos.y; - hitpos.z = hitprop->pos.z; + hitpos = hitprop->pos; } } @@ -10151,9 +10111,7 @@ void chrTickShoot(struct chrdata *chr, s32 handnum) } else if ((gset.weaponnum == WEAPON_DEVASTATOR && gset.weaponfunc == FUNC_SECONDARY) || gset.weaponnum == WEAPON_CROSSBOW) { // Wall hugger grenade or crossbow - aim at target directly - aimpos.x = targetprop->pos.x; - aimpos.y = targetprop->pos.y; - aimpos.z = targetprop->pos.z; + aimpos = targetprop->pos; if (targetprop->type == PROPTYPE_PLAYER) { aimpos.y -= 25; @@ -10288,9 +10246,7 @@ void chrTickShoot(struct chrdata *chr, s32 handnum) s32 hitpart = HITPART_GENERAL; struct chrdata *targetchr = targetprop->chr; - hitpos.x = targetprop->pos.x; - hitpos.y = targetprop->pos.y; - hitpos.z = targetprop->pos.z; + hitpos = targetprop->pos; if (random() % 2) { hitpos.y += 2 + random() % 10; @@ -11344,9 +11300,7 @@ bool chrDetectDangerousObject(struct chrdata *chr, u8 flags) } if (pass && chrGetSquaredDistanceToCoord(chr, &prop->pos) < 1600) { - chr->runfrompos.x = g_DangerousProps[i]->pos.x; - chr->runfrompos.y = g_DangerousProps[i]->pos.y; - chr->runfrompos.z = g_DangerousProps[i]->pos.z; + chr->runfrompos = g_DangerousProps[i]->pos; if (chr->aibot) { chr->aibot->unk064 |= 0x0004; @@ -11733,17 +11687,11 @@ void func0f044b68(struct coord *arg0, struct coord *arg1, struct coord *arg2) if (sp00.f[0] * sp0c.f[0] + sp00.f[2] * sp0c.f[2] > 0) { // empty } else { - sp0c.x = arg0->x; - sp0c.y = arg0->y; - sp0c.z = arg0->z; + sp0c = *arg0; - arg0->x = arg1->x; - arg0->y = arg1->y; - arg0->z = arg1->z; + *arg0 = *arg1; - arg1->x = sp0c.x; - arg1->y = sp0c.y; - arg1->z = sp0c.z; + *arg1 = sp0c; } } @@ -11857,29 +11805,17 @@ bool chrNavCanSeeNextPos(struct chrdata *chr, struct coord *chrpos, s16 *chrroom func0f044b68(&spac, &sp94, &spd4); func0f044b68(&spa0, &sp88, &spd4); - leftpos->x = spac.x; - leftpos->y = spac.y; - leftpos->z = spac.z; + *leftpos = spac; - rightpos->x = sp88.x; - rightpos->y = sp88.y; - rightpos->z = sp88.z; + *rightpos = sp88; } else if (spbc) { - leftpos->x = spac.x; - leftpos->y = spac.y; - leftpos->z = spac.z; + *leftpos = spac; - rightpos->x = spa0.x; - rightpos->y = spa0.y; - rightpos->z = spa0.z; + *rightpos = spa0; } else if (spb8) { - leftpos->x = sp94.x; - leftpos->y = sp94.y; - leftpos->z = sp94.z; + *leftpos = sp94; - rightpos->x = sp88.x; - rightpos->y = sp88.y; - rightpos->z = sp88.z; + *rightpos = sp88; } else if (cdExamCylMove07(chrpos, chrrooms, aimpos, sp40, cdtypes, 1, ymax - prop->pos.y, ymin - prop->pos.y) != CDRESULT_COLLISION && (!arg9 || cdExamCylMove01(chrpos, aimpos, chrradius, sp40, cdtypes, CHECKVERTICAL_YES, ymax - prop->pos.y, ymin - prop->pos.y) != CDRESULT_COLLISION)) { result = true; @@ -12016,38 +11952,22 @@ bool chrNavCheckForObstacle(struct chrdata *chr, struct coord *chrpos, s16 *chrr if (spbc && spb8) { if (value1 < value2) { - leftpos->x = spac.x; - leftpos->y = spac.y; - leftpos->z = spac.z; + *leftpos = spac; - rightpos->x = spa0.x; - rightpos->y = spa0.y; - rightpos->z = spa0.z; + *rightpos = spa0; } else { - leftpos->x = sp94.x; - leftpos->y = sp94.y; - leftpos->z = sp94.z; + *leftpos = sp94; - rightpos->x = sp88.x; - rightpos->y = sp88.y; - rightpos->z = sp88.z; + *rightpos = sp88; } } else if (spbc) { - leftpos->x = spac.x; - leftpos->y = spac.y; - leftpos->z = spac.z; + *leftpos = spac; - rightpos->x = spa0.x; - rightpos->y = spa0.y; - rightpos->z = spa0.z; + *rightpos = spa0; } else if (spb8) { - leftpos->x = sp94.x; - leftpos->y = sp94.y; - leftpos->z = sp94.z; + *leftpos = sp94; - rightpos->x = sp88.x; - rightpos->y = sp88.y; - rightpos->z = sp88.z; + *rightpos = sp88; } else if (cdExamCylMove07(chrpos, chrrooms, aimpos, sp40, cdtypes, 1, ymax - prop->pos.y, ymin - prop->pos.y) != CDRESULT_COLLISION && (!hasobstacle || cdExamCylMove01(chrpos, aimpos, chrradius, sp40, cdtypes, CHECKVERTICAL_YES, ymax - prop->pos.y, ymin - prop->pos.y) != CDRESULT_COLLISION)) { result = true; @@ -12132,14 +12052,10 @@ bool chrNavTryObstacle(struct chrdata *chr, struct coord *arg1, bool arg2, struc if (!arg5 || func0f03645c(chr, &prop->pos, prop->rooms, &sp5c, nextpos, cdtypes)) { if (arg10) { waydata->gotaimposobj = true; - waydata->aimposobj.x = sp5c.x; - waydata->aimposobj.y = sp5c.y; - waydata->aimposobj.z = sp5c.z; + waydata->aimposobj = sp5c; } else { waydata->gotaimpos = true; - waydata->aimpos.x = sp5c.x; - waydata->aimpos.y = sp5c.y; - waydata->aimpos.z = sp5c.z; + waydata->aimpos = sp5c; } return true; @@ -12248,9 +12164,7 @@ void chrNavTickMain(struct chrdata *chr, struct coord *nextpos, struct waydata * if (0.0f); if (waydata->mode == WAYMODE_INIT || waydata->mode == WAYMODE_RETRY) { - sp100.x = nextpos->x; - sp100.y = nextpos->y; - sp100.z = nextpos->z; + sp100 = *nextpos; // Check to see if the chr can see the next pad. This is almost // always true, but if the chr has tried to avoid an object they @@ -12258,9 +12172,7 @@ void chrNavTickMain(struct chrdata *chr, struct coord *nextpos, struct waydata * if (chrNavCanSeeNextPos(chr, &prop->pos, prop->rooms, &sp100, &waydata->obstacleleft, &waydata->obstacleright, -chr->radius, chr->radius, CDTYPE_PATHBLOCKER | CDTYPE_BG, arg3)) { // Can see the next pad waydata->gotaimpos = true; - waydata->aimpos.x = sp100.x; - waydata->aimpos.y = sp100.y; - waydata->aimpos.z = sp100.z; + waydata->aimpos = sp100; waydata->mode = WAYMODE_HAVEAIMPOS; } else if (waydata->mode == WAYMODE_INIT) { waydata->mode = WAYMODE_LOST1; @@ -12343,9 +12255,7 @@ void chrNavTickMain(struct chrdata *chr, struct coord *nextpos, struct waydata * // No obstacle ahead waydata->gotaimposobj = true; waydata->mode = WAYMODE_INIT; - waydata->aimposobj.x = waydata->aimpos.x; - waydata->aimposobj.y = waydata->aimpos.y; - waydata->aimposobj.z = waydata->aimpos.z; + waydata->aimposobj = waydata->aimpos; } else { // Obstacle ahead waydata->mode = WAYMODE_NEWOBSTACLE; @@ -12491,9 +12401,7 @@ void chrNavTickMain(struct chrdata *chr, struct coord *nextpos, struct waydata * } if (!waydata->gotaimposobj) { - waydata->aimposobj.x = waydata->aimpos.x; - waydata->aimposobj.y = waydata->aimpos.y; - waydata->aimposobj.z = waydata->aimpos.z; + waydata->aimposobj = waydata->aimpos; } // Every 10 ticks, attempt to open any door in front of the chr @@ -12895,16 +12803,12 @@ void chrTickGoPos(struct chrdata *chr) if (waypoint) { pad = &g_Pads[waypoint->padnum]; - nextpos.x = pad->pos.x; - nextpos.y = pad->pos.y; - nextpos.z = pad->pos.z; + nextpos = pad->pos; nextrooms[0] = pad->room; nextrooms[1] = -1; } else { - nextpos.x = chr->act_gopos.endpos.x; - nextpos.y = chr->act_gopos.endpos.y; - nextpos.z = chr->act_gopos.endpos.z; + nextpos = chr->act_gopos.endpos; roomsCopy(chr->act_gopos.endrooms, nextrooms); } @@ -12940,16 +12844,12 @@ void chrTickGoPos(struct chrdata *chr) if ((pad->flags & PADFLAG_AIWALKDIRECT) == 0 || candosomething) { if (next) { - nextpos.x = pad2->pos.x; - nextpos.y = pad2->pos.y; - nextpos.z = pad2->pos.z; + nextpos = pad2->pos; nextrooms[0] = pad2->room; nextrooms[1] = -1; } else { - nextpos.x = chr->act_gopos.endpos.x; - nextpos.y = chr->act_gopos.endpos.y; - nextpos.z = chr->act_gopos.endpos.z; + nextpos = chr->act_gopos.endpos; roomsCopy(chr->act_gopos.endrooms, nextrooms); } @@ -12989,13 +12889,9 @@ void chrTickGoPos(struct chrdata *chr) waypoint = chr->act_gopos.waypoints[chr->act_gopos.curindex]; if (waypoint) { - nextpos.x = g_Pads[waypoint->padnum].pos.x; - nextpos.y = g_Pads[waypoint->padnum].pos.y; - nextpos.z = g_Pads[waypoint->padnum].pos.z; + nextpos = g_Pads[waypoint->padnum].pos; } else { - nextpos.x = chr->act_gopos.endpos.x; - nextpos.y = chr->act_gopos.endpos.y; - nextpos.z = chr->act_gopos.endpos.z; + nextpos = chr->act_gopos.endpos; if (chr->aibot && chr->myaction == MA_AIBOTGETITEM) { sp240 = false; @@ -13742,9 +13638,7 @@ void chrGetAttackEntityPos(struct chrdata *chr, u32 attackflags, s32 entityid, s targetchr = chr; } - pos->x = targetchr->prop->pos.x; - pos->y = targetchr->prop->pos.y; - pos->z = targetchr->prop->pos.z; + *pos = targetchr->prop->pos; if (targetchr) { chr = targetprop->chr; @@ -13759,9 +13653,7 @@ void chrGetAttackEntityPos(struct chrdata *chr, u32 attackflags, s32 entityid, s // Aiming at a pad by padnum s32 padnum = chrResolvePadId(chr, entityid); - pos->x = g_Pads[padnum].pos.x; - pos->y = g_Pads[padnum].pos.y; - pos->z = g_Pads[padnum].pos.z; + *pos = g_Pads[padnum].pos; rooms[0] = g_Pads[padnum].room; rooms[1] = -1; @@ -13769,9 +13661,7 @@ void chrGetAttackEntityPos(struct chrdata *chr, u32 attackflags, s32 entityid, s // Aiming at the chr's preconfigured target targetprop = chrGetTargetProp(chr); - pos->x = targetprop->pos.x; - pos->y = targetprop->pos.y; - pos->z = targetprop->pos.z; + *pos = targetprop->pos; if (targetprop->type == PROPTYPE_CHR && targetprop->chr) { chr = targetprop->chr; @@ -14975,9 +14865,7 @@ bool chrAdjustPosForSpawn(f32 chrradius, struct coord *pos, s16 *rooms, f32 angl if (cdTestVolume(&testpos, chrradius, testrooms, CDTYPE_ALL, CHECKVERTICAL_YES, ymax, ymin) != CDRESULT_COLLISION && (allowonscreen || chrIsPosOffScreen(&testpos, testrooms)) && (!arg6 || ground > -100000)) { - pos->x = testpos.x; - pos->y = testpos.y; - pos->z = testpos.z; + *pos = testpos; roomsCopy(testrooms, rooms); return true; } @@ -15025,9 +14913,7 @@ bool chrAdjustPosForSpawn(f32 chrradius, struct coord *pos, s16 *rooms, f32 angl if (cdTestLos11(pos, rooms, &testpos, testrooms, CDTYPE_BG) && cdTestVolume(&testpos, chrradius, testrooms, CDTYPE_ALL, CHECKVERTICAL_YES, 200, -200.0f) != CDRESULT_COLLISION && (allowonscreen || chrIsPosOffScreen(&testpos, testrooms))) { - pos->x = testpos.x; - pos->y = testpos.y; - pos->z = testpos.z; + *pos = testpos; roomsCopy(testrooms, rooms); return true; } @@ -15063,9 +14949,7 @@ struct prop *chrSpawnAtCoord(s32 bodynum, s32 headnum, struct coord *pos, s16 *r headnum = bodyChooseHead(bodynum); } - pos2.x = pos->x; - pos2.y = pos->y; - pos2.z = pos->z; + pos2 = *pos; roomsCopy(rooms, rooms2); #if VERSION >= VERSION_NTSC_1_0 @@ -15233,9 +15117,7 @@ bool chrMoveToPos(struct chrdata *chr, struct coord *pos, s16 *rooms, f32 angle, struct player *player; f32 ground; - pos2.x = pos->x; - pos2.y = pos->y; - pos2.z = pos->z; + pos2 = *pos; roomsCopy(rooms, rooms2); propSetPerimEnabled(chr->prop, false); @@ -15252,9 +15134,7 @@ bool chrMoveToPos(struct chrdata *chr, struct coord *pos, s16 *rooms, f32 angle, chr->ground = ground; chr->manground = ground; chr->sumground = ground * (PAL ? 8.4175090789795f : 9.999998f); - chr->prop->pos.x = pos2.x; - chr->prop->pos.y = pos2.y; - chr->prop->pos.z = pos2.z; + chr->prop->pos = pos2; propDeregisterRooms(chr->prop); roomsCopy(rooms2, chr->prop->rooms); @@ -15728,9 +15608,7 @@ bool chr0f04c874(struct chrdata *chr, u32 angle360, struct coord *pos, u8 arg3, f32 ymin; f32 radius; - chrpos.x = chr->prop->pos.x; - chrpos.y = chr->prop->pos.y; - chrpos.z = chr->prop->pos.z; + chrpos = chr->prop->pos; do { f32 angle360f = angle360; @@ -15781,9 +15659,7 @@ bool chr0f04c874(struct chrdata *chr, u32 angle360, struct coord *pos, u8 arg3, scale = (tmp - 50.0f) / tmp; if (scale < 0) { - pos->x = chrpos.x; - pos->y = chrpos.y; - pos->z = chrpos.z; + *pos = chrpos; } else { xdiff *= scale; zdiff *= scale; @@ -15801,9 +15677,7 @@ bool chr0f04c874(struct chrdata *chr, u32 angle360, struct coord *pos, u8 arg3, sqdist = xdiff * xdiff + ydiff * ydiff + zdiff * zdiff; - saved.x = pos->x; - saved.y = pos->y; - saved.z = pos->z; + saved = *pos; angle360 = 360 - angle360; again = true; diff --git a/src/game/explosions.c b/src/game/explosions.c index 882705a20..60b46c26c 100644 --- a/src/game/explosions.c +++ b/src/game/explosions.c @@ -326,9 +326,7 @@ bool explosionCreate(struct prop *sourceprop, struct coord *exppos, s16 *exproom expprop->type = PROPTYPE_EXPLOSION; expprop->explosion = exp; - expprop->pos.x = exppos->x; - expprop->pos.y = exppos->y; - expprop->pos.z = exppos->z; + expprop->pos = *exppos; for (i = 0; exprooms[i] != -1 && i < 7; i++) { expprop->rooms[i] = exprooms[i]; @@ -517,21 +515,15 @@ bool explosionCreate(struct prop *sourceprop, struct coord *exppos, s16 *exproom } if (makescorch) { - exp->unk3d0.x = arg6->x; - exp->unk3d0.y = arg6->y; - exp->unk3d0.z = arg6->z; + exp->unk3d0 = *arg6; exp->room = room; - exp->unk3dc.x = arg8->x; - exp->unk3dc.y = arg8->y; - exp->unk3dc.z = arg8->z; + exp->unk3dc = *arg8; } else { exp->unk3d0.x = 999999.875f; } exp->parts[0].frame = 1; - exp->parts[0].pos.x = exppos->x; - exp->parts[0].pos.y = exppos->y; - exp->parts[0].pos.z = exppos->z; + exp->parts[0].pos = *exppos; exp->parts[0].size = g_ExplosionTypes[type].innersize * (RANDOMFRAC() * 0.5f + 1); exp->parts[0].rot = RANDOMFRAC() * M_BADTAU; exp->parts[0].bb = 0; @@ -1082,13 +1074,9 @@ u32 explosionTick(struct prop *prop) } else { bb = j % exp->numbb; - spfc.x = exp->bbs[bb].bbmin.x; - spfc.y = exp->bbs[bb].bbmin.y; - spfc.z = exp->bbs[bb].bbmin.z; + spfc = exp->bbs[bb].bbmin; - spf0.x = exp->bbs[bb].bbmax.x; - spf0.y = exp->bbs[bb].bbmax.y; - spf0.z = exp->bbs[bb].bbmax.z; + spf0 = exp->bbs[bb].bbmax; if (spfc.x < sp11c.x) { spfc.x = sp11c.x; @@ -1117,13 +1105,9 @@ u32 explosionTick(struct prop *prop) if (spf0.x <= spfc.x || spf0.y <= spfc.y || spf0.z <= spfc.z) { bb = 0; - spfc.x = exp->bbs[bb].bbmin.x; - spfc.y = exp->bbs[bb].bbmin.y; - spfc.z = exp->bbs[bb].bbmin.z; + spfc = exp->bbs[bb].bbmin; - spf0.x = exp->bbs[bb].bbmax.x; - spf0.y = exp->bbs[bb].bbmax.y; - spf0.z = exp->bbs[bb].bbmax.z; + spf0 = exp->bbs[bb].bbmax; if (spfc.x < sp11c.x) { spfc.x = sp11c.x; diff --git a/src/game/gunfx.c b/src/game/gunfx.c index 5a0862237..8ee4d3025 100644 --- a/src/game/gunfx.c +++ b/src/game/gunfx.c @@ -28,9 +28,7 @@ void beamCreate(struct beam *beam, s32 weaponnum, struct coord *from, struct coo { f32 distance; - beam->from.x = from->x; - beam->from.y = from->y; - beam->from.z = from->z; + beam->from = *from; beam->dir.x = to->x - from->x; beam->dir.y = to->y - from->y; @@ -2072,16 +2070,12 @@ void boltbeamFree(struct prop *prop) void boltbeamSetHeadPos(s32 beamnum, struct coord *pos) { - g_BoltBeams[beamnum].headpos.x = pos->x; - g_BoltBeams[beamnum].headpos.y = pos->y; - g_BoltBeams[beamnum].headpos.z = pos->z; + g_BoltBeams[beamnum].headpos = *pos; } void boltbeamSetTailPos(s32 beamnum, struct coord *pos) { - g_BoltBeams[beamnum].tailpos.x = pos->x; - g_BoltBeams[beamnum].tailpos.y = pos->y; - g_BoltBeams[beamnum].tailpos.z = pos->z; + g_BoltBeams[beamnum].tailpos = *pos; } void boltbeamIncrementHeadPos(s32 beamnum, f32 arg1, bool arg2) @@ -2228,9 +2222,7 @@ Gfx *lasersightRenderDot(Gfx *gdl) mtx4LoadIdentity(&sp1b0); mtx00015be0(camGetWorldToScreenMtxf(), &sp1b0); - campos.x = player->cam_pos.x; - campos.y = player->cam_pos.y; - campos.z = player->cam_pos.z; + campos = player->cam_pos; sp1b0.m[3][0] = 0.0f; sp1b0.m[3][1] = 0.0f; @@ -2250,13 +2242,9 @@ Gfx *lasersightRenderDot(Gfx *gdl) u32 *colours; struct gfxvtx *vertices; - pos.x = g_LaserSights[i].dotpos.x; - pos.y = g_LaserSights[i].dotpos.y; - pos.z = g_LaserSights[i].dotpos.z; + pos = g_LaserSights[i].dotpos; - rot.x = g_LaserSights[i].dotrot.x; - rot.y = g_LaserSights[i].dotrot.y; - rot.z = g_LaserSights[i].dotrot.z; + rot = g_LaserSights[i].dotrot; colours = gfxAllocateColours(2); @@ -2415,9 +2403,7 @@ Gfx *lasersightRenderBeam(Gfx *gdl) mtx4LoadIdentity(&sp198); mtx00015be0(camGetWorldToScreenMtxf(), &sp198); - campos.x = player->cam_pos.x; - campos.y = player->cam_pos.y; - campos.z = player->cam_pos.z; + campos = player->cam_pos; sp198.m[3][0] = 0; sp198.m[3][1] = 0; @@ -2439,9 +2425,7 @@ Gfx *lasersightRenderBeam(Gfx *gdl) struct gfxvtx *vertices; struct coord sp98; - sp98.x = g_LaserSights[i].beamnear.x; - sp98.y = g_LaserSights[i].beamnear.y; - sp98.z = g_LaserSights[i].beamnear.z; + sp98 = g_LaserSights[i].beamnear; mtx4TransformVecInPlace(&sp14c, &sp98); @@ -2453,17 +2437,13 @@ Gfx *lasersightRenderBeam(Gfx *gdl) mtx4RotateVecInPlace(&sp10c, &spa8); - spcc.x = g_LaserSights[i].beamnear.x; - spcc.y = g_LaserSights[i].beamnear.y; - spcc.z = g_LaserSights[i].beamnear.z; + spcc = g_LaserSights[i].beamnear; spcc.x = (spcc.x - campos.x) * 5.0f; spcc.y = (spcc.y - campos.y) * 5.0f; spcc.z = (spcc.z - campos.z) * 5.0f; - spc0.x = g_LaserSights[i].beamfar.x; - spc0.y = g_LaserSights[i].beamfar.y; - spc0.z = g_LaserSights[i].beamfar.z; + spc0 = g_LaserSights[i].beamfar; spc0.x = (spc0.x - campos.f[0]) * 5.0f; spc0.y = (spc0.y - campos.f[1]) * 5.0f; @@ -2549,17 +2529,11 @@ void lasersightSetBeam(s32 id, s32 arg1, struct coord *near, struct coord *far) g_LaserSights[i].id = id; } - g_LaserSights[i].unk04.x = near->x; - g_LaserSights[i].unk04.y = near->y; - g_LaserSights[i].unk04.z = near->z; + g_LaserSights[i].unk04 = *near; - g_LaserSights[i].beamnear.x = near->x; - g_LaserSights[i].beamnear.y = near->y; - g_LaserSights[i].beamnear.z = near->z; + g_LaserSights[i].beamnear = *near; - g_LaserSights[i].beamfar.x = far->x; - g_LaserSights[i].beamfar.y = far->y; - g_LaserSights[i].beamfar.z = far->z; + g_LaserSights[i].beamfar = *far; g_LaserSights[i].unk44 = arg1; g_LaserSights[i].unk28 = 0; @@ -2572,13 +2546,9 @@ void lasersightSetDot(s32 arg0, struct coord *pos, struct coord *rot) if (lasersightExists(arg0, &i)) { g_LaserSights[i].unk28 += 1.0f; - g_LaserSights[i].dotpos.x = pos->x; - g_LaserSights[i].dotpos.y = pos->y; - g_LaserSights[i].dotpos.z = pos->z; + g_LaserSights[i].dotpos = *pos; - g_LaserSights[i].dotrot.x = rot->x; - g_LaserSights[i].dotrot.y = rot->y; - g_LaserSights[i].dotrot.z = rot->z; + g_LaserSights[i].dotrot = *rot; } } diff --git a/src/game/lv.c b/src/game/lv.c index dfe3409c3..b86a43d97 100644 --- a/src/game/lv.c +++ b/src/game/lv.c @@ -911,9 +911,7 @@ void lvFindThreats(void) struct prop **propptr = g_Vars.endonscreenprops - 1; struct coord campos; - campos.x = g_Vars.currentplayer->cam_pos.x; - campos.y = g_Vars.currentplayer->cam_pos.y; - campos.z = g_Vars.currentplayer->cam_pos.z; + campos = g_Vars.currentplayer->cam_pos; while (propptr >= g_Vars.onscreenprops) { prop = *propptr; @@ -1422,9 +1420,7 @@ Gfx *lvRender(Gfx *gdl) sndStart(var80095200, SFX_DRUGSPY_FIREDART, 0, -1, -1, -1, -1, -1); g_Vars.currentplayer->eyespydarts--; - direction.x = g_Vars.currentplayer->eyespy->look.x; - direction.y = g_Vars.currentplayer->eyespy->look.y; - direction.z = g_Vars.currentplayer->eyespy->look.z; + direction = g_Vars.currentplayer->eyespy->look; projectileCreate(g_Vars.currentplayer->eyespy->prop, 0, &g_Vars.currentplayer->eyespy->prop->pos, &direction, WEAPON_TRANQUILIZER, NULL); diff --git a/src/game/menugfx.c b/src/game/menugfx.c index 341cec11d..d4e79c6ab 100644 --- a/src/game/menugfx.c +++ b/src/game/menugfx.c @@ -2171,9 +2171,7 @@ Gfx *menugfxRenderBgSuccess(Gfx *gdl) f32 sine = sinf(f0 * M_BADTAU + M_BADTAU * (i / 15.0f)); f32 cosine = cosf(f0 * M_BADTAU + M_BADTAU * (i / 15.0f)); - pos.x = g_MenuParticles[i].x; - pos.y = g_MenuParticles[i].y; - pos.z = g_MenuParticles[i].z; + pos = g_MenuParticles[i]; if (pos.z < -6600.0f) { s3 = -(pos.f[2] + 6600.0f) / 1400.0f * 5.0f; diff --git a/src/game/nbomb.c b/src/game/nbomb.c index 1bb7706b6..f55be962d 100644 --- a/src/game/nbomb.c +++ b/src/game/nbomb.c @@ -690,9 +690,7 @@ void nbombCreateStorm(struct coord *pos, struct prop *ownerprop) nbombReset(&g_Nbombs[index]); - g_Nbombs[index].pos.x = pos->x; - g_Nbombs[index].pos.y = pos->y; - g_Nbombs[index].pos.z = pos->z; + g_Nbombs[index].pos = *pos; g_Nbombs[index].age240 = 0; g_Nbombs[index].ownerprop = ownerprop; @@ -799,9 +797,7 @@ Gfx *nbombRenderOverlay(Gfx *gdl) s16 viewright; s16 viewbottom; - campos.x = g_Vars.currentplayer->cam_pos.x; - campos.y = g_Vars.currentplayer->cam_pos.y; - campos.z = g_Vars.currentplayer->cam_pos.z; + campos = g_Vars.currentplayer->cam_pos; for (i = 0; i < ARRAYCOUNT(g_Nbombs); i++) { if (g_Nbombs[i].age240 >= 0 && g_Nbombs[i].age240 <= TICKS(350)) { @@ -927,9 +923,7 @@ Gfx *gasRender(Gfx *gdl) if (g_Vars.stagenum == STAGE_ESCAPE) { f32 intensityfrac = 1.0f; - campos.x = g_Vars.currentplayer->cam_pos.x; - campos.y = g_Vars.currentplayer->cam_pos.y; - campos.z = g_Vars.currentplayer->cam_pos.z; + campos = g_Vars.currentplayer->cam_pos; for (i = 0; i < 12; i++) { if (roomContainsCoord(&campos, gasrooms[i])) { diff --git a/src/game/player.c b/src/game/player.c index d6ebc7128..591db6446 100644 --- a/src/game/player.c +++ b/src/game/player.c @@ -325,9 +325,7 @@ f32 playerChooseSpawnLocation(f32 chrradius, struct coord *dstpos, s16 *dstrooms slrooms[sllen][0] = pad->room; slrooms[sllen][1] = -1; - slpositions[sllen].x = pad->pos.x; - slpositions[sllen].y = pad->pos.y; - slpositions[sllen].z = pad->pos.z; + slpositions[sllen] = pad->pos; slangles[sllen] = atan2f(pad->look.x, pad->look.z); @@ -364,9 +362,7 @@ f32 playerChooseSpawnLocation(f32 chrradius, struct coord *dstpos, s16 *dstrooms slrooms[sllen][0] = pad->room; slrooms[sllen][1] = -1; - slpositions[sllen].x = pad->pos.x; - slpositions[sllen].y = pad->pos.y; - slpositions[sllen].z = pad->pos.z; + slpositions[sllen] = pad->pos; slangles[sllen] = atan2f(pad->look.x, pad->look.z); @@ -425,9 +421,7 @@ f32 playerChooseSpawnLocation(f32 chrradius, struct coord *dstpos, s16 *dstrooms slrooms[sllen][0] = pad->room; slrooms[sllen][1] = -1; - slpositions[sllen].x = pad->pos.x; - slpositions[sllen].y = pad->pos.y; - slpositions[sllen].z = pad->pos.z; + slpositions[sllen] = pad->pos; slangles[sllen] = atan2f(pad->look.x, pad->look.z); @@ -450,9 +444,7 @@ f32 playerChooseSpawnLocation(f32 chrradius, struct coord *dstpos, s16 *dstrooms if (sllen > 0) { p = random() % sllen; - dstpos->x = slpositions[p].x; - dstpos->y = slpositions[p].y; - dstpos->z = slpositions[p].z; + *dstpos = slpositions[p]; roomsCopy(slrooms[p], dstrooms); @@ -464,9 +456,7 @@ f32 playerChooseSpawnLocation(f32 chrradius, struct coord *dstpos, s16 *dstrooms dstrooms[0] = pad->room; dstrooms[1] = -1; - dstpos->x = pad->pos.x; - dstpos->y = pad->pos.y; - dstpos->z = pad->pos.z; + *dstpos = pad->pos; dstangle = atan2f(pad->look.x, pad->look.z); } @@ -1108,9 +1098,7 @@ void playerSpawn(void) void playerResetBond(struct playerbond *pb, struct coord *pos) { - pb->unk10.x = pos->x; - pb->unk10.y = pos->y; - pb->unk10.z = pos->z; + pb->unk10 = *pos; pb->unk1c.x = 1; pb->unk1c.y = 0; @@ -1723,9 +1711,7 @@ void playerExecutePreparedWarp(void) // Warp to an exact position with a static direction of 0, 0, 1. // Used by device and holo training to warp player back to room, // and Deep Sea teleports - memcampos.x = g_Pads[g_WarpType1Pad].pos.x; - memcampos.y = g_Pads[g_WarpType1Pad].pos.y; - memcampos.z = g_Pads[g_WarpType1Pad].pos.z; + memcampos = g_Pads[g_WarpType1Pad].pos; pos.x = memcampos.f[0]; pos.y = memcampos.f[1]; @@ -1735,15 +1721,11 @@ void playerExecutePreparedWarp(void) } else if (g_WarpType2Params) { // Warp to an exact position with an optional direction. // Used by AI command 00df, but that command is not used. - pos.x = g_WarpType2Params->pos.x; - pos.y = g_WarpType2Params->pos.y; - pos.z = g_WarpType2Params->pos.z; + pos = g_WarpType2Params->pos; room = g_Pads[g_WarpType2Params->pad].room; - memcampos.x = g_Pads[g_WarpType2Params->pad].pos.x; - memcampos.y = g_Pads[g_WarpType2Params->pad].pos.y; - memcampos.z = g_Pads[g_WarpType2Params->pad].pos.z; + memcampos = g_Pads[g_WarpType2Params->pad].pos; if (1); @@ -1758,9 +1740,7 @@ void playerExecutePreparedWarp(void) // Used by AI command 00f4, but that command is not used. room = g_Pads[g_WarpType3Pad].room; - memcampos.x = g_Pads[g_WarpType3Pad].pos.x; - memcampos.y = g_Pads[g_WarpType3Pad].pos.y; - memcampos.z = g_Pads[g_WarpType3Pad].pos.z; + memcampos = g_Pads[g_WarpType3Pad].pos; pos.x = memcampos.x + sinf(g_WarpType3PosAngle) * g_WarpType3Range + cosf(g_WarpType3PosAngle) * 0.0f; pos.y = memcampos.y + g_WarpType3MoreHeight + g_WarpType3Height; @@ -2701,9 +2681,7 @@ void playerTickExplode(void) && g_Vars.lvframe60 > g_Vars.currentplayer->bondnextexplode) { struct coord pos; - pos.x = g_Vars.currentplayer->prop->pos.x; - pos.y = g_Vars.currentplayer->prop->pos.y; - pos.z = g_Vars.currentplayer->prop->pos.z; + pos = g_Vars.currentplayer->prop->pos; switch (g_Vars.currentplayer->bondcurexplode % 4) { case 0: pos.x += 250.0f + 150.0f * RANDOMFRAC(); break; @@ -3658,9 +3636,7 @@ void playerTick(bool arg0) struct coord sp308; playermgrSetFovY(120); viSetFovY(120); - sp308.x = g_Vars.currentplayer->eyespy->prop->pos.x; - sp308.y = g_Vars.currentplayer->eyespy->prop->pos.y; - sp308.z = g_Vars.currentplayer->eyespy->prop->pos.z; + sp308 = g_Vars.currentplayer->eyespy->prop->pos; playerTickChrBody(); bmoveTick(0, 0, 0, 1); playerSetCameraMode(CAMERAMODE_EYESPY); @@ -3712,9 +3688,7 @@ void playerTick(bool arg0) sp2b8[2][1] = rocket->base.realrot[2][1] / sp2a8; sp2b8[2][2] = rocket->base.realrot[2][2] / sp2a8; - rocketpos.x = rocket->base.prop->pos.x; - rocketpos.y = rocket->base.prop->pos.y; - rocketpos.z = rocket->base.prop->pos.z; + rocketpos = rocket->base.prop->pos; bgFindRoomsByPos(&rocketpos, inrooms, aboverooms, 20, &bestroom); @@ -3979,9 +3953,7 @@ void playerTick(bool arg0) playerUpdateShake(); playerSetCameraMode(CAMERAMODE_DEFAULT); - spf4.x = g_Vars.currentplayer->bond2.unk10.x; - spf4.y = g_Vars.currentplayer->bond2.unk10.y; - spf4.z = g_Vars.currentplayer->bond2.unk10.z; + spf4 = g_Vars.currentplayer->bond2.unk10; spf4.x = a + spf4.x; spf4.y = b + spf4.y; @@ -4514,18 +4486,14 @@ void playerSetGlobalDrawWorldOffset(s32 room) { room0f166df0(room, &g_Vars.currentplayer->globaldrawworldoffset); - g_Vars.currentplayer->globaldrawworldbgoffset.x = g_Vars.currentplayer->globaldrawworldoffset.x; - g_Vars.currentplayer->globaldrawworldbgoffset.y = g_Vars.currentplayer->globaldrawworldoffset.y; - g_Vars.currentplayer->globaldrawworldbgoffset.z = g_Vars.currentplayer->globaldrawworldoffset.z; + g_Vars.currentplayer->globaldrawworldbgoffset = g_Vars.currentplayer->globaldrawworldoffset; roomSetLastForOffset(room); } void playerSetGlobalDrawCameraOffset(void) { - g_Vars.currentplayer->globaldrawcameraoffset.x = g_Vars.currentplayer->globaldrawworldoffset.x; - g_Vars.currentplayer->globaldrawcameraoffset.y = g_Vars.currentplayer->globaldrawworldoffset.y; - g_Vars.currentplayer->globaldrawcameraoffset.z = g_Vars.currentplayer->globaldrawworldoffset.z; + g_Vars.currentplayer->globaldrawcameraoffset = g_Vars.currentplayer->globaldrawworldoffset; mtx4RotateVecInPlace(camGetWorldToScreenMtxf(), &g_Vars.currentplayer->globaldrawcameraoffset); } @@ -5156,9 +5124,7 @@ void playerDieByShooter(u32 shooter, bool force) g_Vars.currentplayer->bonddie = g_Vars.currentplayer->bond2; g_Vars.currentplayer->thetadie = g_Vars.currentplayer->vv_theta; g_Vars.currentplayer->vertadie = g_Vars.currentplayer->vv_verta; - g_Vars.currentplayer->posdie.x = g_Vars.currentplayer->prop->pos.x; - g_Vars.currentplayer->posdie.y = g_Vars.currentplayer->prop->pos.y; - g_Vars.currentplayer->posdie.z = g_Vars.currentplayer->prop->pos.z; + g_Vars.currentplayer->posdie = g_Vars.currentplayer->prop->pos; if (g_Vars.currentplayer->bondmovemode == MOVEMODE_WALK) { if (g_Vars.currentplayer->unk1af0) { @@ -5372,9 +5338,7 @@ void player0f0c1bd8(struct coord *pos, struct coord *up, struct coord *look) void playerSetCamPropertiesWithRoom(struct coord *pos, struct coord *up, struct coord *look, s32 room) { - g_Vars.currentplayer->memcampos.x = pos->x; - g_Vars.currentplayer->memcampos.y = pos->y; - g_Vars.currentplayer->memcampos.z = pos->z; + g_Vars.currentplayer->memcampos = *pos; g_Vars.currentplayer->memcamroom = room; playerSetCamProperties(pos, up, look, room); @@ -5390,15 +5354,9 @@ void playerSetCamProperties(struct coord *pos, struct coord *up, struct coord *l { struct player *player = g_Vars.currentplayer; - player->cam_pos.x = pos->x; - player->cam_pos.y = pos->y; - player->cam_pos.z = pos->z; - player->cam_up.x = up->x; - player->cam_up.y = up->y; - player->cam_up.z = up->z; - player->cam_look.x = look->x; - player->cam_look.y = look->y; - player->cam_look.z = look->z; + player->cam_pos = *pos; + player->cam_up = *up; + player->cam_look = *look; player->cam_room = room; } @@ -5636,9 +5594,7 @@ s32 playerTickThirdPerson(struct prop *prop) player->vv_theta = (M_BADTAU - chrGetInverseTheta(chr)) * 360.0f / M_BADTAU; player->vv_verta = 0; } else { - sp9c.x = player->prop->pos.x; - sp9c.y = player->prop->pos.y; - sp9c.z = player->prop->pos.z; + sp9c = player->prop->pos; player->vv_theta = (M_BADTAU - chrGetInverseTheta(chr)) * 360.0f / M_BADTAU; player->vv_verta = 0; @@ -5692,9 +5648,7 @@ s32 playerTickThirdPerson(struct prop *prop) chrSetFiring(chr, HAND_LEFT, player->hands[HAND_LEFT].flashon); } - sp80.x = prop->pos.x; - sp80.y = prop->pos.y; - sp80.z = prop->pos.z; + sp80 = prop->pos; modelGetRootPosition(chr->model, &sp8c); @@ -5717,18 +5671,14 @@ s32 playerTickThirdPerson(struct prop *prop) tickop2 = chrTick(prop); - prop->pos.x = sp80.x; - prop->pos.y = sp80.y; - prop->pos.z = sp80.z; + prop->pos = sp80; if ((chr->hidden & CHRHFLAG_00000800) == 0) { for (i = 0; i < 2; i++) { if (chrGetGunPos(chr, i, &player->chrmuzzlelastpos[i])) { player->chrmuzzlelast[i] = g_Vars.lvframenum; } else if (player->chrmuzzlelast[i] < g_Vars.lvframenum - 1) { - player->chrmuzzlelastpos[i].x = player->hands[i].muzzlepos.x; - player->chrmuzzlelastpos[i].y = player->hands[i].muzzlepos.y; - player->chrmuzzlelastpos[i].z = player->hands[i].muzzlepos.z; + player->chrmuzzlelastpos[i] = player->hands[i].muzzlepos; } } diff --git a/src/game/prop.c b/src/game/prop.c index c5c1717c0..b5a35366b 100644 --- a/src/game/prop.c +++ b/src/game/prop.c @@ -611,21 +611,13 @@ struct prop *shotCalculateHits(s32 handnum, bool arg1, struct coord *arg2, struc bgun0f0a9494(arg6); - shotdata.gunpos.x = gunpos->x; - shotdata.gunpos.y = gunpos->y; - shotdata.gunpos.z = gunpos->z; + shotdata.gunpos = *gunpos; - shotdata.unk00.x = arg2->x; - shotdata.unk00.y = arg2->y; - shotdata.unk00.z = arg2->z; + shotdata.unk00 = *arg2; - shotdata.dir.x = dir->x; - shotdata.dir.y = dir->y; - shotdata.dir.z = dir->z; + shotdata.dir = *dir; - shotdata.unk0c.x = arg3->x; - shotdata.unk0c.y = arg3->y; - shotdata.unk0c.z = arg3->z; + shotdata.unk0c = *arg3; gsetPopulateFromCurrentPlayer(handnum, &shotdata.gset); func = gsetGetWeaponFunction(&shotdata.gset); @@ -708,9 +700,7 @@ struct prop *shotCalculateHits(s32 handnum, bool arg1, struct coord *arg2, struc sp694 = sp664; - hitpos.x = sp664.unk00.x; - hitpos.y = sp664.unk00.y; - hitpos.z = sp664.unk00.z; + hitpos = sp664.unk00; } } } @@ -746,9 +736,7 @@ struct prop *shotCalculateHits(s32 handnum, bool arg1, struct coord *arg2, struc hitindex = -1; if (shotdata.hits[0].prop) { - spa0.x = shotdata.hits[0].pos.x; - spa0.y = shotdata.hits[0].pos.y; - spa0.z = shotdata.hits[0].pos.z; + spa0 = shotdata.hits[0].pos; hitindex = 0; } @@ -782,9 +770,7 @@ struct prop *shotCalculateHits(s32 handnum, bool arg1, struct coord *arg2, struc if (shotdata.hits[i].unk4d) { sp6cc = true; doexplosiveshells = explosiveshells; - hitpos.x = shotdata.hits[i].pos.x; - hitpos.y = shotdata.hits[i].pos.y; - hitpos.z = shotdata.hits[i].pos.z; + hitpos = shotdata.hits[i].pos; } else if (shotdata.hits[i].unk4c || (explosiveshells && (obj->type == OBJTYPE_GLASS || obj->type == OBJTYPE_TINTEDGLASS))) { s1++; @@ -792,16 +778,12 @@ struct prop *shotCalculateHits(s32 handnum, bool arg1, struct coord *arg2, struc if (s1 >= shotdata.penetration) { sp6cc = true; doexplosiveshells = explosiveshells; - hitpos.x = shotdata.hits[i].pos.x; - hitpos.y = shotdata.hits[i].pos.y; - hitpos.z = shotdata.hits[i].pos.z; + hitpos = shotdata.hits[i].pos; } } if (doexplosiveshells) { - sp8c.x = shotdata.hits[i].pos.x; - sp8c.y = shotdata.hits[i].pos.y; - sp8c.z = shotdata.hits[i].pos.z; + sp8c = shotdata.hits[i].pos; func0f065e74(&root->pos, root->rooms, &sp8c, sp7c); explosionCreateSimple(0, &sp8c, sp7c, EXPLOSIONTYPE_PHOENIX, g_Vars.currentplayernum); @@ -1082,9 +1064,7 @@ void func0f061fa8(struct shotdata *shotdata, struct prop *prop, f32 arg2, s32 hi hit->model = model; hit->unk4c = arg9; hit->unk4d = arg10; - hit->pos.x = arg11->x; - hit->pos.y = arg11->y; - hit->pos.z = arg11->z; + hit->pos = *arg11; fVar8 = sqrtf(arg12->f[0] * arg12->f[0] + arg12->f[1] * arg12->f[1] + arg12->f[2] * arg12->f[2]); diff --git a/src/game/propobj.c b/src/game/propobj.c index 94c8c1415..b36478653 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -2144,9 +2144,7 @@ void func0f06a580(struct defaultobj *obj, struct coord *pos, Mtxf *matrix, s16 * mtx4ToMtx3(matrix, obj->realrot); - prop->pos.x = pos->x; - prop->pos.y = pos->y; - prop->pos.z = pos->z; + prop->pos = *pos; propDeregisterRooms(prop); roomsCopy(rooms, prop->rooms); @@ -2619,9 +2617,7 @@ bool func0f06b488(struct prop *prop, struct coord *arg1, struct coord *arg2, str if (f0 < *arg6) { *arg6 = f0; - arg4->x = sp20.x; - arg4->y = sp20.y; - arg4->z = sp20.z; + *arg4 = sp20; arg5->x = -arg3->x; arg5->y = 0.0f; @@ -3134,15 +3130,11 @@ bool projectileFindCollidingProp(struct prop *prop, struct coord *pos1, struct c sp98.y *= tmp; sp98.z *= tmp; - sp88.x = pos1->x; - sp88.y = pos1->y; - sp88.z = pos1->z; + sp88 = *pos1; mtx4TransformVecInPlace(camGetWorldToScreenMtxf(), &sp88); - sp7c.x = sp98.x; - sp7c.y = sp98.y; - sp7c.z = sp98.z; + sp7c = sp98; mtx4RotateVecInPlace(camGetWorldToScreenMtxf(), &sp7c); @@ -3208,13 +3200,9 @@ bool projectileFindCollidingProp(struct prop *prop, struct coord *pos1, struct c if (spa4) { result = true; - var8009ce78.x = sp98.x; - var8009ce78.y = sp98.y; - var8009ce78.z = sp98.z; + var8009ce78 = sp98; - var8009ce88.x = sp7c.x; - var8009ce88.y = sp7c.y; - var8009ce88.z = sp7c.z; + var8009ce88 = sp7c; } return result; @@ -3243,9 +3231,7 @@ s32 func0f06cd00(struct defaultobj *obj, struct coord *pos, struct coord *arg2, g_EmbedProp = 0; var80069944 = 0; - sp1c4.x = pos->x; - sp1c4.y = pos->y; - sp1c4.z = pos->z; + sp1c4 = *pos; if ((prop->pos.x != pos->x || prop->pos.y != pos->y || prop->pos.z != pos->z) && (obj->hidden & OBJHFLAG_PROJECTILE) @@ -3308,21 +3294,15 @@ s32 func0f06cd00(struct defaultobj *obj, struct coord *pos, struct coord *arg2, && (prop->pos.f[0] != hitthing.unk00.f[0] || prop->pos.f[1] != hitthing.unk00.f[1] || prop->pos.f[2] != hitthing.unk00.f[2])) { cdresult = CDRESULT_COLLISION; - sp1c4.x = hitthing.unk00.x; - sp1c4.y = hitthing.unk00.y; - sp1c4.z = hitthing.unk00.z; + sp1c4 = hitthing.unk00; - arg3->x = hitthing.unk0c.x; - arg3->y = hitthing.unk0c.y; - arg3->z = hitthing.unk0c.z; + *arg3 = hitthing.unk0c; } } if (!projectileFindCollidingProp(prop, &prop->pos, &sp1c4, CDTYPE_ALL, arg2, arg3, spcc)) { if (cdresult == CDRESULT_COLLISION) { - arg2->x = sp1c4.x; - arg2->y = sp1c4.y; - arg2->z = sp1c4.z; + *arg2 = sp1c4; } } else { cdresult = CDRESULT_COLLISION; @@ -3381,9 +3361,7 @@ bool func0f06d37c(struct defaultobj *obj, struct coord *arg1, struct coord *arg2 g_EmbedProp = NULL; var80069944 = 0; - sp80.x = arg1->x; - sp80.y = arg1->y; - sp80.z = arg1->z; + sp80 = *arg1; if (prop->pos.x != arg1->x || prop->pos.y != arg1->y || prop->pos.z != arg1->z) { if (obj->hidden & OBJHFLAG_PROJECTILE) { @@ -3391,9 +3369,7 @@ bool func0f06d37c(struct defaultobj *obj, struct coord *arg1, struct coord *arg2 setup0f09233c(obj, &sp80, obj->realrot, rooms); if (cdExamCylMove02(&prop->pos, &sp80, radius, rooms, CDTYPE_ALL, false, 0.0f, 0.0f) != CDRESULT_COLLISION) { - prop->pos.x = sp80.x; - prop->pos.y = sp80.y; - prop->pos.z = sp80.z; + prop->pos = sp80; propDeregisterRooms(prop); roomsCopy(rooms, prop->rooms); @@ -3484,9 +3460,7 @@ bool func0f06d37c(struct defaultobj *obj, struct coord *arg1, struct coord *arg2 setup0f09233c(obj, &sp4c, obj->realrot, rooms); if (cdTestVolume(&sp4c, radius, rooms, CDTYPE_ALL, CHECKVERTICAL_NO, 0.0f, 0.0f) != CDRESULT_COLLISION) { - prop->pos.x = sp4c.x; - prop->pos.y = sp4c.y; - prop->pos.z = sp4c.z; + prop->pos = sp4c; propDeregisterRooms(prop); roomsCopy(rooms, prop->rooms); @@ -3495,9 +3469,7 @@ bool func0f06d37c(struct defaultobj *obj, struct coord *arg1, struct coord *arg2 } } } else { - arg2->x = sp80.x; - arg2->y = sp80.y; - arg2->z = sp80.z; + *arg2 = sp80; } if (!sp98) { @@ -4185,9 +4157,7 @@ bool propExplode(struct prop *prop, s32 exptype) mtx4TransformVecInPlace(camGetProjectionMtxF(), &pos); } else { - pos.x = parent->pos.x; - pos.y = parent->pos.y; - pos.z = parent->pos.z; + pos = parent->pos; } func0f065e74(&parent->pos, parent->rooms, &pos, rooms); @@ -4296,9 +4266,7 @@ void weaponTick(struct prop *prop) projectileSetSticky(prop); - projectile->speed.x = direction.x; - projectile->speed.y = direction.y; - projectile->speed.z = direction.z; + projectile->speed = direction; mtx4LoadIdentity(&projectile->mtx); @@ -5730,9 +5698,7 @@ void func0f070ca0(struct defaultobj *obj, struct geotilef *tile, u32 flags, stru tile->header.numvertices = 4; for (i = 0; i < 4; i++) { - tile->vertices[i].x = vertices[i].x; - tile->vertices[i].y = vertices[i].y; - tile->vertices[i].z = vertices[i].z; + tile->vertices[i] = vertices[i]; } tile->floorcol = 0xfff; @@ -6342,9 +6308,7 @@ s32 func0f072144(struct defaultobj *obj, struct coord *arg1, f32 arg2, bool arg3 } } - pos.x = prop->pos.x; - pos.y = prop->pos.y; - pos.z = prop->pos.z; + pos = prop->pos; propSetPerimEnabled(prop, false); @@ -6535,9 +6499,7 @@ f32 objCollide(struct defaultobj *movingobj, struct coord *movingvel, f32 rotati sp4c.y -= sp58.y; sp4c.z -= sp58.z; } else { - sp58.x = movingobj->prop->pos.x; - sp58.y = movingobj->prop->pos.y; - sp58.z = movingobj->prop->pos.z; + sp58 = movingobj->prop->pos; sp4c.x = obstacle->pos.x - movingobj->prop->pos.x; sp4c.y = obstacle->pos.y - movingobj->prop->pos.y; @@ -6874,9 +6836,7 @@ bool rocketTickFbw(struct weaponobj *rocket) dir.f[1] = sinf(projectile->unk014); dir.f[2] = cosf(projectile->unk018) * cosf(projectile->unk014); - newpos.x = rocketprop->pos.x; - newpos.y = rocketprop->pos.y; - newpos.z = rocketprop->pos.z; + newpos = rocketprop->pos; for (i = 0; i < g_Vars.lvupdate60; i++) { projectile->unk010 += PAL ? 0.0021600001f : 0.0018f; @@ -6906,9 +6866,7 @@ bool rocketTickFbw(struct weaponobj *rocket) if (cdresult == CDRESULT_NOCOLLISION) { func0f065e74(&rocketprop->pos, rocketprop->rooms, &newpos, newrooms); - rocketprop->pos.x = newpos.x; - rocketprop->pos.y = newpos.y; - rocketprop->pos.z = newpos.z; + rocketprop->pos = newpos; propDeregisterRooms(rocketprop); roomsCopy(newrooms, rocketprop->rooms); @@ -6956,9 +6914,7 @@ bool rocketTickFbw(struct weaponobj *rocket) && cdTestLos05(&rocketprop->pos, rocketprop->rooms, &chr->prop->pos, chr->prop->rooms, CDTYPE_OBJS | CDTYPE_DOORS | CDTYPE_PATHBLOCKER | CDTYPE_BG | CDTYPE_AIOPAQUE, GEOFLAG_BLOCK_SIGHT)) { - projectile->nextsteppos.x = chr->prop->pos.x; - projectile->nextsteppos.y = chr->prop->pos.y; - projectile->nextsteppos.z = chr->prop->pos.z; + projectile->nextsteppos = chr->prop->pos; projectile->numwaypads = 0; } } @@ -7006,9 +6962,7 @@ s32 projectileLaunch(struct defaultobj *obj, struct projectile *projectile, stru func0f065e74(&prop->pos, prop->rooms, &projectile->nextsteppos, rooms); - prop->pos.x = projectile->nextsteppos.x; - prop->pos.y = projectile->nextsteppos.y; - prop->pos.z = projectile->nextsteppos.z; + prop->pos = projectile->nextsteppos; propDeregisterRooms(prop); roomsCopy(rooms, prop->rooms); @@ -7021,9 +6975,7 @@ s32 projectileLaunch(struct defaultobj *obj, struct projectile *projectile, stru func0f065e74(&prop->pos, prop->rooms, arg2, rooms); - prop->pos.x = arg2->x; - prop->pos.y = arg2->y; - prop->pos.z = arg2->z; + prop->pos = *arg2; propDeregisterRooms(prop); roomsCopy(rooms, prop->rooms); @@ -7075,9 +7027,7 @@ s32 projectileTick(struct defaultobj *obj, bool *embedded) projectileLaunch(obj, projectile, &sp5e8, &sp5f4); } - sp5dc.x = prop->pos.x; - sp5dc.y = prop->pos.y; - sp5dc.z = prop->pos.z; + sp5dc = prop->pos; if (projectile->pickuptimer240 > 0) { projectile->pickuptimer240 -= g_Vars.lvupdate240; @@ -7272,9 +7222,7 @@ s32 projectileTick(struct defaultobj *obj, bool *embedded) sp3c4.y = sp3d0.y; sp3c4.z = sp3d0.x; - sp3d0.x = prop->pos.x; - sp3d0.y = prop->pos.y; - sp3d0.z = prop->pos.z; + sp3d0 = prop->pos; } func0f02e4f8(&sp3d0, &sp3c4, &sp3b8); @@ -7441,9 +7389,7 @@ s32 projectileTick(struct defaultobj *obj, bool *embedded) } if (cdresult == CDRESULT_NOCOLLISION) { - projectile->speed.x = sp590.x; - projectile->speed.y = sp590.y; - projectile->speed.z = sp590.z; + projectile->speed = sp590; } } } @@ -7558,9 +7504,7 @@ s32 projectileTick(struct defaultobj *obj, bool *embedded) mtx.m[2][1] = obj->realrot[2][1] / sp29c; mtx.m[2][2] = obj->realrot[2][2] / sp29c; - sp2f8.x = obj->prop->pos.x; - sp2f8.y = obj->prop->pos.y; - sp2f8.z = obj->prop->pos.z; + sp2f8 = obj->prop->pos; sp290.x = projectile->targetprop->pos.x - sp2f8.x; sp290.y = projectile->targetprop->pos.y - sp2f8.y; @@ -7568,9 +7512,7 @@ s32 projectileTick(struct defaultobj *obj, bool *embedded) guNormalize(&sp290.x, &sp290.y, &sp290.z); - sp2ec.x = projectile->speed.x; - sp2ec.y = projectile->speed.y; - sp2ec.z = projectile->speed.z; + sp2ec = projectile->speed; guNormalize(&sp2ec.x, &sp2ec.y, &sp2ec.z); @@ -7663,9 +7605,7 @@ s32 projectileTick(struct defaultobj *obj, bool *embedded) func0f096698(&sp30c, &projectile->mtx, g_Vars.lvupdate240); mtx4ToMtx3(&sp30c, obj->realrot); - sp5c8.x = prop->pos.x; - sp5c8.y = prop->pos.y; - sp5c8.z = prop->pos.z; + sp5c8 = prop->pos; roomsCopy(prop->rooms, sp5b8); @@ -7943,9 +7883,7 @@ s32 projectileTick(struct defaultobj *obj, bool *embedded) struct coord dir; struct prop *ownerprop = obj->projectile->ownerprop; - dir.x = projectile->speed.x; - dir.y = projectile->speed.y; - dir.z = projectile->speed.z; + dir = projectile->speed; guNormalize(&dir.x, &dir.y, &dir.z); @@ -7968,9 +7906,7 @@ s32 projectileTick(struct defaultobj *obj, bool *embedded) func0f065e74(&prop->pos, prop->rooms, &sp5dc, rooms); - prop->pos.x = sp5dc.x; - prop->pos.y = sp5dc.y; - prop->pos.z = sp5dc.z; + prop->pos = sp5dc; propDeregisterRooms(prop); roomsCopy(rooms, prop->rooms); @@ -7981,16 +7917,12 @@ s32 projectileTick(struct defaultobj *obj, bool *embedded) sp5dc.x = prop->pos.x; sp5dc.z = prop->pos.z; } else { - sp5dc.x = sp5e8.x; - sp5dc.y = sp5e8.y; - sp5dc.z = sp5e8.z; + sp5dc = sp5e8; } func0f065e74(&prop->pos, prop->rooms, &sp5dc, rooms); - prop->pos.x = sp5dc.x; - prop->pos.y = sp5dc.y; - prop->pos.z = sp5dc.z; + prop->pos = sp5dc; propDeregisterRooms(prop); roomsCopy(rooms, prop->rooms); @@ -8020,9 +7952,7 @@ s32 projectileTick(struct defaultobj *obj, bool *embedded) #endif { sp354 = true; - sp5f4.x = sp380.x; - sp5f4.y = sp380.y; - sp5f4.z = sp380.z; + sp5f4 = sp380; guNormalize(&sp5f4.x, &sp5f4.y, &sp5f4.z); @@ -8049,9 +7979,7 @@ s32 projectileTick(struct defaultobj *obj, bool *embedded) } if (projectile->flags & PROJECTILEFLAG_INROOM) { - prop->pos.x = sp5c8.x; - prop->pos.y = sp5c8.y; - prop->pos.z = sp5c8.z; + prop->pos = sp5c8; propDeregisterRooms(prop); roomsCopy(sp5b8, prop->rooms); @@ -8173,9 +8101,7 @@ s32 projectileTick(struct defaultobj *obj, bool *embedded) } else { struct coord smokepos; - smokepos.x = projectile->speed.x; - smokepos.y = projectile->speed.y; - smokepos.z = projectile->speed.z; + smokepos = projectile->speed; guNormalize(&smokepos.x, &smokepos.y, &smokepos.z); @@ -8299,9 +8225,7 @@ s32 projectileTick(struct defaultobj *obj, bool *embedded) } } - sp5c8.x = prop->pos.x; - sp5c8.y = prop->pos.y; - sp5c8.z = prop->pos.z; + sp5c8 = prop->pos; roomsCopy(prop->rooms, sp5b8); func0f06d37c(obj, &sp5dc, &sp5e8, &sp5f4); @@ -8718,9 +8642,7 @@ void platformDisplaceProps(struct prop *platform, s16 *propnums, struct coord *p func0f065e74(&prop->pos, prop->rooms, &sp78, sp68); - prop->pos.x = sp78.x; - prop->pos.y = sp78.y; - prop->pos.z = sp78.z; + prop->pos = sp78; propDeregisterRooms(prop); roomsCopy(sp68, prop->rooms); @@ -8800,9 +8722,7 @@ void liftTick(struct prop *prop) s16 propnums[256]; s32 stop; - lift->prevpos.x = prop->pos.x; - lift->prevpos.y = prop->pos.y; - lift->prevpos.z = prop->pos.z; + lift->prevpos = prop->pos; if (lift->levelcur != lift->levelaim) { // Lift is not at the desired level. So try to move, but not if the lift @@ -8817,9 +8737,7 @@ void liftTick(struct prop *prop) } if (move) { - prevpos.x = prop->pos.x; - prevpos.y = prop->pos.y; - prevpos.z = prop->pos.z; + prevpos = prop->pos; cdGetPropsOnPlatform(prop, propnums, ARRAYCOUNT(propnums)); @@ -8892,9 +8810,7 @@ void liftTick(struct prop *prop) func0f065e74(&prop->pos, prop->rooms, &newpos, newrooms); - prop->pos.x = newpos.x; - prop->pos.y = newpos.y; - prop->pos.z = newpos.z; + prop->pos = newpos; propDeregisterRooms(prop); roomsCopy(newrooms, prop->rooms); @@ -8955,24 +8871,18 @@ void escastepTick(struct prop *prop) } if (!resetting) { - oldpos.x = prop->pos.x; - oldpos.y = prop->pos.y; - oldpos.z = prop->pos.z; + oldpos = prop->pos; cdGetPropsOnPlatform(prop, propnums, ARRAYCOUNT(propnums)); - step->prevpos.x = prop->pos.x; - step->prevpos.y = prop->pos.y; - step->prevpos.z = prop->pos.z; + step->prevpos = prop->pos; } else { step->prevpos.x = newpos.f[0]; step->prevpos.y = newpos.f[1]; step->prevpos.z = newpos.f[2]; } - prop->pos.x = newpos.x; - prop->pos.y = newpos.y; - prop->pos.z = newpos.z; + prop->pos = newpos; if ((obj->flags & OBJFLAG_IGNOREFLOORCOLOUR) == 0) { cdFindFloorYColourTypeAtPos(&prop->pos, prop->rooms, &obj->floorcol, 0); @@ -9197,9 +9107,7 @@ void cctvInitMatrices(struct prop *prop, Mtxf *mtx) mtx4LoadYRotation(yrot, &sp24); mtx4MultMtx4(&sp24, &cctv->camrotm, &matrices[1]); - sp64.x = rodata->position.pos.x; - sp64.y = rodata->position.pos.y; - sp64.z = rodata->position.pos.z; + sp64 = rodata->position.pos; mtx4TransformVecInPlace(mtx, &sp64); mtx4SetTranslation(&sp64, &matrices[1]); @@ -9748,9 +9656,7 @@ void autogunInitMatrices(struct prop *prop, Mtxf *mtx) rodata = modelGetPartRodata(model->filedata, MODELPART_AUTOGUN_0001); - sp4c.x = rodata->position.pos.x; - sp4c.y = rodata->position.pos.y; - sp4c.z = rodata->position.pos.z; + sp4c = rodata->position.pos; mtx4TransformVecInPlace(mtx, &sp4c); mtx4LoadYRotation(yrot, &matrices[1]); @@ -9869,9 +9775,7 @@ void autogunTickShoot(struct prop *autogunprop) sp108 = model0001a5cc(model, flashnode, 0); rodata = flashnode->rodata; - gunpos.x = rodata->chrgunfire.pos.x; - gunpos.y = rodata->chrgunfire.pos.y; - gunpos.z = rodata->chrgunfire.pos.z; + gunpos = rodata->chrgunfire.pos; } else { sp108 = model0001a5cc(model, posnode, 0); @@ -9884,16 +9788,12 @@ void autogunTickShoot(struct prop *autogunprop) mtx4TransformVecInPlace(&spc8, &gunpos); if (cdTestLos10(&autogunprop->pos, autogunprop->rooms, &gunpos, gunrooms, CDTYPE_BG, GEOFLAG_BLOCK_SHOOT) == CDRESULT_COLLISION) { - gunpos.x = autogunprop->pos.x; - gunpos.y = autogunprop->pos.y; - gunpos.z = autogunprop->pos.z; + gunpos = autogunprop->pos; roomsCopy(autogunprop->rooms, gunrooms); } } else { - gunpos.x = autogunprop->pos.x; - gunpos.y = autogunprop->pos.y; - gunpos.z = autogunprop->pos.z; + gunpos = autogunprop->pos; roomsCopy(autogunprop->rooms, gunrooms); } @@ -10052,9 +9952,7 @@ void autogunTickShoot(struct prop *autogunprop) autogun->shotbondsum += increment; if (autogun->shotbondsum >= 1.0f) { - hitpos.x = targetprop->pos.x; - hitpos.y = targetprop->pos.y; - hitpos.z = targetprop->pos.z; + hitpos = targetprop->pos; missed = false; @@ -10111,9 +10009,7 @@ void autogunTickShoot(struct prop *autogunprop) distance = sqrtf(sum); if (distance > 0.0f) { - beam->from.x = gunpos.x; - beam->from.y = gunpos.y; - beam->from.z = gunpos.z; + beam->from = gunpos; beam->dir.x = dist.f[0]; beam->dir.y = dist.f[1]; @@ -10748,9 +10644,7 @@ void chopperIncrementMovement(struct prop *prop, f32 goalroty, f32 goalrotx, str func0f065e74(&prop->pos, prop->rooms, &newpos, newrooms); - prop->pos.x = newpos.x; - prop->pos.y = newpos.y; - prop->pos.z = newpos.z; + prop->pos = newpos; propDeregisterRooms(prop); roomsCopy(newrooms, prop->rooms); @@ -10908,9 +10802,7 @@ void chopperTickFall(struct prop *chopperprop) func0f065e74(&chopperprop->pos, chopperprop->rooms, &newpos, newrooms); - chopperprop->pos.x = newpos.x; - chopperprop->pos.y = newpos.y; - chopperprop->pos.z = newpos.z; + chopperprop->pos = newpos; propDeregisterRooms(chopperprop); roomsCopy(newrooms, chopperprop->rooms); @@ -11058,9 +10950,7 @@ void chopperTickCombat(struct prop *chopperprop) // Stay put osSyncPrintf("HC: %x - visible\n", chopper); - goalpos.x = chopperprop->pos.x; - goalpos.y = chopperprop->pos.y; - goalpos.z = chopperprop->pos.z; + goalpos = chopperprop->pos; } else { f20 = 2.6843546e8f; @@ -11076,16 +10966,12 @@ void chopperTickCombat(struct prop *chopperprop) if (f0 < f20) { f20 = f0; sp90 = i; - goalpos.x = sp78.x; - goalpos.y = sp78.y; - goalpos.z = sp78.z; + goalpos = sp78; } if ((chopper->cw ? i : (i + 1) % chopper->path->len) == chopper->nextstep) { sp8c = i; - sp6c.x = sp78.x; - sp6c.y = sp78.y; - sp6c.z = sp78.z; + sp6c = sp78; } } @@ -11119,13 +11005,9 @@ void chopperTickCombat(struct prop *chopperprop) padpos.y += -250.0f; } - goalpos.x = padpos.x; - goalpos.y = padpos.y; - goalpos.z = padpos.z; + goalpos = padpos; } else { - goalpos.x = sp6c.x; - goalpos.y = sp6c.y; - goalpos.z = sp6c.z; + goalpos = sp6c; } } else if (cdTestLos03(&targetprop->pos, targetprop->rooms, &goalpos, CDTYPE_OBJS | CDTYPE_DOORS | CDTYPE_PATHBLOCKER | CDTYPE_BG | CDTYPE_AIOPAQUE, GEOFLAG_BLOCK_SHOOT) == 0) { padpos = g_Pads[chopper->path->pads[chopper->cw ? (sp8c + 1) % chopper->path->len : sp8c]].pos; @@ -11269,9 +11151,7 @@ void hovercarTick(struct prop *prop) func0f065e74(&prop->pos, prop->rooms, &sp1c0, sp1b0); - prop->pos.x = sp1c0.x; - prop->pos.y = sp1c0.y; - prop->pos.z = sp1c0.z; + prop->pos = sp1c0; propDeregisterRooms(prop); roomsCopy(sp1b0, prop->rooms); @@ -11470,9 +11350,7 @@ void hovercarTick(struct prop *prop) #endif } - prop->pos.x = sp150.x; - prop->pos.y = sp150.y; - prop->pos.z = sp150.z; + prop->pos = sp150; propDeregisterRooms(prop); roomsCopy(sp140, prop->rooms); @@ -11883,9 +11761,7 @@ s32 objTickPlayer(struct prop *prop) func0f065e74(&prop->pos, prop->rooms, &sp400, sp384); } - prop->pos.x = sp400.x; - prop->pos.y = sp400.y; - prop->pos.z = sp400.z; + prop->pos = sp400; propDeregisterRooms(prop); roomsCopy(sp384, prop->rooms); @@ -14945,9 +14821,7 @@ void objBounce(struct defaultobj *obj, struct coord *arg1) projectile->flags |= PROJECTILEFLAG_AIRBORNE; - dir.x = arg1->x; - dir.y = arg1->y; - dir.z = arg1->z; + dir = *arg1; mtx4RotateVecInPlace(camGetProjectionMtxF(), &dir); @@ -15005,9 +14879,7 @@ void objApplyMomentum(struct defaultobj *obj, struct coord *speed, f32 rotation, projectile->speed.y += speed->y; projectile->speed.z += speed->z; } else { - projectile->speed.x = speed->x; - projectile->speed.y = speed->y; - projectile->speed.z = speed->z; + projectile->speed = *speed; } if (addrotation) { @@ -15647,15 +15519,11 @@ bool func0f084594(struct model *model, struct modelnode *node, struct coord *arg mtxindex = model0001a524(node, 0); mtx000172f0(model->matrices[mtxindex].m, mtx.m); - spb8.x = arg2->x; - spb8.y = arg2->y; - spb8.z = arg2->z; + spb8 = *arg2; mtx4TransformVecInPlace(&mtx, &spb8); - spac.x = arg3->x; - spac.y = arg3->y; - spac.z = arg3->z; + spac = *arg3; mtx4RotateVecInPlace(&mtx, &spac); @@ -15841,15 +15709,11 @@ bool func0f0849dc(struct model *model, struct modelnode *nodearg, struct coord * mtx000172f0(mtx->m, sp64.m); - spec.x = arg2->x; - spec.y = arg2->y; - spec.z = arg2->z; + spec = *arg2; mtx4TransformVecInPlace(&sp64, &spec); - spd4.x = arg3->x; - spd4.y = arg3->y; - spd4.z = arg3->z; + spd4 = *arg3; mtx4RotateVecInPlace(&sp64, &spd4); @@ -16684,9 +16548,7 @@ void objHit(struct shotdata *shotdata, struct hit *hit) mtx4MultMtx4(camGetProjectionMtxF(), &obj->model->matrices[hit->mtxindex], &sp58); mtx4TransformVec(&sp58, &hit->hitthing.unk00, &spa4); - pushdir.x = shotdata->dir.x; - pushdir.y = shotdata->dir.y; - pushdir.z = shotdata->dir.z; + pushdir = shotdata->dir; func0f082e84(obj, &spa4, &pushdir, &spb0, true); } else { @@ -20136,14 +19998,10 @@ struct prop *doorInit(struct doorobj *door, struct coord *pos, Mtxf *mtx, s16 *r door->mode = DOORMODE_IDLE; door->glasshits = 0; door->portalnum = -1; - door->startpos.x = centre->x; - door->startpos.y = centre->y; - door->startpos.z = centre->z; + door->startpos = *centre; if (door->doorflags & DOORFLAG_0080) { - door->unk98.x = coord->x; - door->unk98.y = coord->y; - door->unk98.z = coord->z; + door->unk98 = *coord; if (door->doorflags & DOORFLAG_0004) { struct modelnode *node = func0f0687e4(door->base.model); @@ -20160,9 +20018,7 @@ struct prop *doorInit(struct doorobj *door, struct coord *pos, Mtxf *mtx, s16 *r prop->type = PROPTYPE_DOOR; prop->door = door; - prop->pos.x = centre->x; - prop->pos.y = centre->y; - prop->pos.z = centre->z; + prop->pos = *centre; propDeregisterRooms(prop); roomsCopy(sp28, prop->rooms); @@ -21523,9 +21379,7 @@ void gasReleaseFromPos(struct coord *pos) g_GasReleasing = true; g_GasSoundTimer240 = 0; - g_GasPos.x = pos->x; - g_GasPos.y = pos->y; - g_GasPos.z = pos->z; + g_GasPos = *pos; // Gas objects don't exist in PD, so this stage number was likely carried // over from GoldenEye. It maps to GE's Egypt stage, which uses gas for a @@ -21924,9 +21778,7 @@ void projectileCreate(struct prop *fromprop, struct fireslotthing *arg1, struct u8 drug = false; u32 stack3; - frompos.x = pos->x; - frompos.y = pos->y; - frompos.z = pos->z; + frompos = *pos; if (weaponnum == WEAPON_TRANQUILIZER) { forcebeam = true; @@ -22067,9 +21919,7 @@ void projectileCreate(struct prop *fromprop, struct fireslotthing *arg1, struct if (arg1->unk14 >= 1.0f) { blocked = false; - endpos.x = targetprop->pos.x; - endpos.y = targetprop->pos.y; - endpos.z = targetprop->pos.z; + endpos = targetprop->pos; if (random() % 2) { endpos.y += (random() % 10) + 2; diff --git a/src/game/propsnd.c b/src/game/propsnd.c index 753aef2e3..311d243ae 100644 --- a/src/game/propsnd.c +++ b/src/game/propsnd.c @@ -4054,9 +4054,7 @@ s16 propsnd0f0939f8( #endif if (pos) { - channel->pos.x = pos->x; - channel->pos.y = pos->y; - channel->pos.z = pos->z; + channel->pos = *pos; channel->posptr = &channel->pos; } else { channel->posptr = NULL; diff --git a/src/game/room.c b/src/game/room.c index 63166ab33..73cad01aa 100644 --- a/src/game/room.c +++ b/src/game/room.c @@ -134,7 +134,5 @@ struct coord *roomGetPos(s32 room) void room0f166df0(s32 room, struct coord *globaldrawworldoffset) { - globaldrawworldoffset->x = g_BgRooms[room].pos.x; - globaldrawworldoffset->y = g_BgRooms[room].pos.y; - globaldrawworldoffset->z = g_BgRooms[room].pos.z; + *globaldrawworldoffset = g_BgRooms[room].pos; } diff --git a/src/game/setup.c b/src/game/setup.c index c5d1ac014..29e7f48d4 100644 --- a/src/game/setup.c +++ b/src/game/setup.c @@ -448,22 +448,16 @@ void setupCreateObject(struct defaultobj *obj, s32 cmdindex) if (pad->room > 0) { mtx00016d58(&mtx, 0, 0, 0, -pad->look.x, -pad->look.y, -pad->look.z, pad->up.x, pad->up.y, pad->up.z); - pos.x = pad->pos.x; - pos.y = pad->pos.y; - pos.z = pad->pos.z; + pos = pad->pos; rooms[0] = pad->room; rooms[1] = -1; if (!padHasBboxData(obj->pad)) { if (obj->flags & OBJFLAG_00000002) { - centre.x = pad->pos.x; - centre.y = pad->pos.y; - centre.z = pad->pos.z; + centre = pad->pos; } else { - centre.x = pad->pos.x; - centre.y = pad->pos.y; - centre.z = pad->pos.z; + centre = pad->pos; } } else { padGetCentre(obj->pad, ¢re); @@ -806,9 +800,7 @@ void setupCreateCctv(struct cctvobj *cctv, s32 cmdindex) pad = &g_Pads[cctv->lookatpadnum]; - lenspos.x = lens->position.pos.x; - lenspos.y = lens->position.pos.y; - lenspos.z = lens->position.pos.z; + lenspos = lens->position.pos; mtx00016208(obj->realrot, &lenspos); @@ -1120,9 +1112,7 @@ void setupCreateDoor(struct doorobj *door, s32 cmdindex) mtx00015e80(yscale, &finalmtx); mtx00015edc(zscale, &finalmtx); - pos.x = pad->pos.x; - pos.y = pad->pos.y; - pos.z = pad->pos.z; + pos = pad->pos; rooms[0] = pad->room; rooms[1] = -1; @@ -1679,9 +1669,7 @@ void setupCreateProps(s32 stagenum) prop = obj->prop; if (prop) { - lift->prevpos.x = prop->pos.x; - lift->prevpos.y = prop->pos.y; - lift->prevpos.z = prop->pos.z; + lift->prevpos = prop->pos; liftUpdateTiles(lift, true); } @@ -1756,9 +1744,7 @@ void setupCreateProps(s32 stagenum) prop = obj->prop; if (prop) { - step->prevpos.x = prop->pos.x; - step->prevpos.y = prop->pos.y; - step->prevpos.z = prop->pos.z; + step->prevpos = prop->pos; } if (obj->flags & OBJFLAG_ESCSTEP_ZALIGNED) { diff --git a/src/game/shards.c b/src/game/shards.c index 6b3f0c270..a00de66b1 100644 --- a/src/game/shards.c +++ b/src/game/shards.c @@ -122,9 +122,7 @@ void shardCreate(s16 room, struct coord *pos, f32 rotx, f32 size, s32 type) g_Shards[g_NextShardNum].room = room; g_Shards[g_NextShardNum].age60 = 1; - g_Shards[g_NextShardNum].pos.x = pos->x; - g_Shards[g_NextShardNum].pos.y = pos->y; - g_Shards[g_NextShardNum].pos.z = pos->z; + g_Shards[g_NextShardNum].pos = *pos; g_Shards[g_NextShardNum].vel.x = velx * PALUPF(1.5f); g_Shards[g_NextShardNum].vel.y = vely * PALUPF(3.0f); diff --git a/src/game/sky.c b/src/game/sky.c index e1a6e7446..4a7750f97 100644 --- a/src/game/sky.c +++ b/src/game/sky.c @@ -2823,15 +2823,9 @@ Gfx *sky0f126de8(Gfx *gdl) pad = &g_Pads[g_Vars.currentplayer->teleportpad]; - g_TeleportToPos.x = pad->pos.x; - g_TeleportToPos.y = pad->pos.y; - g_TeleportToPos.z = pad->pos.z; - g_TeleportToLook.x = pad->look.x; - g_TeleportToLook.y = pad->look.y; - g_TeleportToLook.z = pad->look.z; - g_TeleportToUp.x = pad->up.x; - g_TeleportToUp.y = pad->up.y; - g_TeleportToUp.z = pad->up.z; + g_TeleportToPos = pad->pos; + g_TeleportToLook = pad->look; + g_TeleportToUp = pad->up; f22 = -cosf(f22 * M_PI) * 0.5f + .5f; f24 = 100 * f22; diff --git a/src/game/smoke.c b/src/game/smoke.c index b077040b3..934114165 100644 --- a/src/game/smoke.c +++ b/src/game/smoke.c @@ -304,9 +304,7 @@ struct smoke *smokeCreate(struct coord *pos, s16 *rooms, s16 type) if (prop) { prop->type = PROPTYPE_SMOKE; prop->smoke = smoke; - prop->pos.x = pos->x; - prop->pos.y = pos->y; - prop->pos.z = pos->z; + prop->pos = *pos; for (i = 0; rooms[i] != -1 && i < 7; i++) { prop->rooms[i] = rooms[i]; @@ -505,17 +503,11 @@ u32 smokeTick(struct prop *prop) part->deltarot = (0.5f - RANDOMFRAC()) * g_SmokeTypes[smoke->type].bgrotatespeed; if (smoke->type >= SMOKETYPE_MUZZLE_PISTOL && smoke->type <= SMOKETYPE_MUZZLE_SHOTGUN) { - part->pos.x = g_Vars.currentplayer->hands[smoke->option].muzzlepos.x; - part->pos.y = g_Vars.currentplayer->hands[smoke->option].muzzlepos.y; - part->pos.z = g_Vars.currentplayer->hands[smoke->option].muzzlepos.z; + part->pos = g_Vars.currentplayer->hands[smoke->option].muzzlepos; } else if (smoke->sourceprop && smoke->option == 0) { - part->pos.x = smoke->sourceprop->pos.x; - part->pos.y = smoke->sourceprop->pos.y; - part->pos.z = smoke->sourceprop->pos.z; + part->pos = smoke->sourceprop->pos; } else { - part->pos.x = prop->pos.x; - part->pos.y = prop->pos.y; - part->pos.z = prop->pos.z; + part->pos = prop->pos; } if (smoke->type == SMOKETYPE_WATER) { diff --git a/src/game/sparks.c b/src/game/sparks.c index 603b9ad09..6fa0f51d5 100644 --- a/src/game/sparks.c +++ b/src/game/sparks.c @@ -264,9 +264,7 @@ void sparksCreate(s32 room, struct prop *prop, struct coord *pos, struct coord * group->age = 1; group->startindex = g_NextSparkIndex; group->numsparks = type->numsparks; - group->pos.x = pos->x; - group->pos.y = pos->y; - group->pos.z = pos->z; + group->pos = *pos; group->room = room; group->prop = prop; diff --git a/src/game/splat.c b/src/game/splat.c index ac003398e..271a3d01f 100644 --- a/src/game/splat.c +++ b/src/game/splat.c @@ -224,9 +224,7 @@ s32 splatsCreate(s32 qty, f32 arg1, struct prop *prop, struct shotdata *shotdata struct chrdata *chr = prop->chr; chr->tickssincesplat = 0; - chr->lastdroppos.x = prop->pos.x; - chr->lastdroppos.y = prop->pos.y; - chr->lastdroppos.z = prop->pos.z; + chr->lastdroppos = prop->pos; } return numdropped; @@ -286,9 +284,7 @@ bool splat0f149274(f32 arg0, struct prop *chrprop, struct shotdata *shotdata, f3 bestroom = rooms[i]; besthitthing = hitthing; - endpos.x = hitthing.unk00.x; - endpos.y = hitthing.unk00.y; - endpos.z = hitthing.unk00.z; + endpos = hitthing.unk00; hasresult = true; break; diff --git a/src/game/training.c b/src/game/training.c index 5435d4ccd..092846837 100644 --- a/src/game/training.c +++ b/src/game/training.c @@ -521,9 +521,7 @@ void frInitDefaults(void) g_FrData.speed = 1; for (i = 0; i < ARRAYCOUNT(g_FrData.targets); i++) { - g_FrData.targets[i].dstpos.x = pad->pos.x; - g_FrData.targets[i].dstpos.y = pad->pos.y; - g_FrData.targets[i].dstpos.z = pad->pos.z; + g_FrData.targets[i].dstpos = pad->pos; #if VERSION >= VERSION_NTSC_1_0 g_FrData.targets[i].dstpos.z += 6.0f * i; @@ -878,9 +876,7 @@ bool frExecuteTargetScript(s32 targetnum) g_FrData.targets[targetnum].frpadnum = frpadnum; - g_FrData.targets[targetnum].dstpos.x = g_Pads[g_FrPads[frpadnum]].pos.x; - g_FrData.targets[targetnum].dstpos.y = g_Pads[g_FrPads[frpadnum]].pos.y; - g_FrData.targets[targetnum].dstpos.z = g_Pads[g_FrPads[frpadnum]].pos.z; + g_FrData.targets[targetnum].dstpos = g_Pads[g_FrPads[frpadnum]].pos; #if VERSION >= VERSION_NTSC_1_0 g_FrData.targets[targetnum].dstpos.z += 6.0f * targetnum; @@ -997,9 +993,7 @@ void frInitTargets(void) frExecuteTargetScript(i); if (g_FrData.targets[i].travelspeed == -1) { - pos.x = g_FrData.targets[i].dstpos.x; - pos.y = g_FrData.targets[i].dstpos.y; - pos.z = g_FrData.targets[i].dstpos.z; + pos = g_FrData.targets[i].dstpos; } count++; @@ -1024,9 +1018,7 @@ void frInitTargets(void) mtx4ToMtx3(&sp144, sp108); mtx3Copy(sp108, obj->realrot); - prop->pos.x = pos.x; - prop->pos.y = pos.y; - prop->pos.z = pos.z; + prop->pos = pos; func0f069c70(obj, true, false); } @@ -2026,9 +2018,7 @@ void frTick(void) #endif { // Target is stopping - newpos.x = g_FrData.targets[i].dstpos.x; - newpos.y = g_FrData.targets[i].dstpos.y; - newpos.z = g_FrData.targets[i].dstpos.z; + newpos = g_FrData.targets[i].dstpos; g_FrData.targets[i].scriptenabled = true; g_FrData.targets[i].travelling = false; @@ -2048,9 +2038,7 @@ void frTick(void) } } - prop->pos.x = newpos.x; - prop->pos.y = newpos.y; - prop->pos.z = newpos.z; + prop->pos = newpos; func0f069c70(obj, true, false); } diff --git a/src/game/utils.c b/src/game/utils.c index 6213b6e28..6081039e2 100644 --- a/src/game/utils.c +++ b/src/game/utils.c @@ -163,9 +163,7 @@ void func0f1770ac(struct coord *a, struct coord *b, struct coord *out) void func0f177120(struct coord *in, struct coord *out) { - out->x = in->x; - out->y = in->y; - out->z = in->z; + *out = *in; } void func0f17713c(struct coord *in, struct coord *out) @@ -181,9 +179,7 @@ bool func0f177164(struct coord *arg0, struct coord *arg1, u32 line, char *file) f32 mult; if (sqdist < var800845d4) { - arg0->x = var800845f4.x; - arg0->y = var800845f4.y; - arg0->z = var800845f4.z; + *arg0 = var800845f4; return false; } diff --git a/src/game/wallhit.c b/src/game/wallhit.c index d69230720..61835bab6 100644 --- a/src/game/wallhit.c +++ b/src/game/wallhit.c @@ -1309,9 +1309,7 @@ void wallhitCreateWith20Args(struct coord *relpos, struct coord *arg1, struct co u32 range; struct coord sp100; - sp1b8.x = arg1->x; - sp1b8.y = arg1->y; - sp1b8.z = arg1->z; + sp1b8 = *arg1; #if VERSION >= VERSION_NTSC_1_0 func0f177164(&sp1b8, &sp1b8, 956, "wallhit.c"); @@ -1507,13 +1505,9 @@ void wallhitCreateWith20Args(struct coord *relpos, struct coord *arg1, struct co func0f1770ac(&sp13c, &sp118, &sp100); - sp1f4.x = sp13c.x; - sp1f4.y = sp13c.y; - sp1f4.z = sp13c.z; + sp1f4 = sp13c; - sp1e8.x = sp118.x; - sp1e8.y = sp118.y; - sp1e8.z = sp118.z; + sp1e8 = sp118; } else { f32 f0 = sqrtf(sp1b8.x * sp1b8.x + sp1b8.z * sp1b8.z); f32 xvalue = sp1b8.x / f0; @@ -1545,13 +1539,9 @@ void wallhitCreateWith20Args(struct coord *relpos, struct coord *arg1, struct co sp1d0.y = -spd0 * sp1f4.y + spcc * sp1e8.y; sp1d0.z = -spd0 * sp1f4.z + spcc * sp1e8.z; } else { - sp1dc.x = sp1f4.x; - sp1dc.y = sp1f4.y; - sp1dc.z = sp1f4.z; + sp1dc = sp1f4; - sp1d0.x = sp1e8.x; - sp1d0.y = sp1e8.y; - sp1d0.z = sp1e8.z; + sp1d0 = sp1e8; } if (objprop) { @@ -1567,13 +1557,9 @@ void wallhitCreateWith20Args(struct coord *relpos, struct coord *arg1, struct co sp1d0.z = -1.0f * sp1d0.z; } - sp84.x = sp1dc.x; - sp84.y = sp1dc.y; - sp84.z = sp1dc.z; + sp84 = sp1dc; - sp78.x = sp1d0.x; - sp78.y = sp1d0.y; - sp78.z = sp1d0.z; + sp78 = sp1d0; mtx4RotateVecInPlace(mtx, &sp84); mtx4RotateVecInPlace(mtx, &sp78); @@ -1638,9 +1624,7 @@ void wallhitCreateWith20Args(struct coord *relpos, struct coord *arg1, struct co sp17c[3].y = sp1d0.y - sp1dc.y; \ sp17c[3].z = sp1d0.z - sp1dc.z; - wallhit->relpos.x = relpos->x; - wallhit->relpos.y = relpos->y; - wallhit->relpos.z = relpos->z; + wallhit->relpos = *relpos; wallhit->mtxindex = mtxindex; wallhit->unk6f_01 = arg10; diff --git a/src/lib/collision.c b/src/lib/collision.c index af14113ae..42ca4c0a5 100644 --- a/src/lib/collision.c +++ b/src/lib/collision.c @@ -59,13 +59,9 @@ f32 cd00024e40(void) void cdGetEdge(struct coord *vtx1, struct coord *vtx2, u32 line, char *file) { - vtx1->x = g_CdEdgeVtx1.x; - vtx1->y = g_CdEdgeVtx1.y; - vtx1->z = g_CdEdgeVtx1.z; + *vtx1 = g_CdEdgeVtx1; - vtx2->x = g_CdEdgeVtx2.x; - vtx2->y = g_CdEdgeVtx2.y; - vtx2->z = g_CdEdgeVtx2.z; + *vtx2 = g_CdEdgeVtx2; } f32 cd00024e98(void) @@ -85,9 +81,7 @@ struct prop *cdGetObstacleProp(void) void cdGetPos(struct coord *pos, u32 line, char *file) { - pos->x = g_CdObstaclePos.x; - pos->y = g_CdObstaclePos.y; - pos->z = g_CdObstaclePos.z; + *pos = g_CdObstaclePos; } void cdGetObstacleNormal(struct coord *normal) @@ -131,13 +125,9 @@ void cdClearResults(void) void cdSetObstacleVtxProp(struct coord *vtx1, struct coord *vtx2, struct prop *prop) { - g_CdEdgeVtx1.x = vtx1->x; - g_CdEdgeVtx1.y = vtx1->y; - g_CdEdgeVtx1.z = vtx1->z; + g_CdEdgeVtx1 = *vtx1; - g_CdEdgeVtx2.x = vtx2->x; - g_CdEdgeVtx2.y = vtx2->y; - g_CdEdgeVtx2.z = vtx2->z; + g_CdEdgeVtx2 = *vtx2; var8009a8b4 = 1; var8009a8ac = 0; @@ -153,13 +143,9 @@ void cdSetObstacleVtxPropFlt(struct coord *vtx1, struct coord *vtx2, struct prop { var8009a8b0 = arg3; - g_CdEdgeVtx1.x = vtx1->x; - g_CdEdgeVtx1.y = vtx1->y; - g_CdEdgeVtx1.z = vtx1->z; + g_CdEdgeVtx1 = *vtx1; - g_CdEdgeVtx2.x = vtx2->x; - g_CdEdgeVtx2.y = vtx2->y; - g_CdEdgeVtx2.z = vtx2->z; + g_CdEdgeVtx2 = *vtx2; var8009a8b4 = 1; var8009a8ac = 1; @@ -209,17 +195,11 @@ void cdSetObstacleProp(struct prop *prop) void cdSetObstacleVtxColProp(struct coord *vtxpos1, struct coord *vtxpos2, struct coord *collisionpos, struct prop *prop) { - g_CdEdgeVtx1.x = vtxpos1->x; - g_CdEdgeVtx1.y = vtxpos1->y; - g_CdEdgeVtx1.z = vtxpos1->z; + g_CdEdgeVtx1 = *vtxpos1; - g_CdEdgeVtx2.x = vtxpos2->x; - g_CdEdgeVtx2.y = vtxpos2->y; - g_CdEdgeVtx2.z = vtxpos2->z; + g_CdEdgeVtx2 = *vtxpos2; - g_CdObstaclePos.x = collisionpos->x; - g_CdObstaclePos.y = collisionpos->y; - g_CdObstaclePos.z = collisionpos->z; + g_CdObstaclePos = *collisionpos; var8009a8b4 = 1; var8009a8ac = 0; @@ -233,17 +213,11 @@ void cdSetObstacleVtxColProp(struct coord *vtxpos1, struct coord *vtxpos2, struc void cdSetObstacleVtxColPropFltGeo(struct coord *vtxpos1, struct coord *vtxpos2, struct coord *collisionpos, struct prop *prop, f32 arg4, struct geo *geo) { - g_CdEdgeVtx1.x = vtxpos1->x; - g_CdEdgeVtx1.y = vtxpos1->y; - g_CdEdgeVtx1.z = vtxpos1->z; + g_CdEdgeVtx1 = *vtxpos1; - g_CdEdgeVtx2.x = vtxpos2->x; - g_CdEdgeVtx2.y = vtxpos2->y; - g_CdEdgeVtx2.z = vtxpos2->z; + g_CdEdgeVtx2 = *vtxpos2; - g_CdObstaclePos.x = collisionpos->x; - g_CdObstaclePos.y = collisionpos->y; - g_CdObstaclePos.z = collisionpos->z; + g_CdObstaclePos = *collisionpos; var8009a8b4 = 1; var8009a8ac = 0; @@ -259,13 +233,9 @@ void cdSetObstacleVtxColPropFltGeo(struct coord *vtxpos1, struct coord *vtxpos2, void cdSetSavedPos(struct coord *pos1, struct coord *pos2) { - g_CdPos1.x = pos1->x; - g_CdPos1.y = pos1->y; - g_CdPos1.z = pos1->z; + g_CdPos1 = *pos1; - g_CdPos2.x = pos2->x; - g_CdPos2.y = pos2->y; - g_CdPos2.z = pos2->z; + g_CdPos2 = *pos2; g_CdHasSavedPos = true; } @@ -273,13 +243,9 @@ void cdSetSavedPos(struct coord *pos1, struct coord *pos2) bool cdGetSavedPos(struct coord *pos1, struct coord *pos2) { if (g_CdHasSavedPos) { - pos1->x = g_CdPos1.x; - pos1->y = g_CdPos1.y; - pos1->z = g_CdPos1.z; + *pos1 = g_CdPos1; - pos2->x = g_CdPos2.x; - pos2->y = g_CdPos2.y; - pos2->z = g_CdPos2.z; + *pos2 = g_CdPos2; } return g_CdHasSavedPos; @@ -1771,13 +1737,9 @@ void cd0002901c(struct coord *pos, struct coord *dist, f32 width, struct collisi s32 curr = collisions[bestindex].vertexindex; s32 next = (curr + 1) % tile->header.numvertices; - vtx1.x = tile->vertices[curr].x; - vtx1.y = tile->vertices[curr].y; - vtx1.z = tile->vertices[curr].z; + vtx1 = tile->vertices[curr]; - vtx2.x = tile->vertices[next].x; - vtx2.y = tile->vertices[next].y; - vtx2.z = tile->vertices[next].z; + vtx2 = tile->vertices[next]; } else if (collisions[bestindex].geo->type == GEOTYPE_BLOCK) { struct geoblock *block = (struct geoblock *) collisions[bestindex].geo; s32 curr = collisions[bestindex].vertexindex; @@ -3247,13 +3209,9 @@ s32 cdExamCylMove01(struct coord *pos, struct coord *pos2, f32 radius, s16 *room s32 this = collisions[0].vertexindex; s32 next = (this + 1) % collisions[0].geo->numvertices; - sp70.x = tile->vertices[this].x; - sp70.y = tile->vertices[this].y; - sp70.z = tile->vertices[this].z; + sp70 = tile->vertices[this]; - sp64.x = tile->vertices[next].x; - sp64.y = tile->vertices[next].y; - sp64.z = tile->vertices[next].z; + sp64 = tile->vertices[next]; } else if (collisions[0].geo->type == GEOTYPE_BLOCK) { struct geoblock *block = (struct geoblock *) collisions[0].geo; s32 this = collisions[0].vertexindex; @@ -3408,18 +3366,12 @@ bool cd0002ac70IntTile(struct coord *arg0, struct coord *arg1, struct coord *arg } else if (!result && spb8) { result = true; - arg4->x = arg0->x; - arg4->y = arg0->y; - arg4->z = arg0->z; + *arg4 = *arg0; if (arg5 != NULL && arg6 != NULL) { - arg5->x = arg0->x; - arg5->y = arg0->y; - arg5->z = arg0->z; + *arg5 = *arg0; - arg6->x = arg0->x; - arg6->y = arg0->y; - arg6->z = arg0->z; + *arg6 = *arg0; } } } @@ -3498,18 +3450,12 @@ bool cd0002b128FltTile(struct coord *arg0, struct coord *arg1, struct coord *arg } else if (!result && spb8) { result = true; - arg4->x = arg0->x; - arg4->y = arg0->y; - arg4->z = arg0->z; + *arg4 = *arg0; if (arg5 != NULL && arg6 != NULL) { - arg5->x = arg0->x; - arg5->y = arg0->y; - arg5->z = arg0->z; + *arg5 = *arg0; - arg6->x = arg0->x; - arg6->y = arg0->y; - arg6->z = arg0->z; + *arg6 = *arg0; } } } @@ -3586,18 +3532,12 @@ bool cd0002b560Block(struct coord *arg0, struct coord *arg1, struct coord *arg2, } else if (!result && spb8) { result = true; - arg4->x = arg0->x; - arg4->y = arg0->y; - arg4->z = arg0->z; + *arg4 = *arg0; if (arg5 != NULL && arg6 != NULL) { - arg5->x = arg0->x; - arg5->y = arg0->y; - arg5->z = arg0->z; + *arg5 = *arg0; - arg6->x = arg0->x; - arg6->y = arg0->y; - arg6->z = arg0->z; + *arg6 = *arg0; } } } @@ -3959,9 +3899,7 @@ bool cdExamAToBGeolist(u8 *start, u8 *end, struct coord *arg2, struct coord *arg result = true; *arg10 = sum; - arg11->x = sp12c.x; - arg11->y = sp12c.y; - arg11->z = sp12c.z; + *arg11 = sp12c; cd0002c328IntTile(tile, &sp12c, &sp120, arg12, arg13); @@ -3979,17 +3917,11 @@ bool cdExamAToBGeolist(u8 *start, u8 *end, struct coord *arg2, struct coord *arg result = true; *arg10 = sum; - arg11->x = sp12c.x; - arg11->y = sp12c.y; - arg11->z = sp12c.z; + *arg11 = sp12c; - arg12->x = sp114.x; - arg12->y = sp114.y; - arg12->z = sp114.z; + *arg12 = sp114; - arg13->x = sp108.x; - arg13->y = sp108.y; - arg13->z = sp108.z; + *arg13 = sp108; *geoptr = geo; } @@ -4038,9 +3970,7 @@ bool cdExamAToBGeolist(u8 *start, u8 *end, struct coord *arg2, struct coord *arg result = true; *arg10 = sum; - arg11->x = spe0.x; - arg11->y = spe0.y; - arg11->z = spe0.z; + *arg11 = spe0; cd0002c528FltTile(tile, &spe0, &spd4, arg12, arg13); @@ -4058,17 +3988,11 @@ bool cdExamAToBGeolist(u8 *start, u8 *end, struct coord *arg2, struct coord *arg result = true; *arg10 = sum; - arg11->x = spe0.x; - arg11->y = spe0.y; - arg11->z = spe0.z; + *arg11 = spe0; - arg12->x = spc8.x; - arg12->y = spc8.y; - arg12->z = spc8.z; + *arg12 = spc8; - arg13->x = spbc.x; - arg13->y = spbc.y; - arg13->z = spbc.z; + *arg13 = spbc; *geoptr = geo; } @@ -4094,17 +4018,11 @@ bool cdExamAToBGeolist(u8 *start, u8 *end, struct coord *arg2, struct coord *arg result = true; *arg10 = sum; - arg11->x = spb0.x; - arg11->y = spb0.y; - arg11->z = spb0.z; + *arg11 = spb0; - arg12->x = spa4.x; - arg12->y = spa4.y; - arg12->z = spa4.z; + *arg12 = spa4; - arg13->x = sp98.x; - arg13->y = sp98.y; - arg13->z = sp98.z; + *arg13 = sp98; *geoptr = geo; } @@ -4129,17 +4047,11 @@ bool cdExamAToBGeolist(u8 *start, u8 *end, struct coord *arg2, struct coord *arg result = true; *arg10 = sum; - arg11->x = sp88.x; - arg11->y = sp88.y; - arg11->z = sp88.z; + *arg11 = sp88; - arg12->x = sp7c.x; - arg12->y = sp7c.y; - arg12->z = sp7c.z; + *arg12 = sp7c; - arg13->x = sp70.x; - arg13->y = sp70.y; - arg13->z = sp70.z; + *arg13 = sp70; *geoptr = geo; } diff --git a/src/lib/lib_17ce0.c b/src/lib/lib_17ce0.c index ae58a63fe..21931c472 100644 --- a/src/lib/lib_17ce0.c +++ b/src/lib/lib_17ce0.c @@ -17,9 +17,7 @@ void portalGetAvgVertexPos(s32 portalnum, struct coord *avg) f32 f0; s32 i; - avg->x = pvertices->vertices[0].x; - avg->y = pvertices->vertices[0].y; - avg->z = pvertices->vertices[0].z; + *avg = pvertices->vertices[0]; f0 = 1.0f / pvertices->count; diff --git a/src/lib/model.c b/src/lib/model.c index cf1b06092..9321090fe 100644 --- a/src/lib/model.c +++ b/src/lib/model.c @@ -364,25 +364,19 @@ void modelNodeGetPosition(struct model *model, struct modelnode *node, struct co case MODELNODETYPE_CHRINFO: { struct modelrwdata_chrinfo *rwdata = modelGetNodeRwData(model, node); - pos->x = rwdata->pos.x; - pos->y = rwdata->pos.y; - pos->z = rwdata->pos.z; + *pos = rwdata->pos; } break; case MODELNODETYPE_POSITION: { struct modelrodata_position *rodata = &node->rodata->position; - pos->x = rodata->pos.x; - pos->y = rodata->pos.y; - pos->z = rodata->pos.z; + *pos = rodata->pos; } break; case MODELNODETYPE_POSITIONHELD: { struct modelrodata_positionheld *rodata = &node->rodata->positionheld; - pos->x = rodata->pos.x; - pos->y = rodata->pos.y; - pos->z = rodata->pos.z; + *pos = rodata->pos; } break; default: @@ -404,9 +398,7 @@ void modelNodeSetPosition(struct model *model, struct modelnode *node, struct co diff[0].x = pos->x - rwdata->pos.x; diff[0].z = pos->z - rwdata->pos.z; - rwdata->pos.x = pos->x; - rwdata->pos.y = pos->y; - rwdata->pos.z = pos->z; + rwdata->pos = *pos; rwdata->unk24.x += diff[0].x; rwdata->unk24.z += diff[0].z; rwdata->unk34.x += diff[0].x; rwdata->unk34.z += diff[0].z; @@ -417,17 +409,13 @@ void modelNodeSetPosition(struct model *model, struct modelnode *node, struct co case MODELNODETYPE_POSITION: { struct modelrodata_position *rodata = &node->rodata->position; - rodata->pos.x = pos->x; - rodata->pos.y = pos->y; - rodata->pos.z = pos->z; + rodata->pos = *pos; } break; case MODELNODETYPE_POSITIONHELD: { struct modelrodata_positionheld *rodata = &node->rodata->positionheld; - rodata->pos.x = pos->x; - rodata->pos.y = pos->y; - rodata->pos.z = pos->z; + rodata->pos = *pos; } break; } @@ -576,9 +564,7 @@ void model0001b0e8(struct model *model, struct modelnode *node) return; } - sp34.x = rwdata->chrinfo.unk34.x; - sp34.y = rwdata->chrinfo.unk34.y; - sp34.z = rwdata->chrinfo.unk34.z; + sp34 = rwdata->chrinfo.unk34; rwdata->chrinfo.unk14 = rwdata->chrinfo.unk30; @@ -615,9 +601,7 @@ void model0001b0e8(struct model *model, struct modelnode *node) rwdata->chrinfo.pos.y = rwdata->chrinfo.ground + sp34.f[1]; rwdata->chrinfo.pos.z = sp34.z; } else { - sp28.x = sp34.x; - sp28.y = sp34.y; - sp28.z = sp34.z; + sp28 = sp34; if (anim->unk70(model, &rwdata->chrinfo.pos, &sp28, &rwdata->chrinfo.ground)) { rwdata->chrinfo.pos.x = sp28.x; @@ -1682,12 +1666,8 @@ void modelCopyAnimForMerge(struct model *model, f32 merge) if (nodetype == MODELNODETYPE_CHRINFO) { struct modelrwdata_chrinfo *rwdata = modelGetNodeRwData(model, node); rwdata->unk02 = 1; - rwdata->unk4c.x = rwdata->unk34.x; - rwdata->unk4c.y = rwdata->unk34.y; - rwdata->unk4c.z = rwdata->unk34.z; - rwdata->unk40.x = rwdata->unk24.x; - rwdata->unk40.y = rwdata->unk24.y; - rwdata->unk40.z = rwdata->unk24.z; + rwdata->unk4c = rwdata->unk34; + rwdata->unk40 = rwdata->unk24; } } else { anim->animnum2 = 0; @@ -2114,15 +2094,11 @@ void model0001e2b4(struct model *model, f32 curframe, f32 endframe, f32 curframe struct coord sp90; u32 stack; - spe0.x = rwdata->unk34.x; - spe0.y = rwdata->unk34.y; - spe0.z = rwdata->unk34.z; + spe0 = rwdata->unk34; f30 = rwdata->unk30; - spd0.x = rwdata->unk24.x; - spd0.y = rwdata->unk24.y; - spd0.z = rwdata->unk24.z; + spd0 = rwdata->unk24; spcc = rwdata->unk20; spc8 = rwdata->unk01; @@ -2162,9 +2138,7 @@ void model0001e2b4(struct model *model, f32 curframe, f32 endframe, f32 curframe anim->framea = s0frame; if (spc8 && floorend == anim->frameb) { - spe0.x = spd0.x; - spe0.y = spd0.y; - spe0.z = spd0.z; + spe0 = spd0; } else { anim00023d38(anim->animnum); s0 = anim00023ab0(anim->animnum, s0frame); @@ -2216,9 +2190,7 @@ void model0001e2b4(struct model *model, f32 curframe, f32 endframe, f32 curframe anim->framea = s0frame; if (spc8) { - spe0.x = spd0.x; - spe0.y = spd0.y; - spe0.z = spd0.z; + spe0 = spd0; if (rwdata->unk18 == 0.0f) { f30 = spcc; @@ -2360,9 +2332,7 @@ void model0001e2b4(struct model *model, f32 curframe, f32 endframe, f32 curframe } } - rwdata->unk34.x = spe0.x; - rwdata->unk34.y = spe0.y; - rwdata->unk34.z = spe0.z; + rwdata->unk34 = spe0; rwdata->unk30 = f30;