Skip to content

Commit

Permalink
Rename a lot of actor movement-related functions from decomp
Browse files Browse the repository at this point in the history
  • Loading branch information
JordanLongstaff committed Dec 13, 2024
1 parent 1a5632e commit c6cf4e3
Show file tree
Hide file tree
Showing 203 changed files with 355 additions and 355 deletions.
14 changes: 7 additions & 7 deletions soh/include/functions.h
Original file line number Diff line number Diff line change
Expand Up @@ -398,12 +398,12 @@ void Actor_Kill(Actor* actor);
void Actor_SetFocus(Actor* actor, f32 offset);
void Actor_SetScale(Actor* actor, f32 scale);
void Actor_SetObjectDependency(PlayState* play, Actor* actor);
void func_8002D7EC(Actor* actor);
void func_8002D868(Actor* actor);
void Actor_MoveForward(Actor* actor);
void func_8002D908(Actor* actor);
void func_8002D97C(Actor* actor);
void func_8002D9A4(Actor* actor, f32 arg1);
void Actor_UpdatePos(Actor* actor);
void Actor_UpdateVelocityXZGravity(Actor* actor);
void Actor_MoveXZGravity(Actor* actor);
void Actor_UpdateVelocityXYZ(Actor* actor);
void Actor_MoveXYZ(Actor* actor);
void Actor_SetProjectileSpeed(Actor* actor, f32 arg1);
s16 Actor_WorldYawTowardActor(Actor* actorA, Actor* actorB);
s16 Actor_WorldYawTowardPoint(Actor* actor, Vec3f* refPoint);
f32 Actor_WorldDistXYZToActor(Actor* actorA, Actor* actorB);
Expand All @@ -412,7 +412,7 @@ s16 Actor_WorldPitchTowardActor(Actor* actorA, Actor* actorB);
s16 Actor_WorldPitchTowardPoint(Actor* actor, Vec3f* refPoint);
f32 Actor_WorldDistXZToActor(Actor* actorA, Actor* actorB);
f32 Actor_WorldDistXZToPoint(Actor* actor, Vec3f* refPoint);
void func_8002DBD0(Actor* actor, Vec3f* result, Vec3f* arg2);
void Actor_WorldToActorCoords(Actor* actor, Vec3f* result, Vec3f* arg2);
f32 Actor_HeightDiff(Actor* actorA, Actor* actorB);
f32 Player_GetHeight(Player* player);
s32 Player_ActionHandler_2(Player* player, PlayState* play);
Expand Down
2 changes: 1 addition & 1 deletion soh/soh/Enhancements/randomizer/hook_handlers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -475,7 +475,7 @@ void ItemEtcetera_func_80B85824_Randomized(ItemEtcetera* itemEtcetera, PlayState

void ItemEtcetera_MoveRandomizedFireArrowDown(ItemEtcetera* itemEtcetera, PlayState* play) {
Actor_UpdateBgCheckInfo(play, &itemEtcetera->actor, 10.0f, 10.0f, 0.0f, 5);
Actor_MoveForward(&itemEtcetera->actor);
Actor_MoveXZGravity(&itemEtcetera->actor);
if (!(itemEtcetera->actor.bgCheckFlags & 1)) {
ItemEtcetera_SpawnSparkles(itemEtcetera, play);
}
Expand Down
44 changes: 22 additions & 22 deletions soh/src/code/z_actor.c
Original file line number Diff line number Diff line change
Expand Up @@ -1255,15 +1255,15 @@ void Actor_Destroy(Actor* actor, PlayState* play) {
NameTag_RemoveAllForActor(actor);
}

void func_8002D7EC(Actor* actor) {
void Actor_UpdatePos(Actor* actor) {
f32 speedRate = R_UPDATE_RATE * 0.5f;

actor->world.pos.x += (actor->velocity.x * speedRate) + actor->colChkInfo.displacement.x;
actor->world.pos.y += (actor->velocity.y * speedRate) + actor->colChkInfo.displacement.y;
actor->world.pos.z += (actor->velocity.z * speedRate) + actor->colChkInfo.displacement.z;
}

void func_8002D868(Actor* actor) {
void Actor_UpdateVelocityXZGravity(Actor* actor) {
actor->velocity.x = Math_SinS(actor->world.rot.y) * actor->speedXZ;
actor->velocity.z = Math_CosS(actor->world.rot.y) * actor->speedXZ;

Expand All @@ -1273,30 +1273,30 @@ void func_8002D868(Actor* actor) {
}
}

void Actor_MoveForward(Actor* actor) {
func_8002D868(actor);
func_8002D7EC(actor);
void Actor_MoveXZGravity(Actor* actor) {
Actor_UpdateVelocityXZGravity(actor);
Actor_UpdatePos(actor);
}

void func_8002D908(Actor* actor) {
void Actor_UpdateVelocityXYZ(Actor* actor) {
f32 sp24 = Math_CosS(actor->world.rot.x) * actor->speedXZ;

actor->velocity.x = Math_SinS(actor->world.rot.y) * sp24;
actor->velocity.y = Math_SinS(actor->world.rot.x) * actor->speedXZ;
actor->velocity.z = Math_CosS(actor->world.rot.y) * sp24;
}

void func_8002D97C(Actor* actor) {
func_8002D908(actor);
func_8002D7EC(actor);
void Actor_MoveXYZ(Actor* actor) {
Actor_UpdateVelocityXYZ(actor);
Actor_UpdatePos(actor);
}

void func_8002D9A4(Actor* actor, f32 arg1) {
void Actor_SetProjectileSpeed(Actor* actor, f32 arg1) {
actor->speedXZ = Math_CosS(actor->world.rot.x) * arg1;
actor->velocity.y = -Math_SinS(actor->world.rot.x) * arg1;
}

void func_8002D9F8(Actor* actor, SkelAnime* skelAnime) {
void Actor_UpdatePosByAnimation(Actor* actor, SkelAnime* skelAnime) {
Vec3f sp1C;

SkelAnime_UpdateTranslation(skelAnime, &sp1C, actor->shape.rot.y);
Expand Down Expand Up @@ -1345,20 +1345,20 @@ f32 Actor_WorldDistXZToPoint(Actor* actor, Vec3f* refPoint) {
return Math_Vec3f_DistXZ(&actor->world.pos, refPoint);
}

void func_8002DBD0(Actor* actor, Vec3f* result, Vec3f* arg2) {
f32 cosRot2Y;
f32 sinRot2Y;
void Actor_WorldToActorCoords(Actor* actor, Vec3f* dest, Vec3f* pos) {
f32 cosY;
f32 sinY;
f32 deltaX;
f32 deltaZ;

cosRot2Y = Math_CosS(actor->shape.rot.y);
sinRot2Y = Math_SinS(actor->shape.rot.y);
deltaX = arg2->x - actor->world.pos.x;
deltaZ = arg2->z - actor->world.pos.z;
cosY = Math_CosS(actor->shape.rot.y);
sinY = Math_SinS(actor->shape.rot.y);
deltaX = pos->x - actor->world.pos.x;
deltaZ = pos->z - actor->world.pos.z;

result->x = (deltaX * cosRot2Y) - (deltaZ * sinRot2Y);
result->z = (deltaX * sinRot2Y) + (deltaZ * cosRot2Y);
result->y = arg2->y - actor->world.pos.y;
dest->x = (deltaX * cosY) - (deltaZ * sinY);
dest->z = (deltaX * sinY) + (deltaZ * cosY);
dest->y = pos->y - actor->world.pos.y;
}

f32 Actor_HeightDiff(Actor* actorA, Actor* actorB) {
Expand Down Expand Up @@ -4604,7 +4604,7 @@ s32 func_80035124(Actor* actor, PlayState* play) {
if (Actor_HasParent(actor, play)) {
actor->params = 1;
} else if (!(actor->bgCheckFlags & 1)) {
Actor_MoveForward(actor);
Actor_MoveXZGravity(actor);
Math_SmoothStepToF(&actor->speedXZ, 0.0f, 1.0f, 0.1f, 0.0f);
} else if ((actor->bgCheckFlags & 2) && (actor->velocity.y < -4.0f)) {
ret = 1;
Expand Down
2 changes: 1 addition & 1 deletion soh/src/code/z_en_a_keep.c
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ void EnAObj_Update(Actor* thisx, PlayState* play) {
EnAObj* this = (EnAObj*)thisx;

this->actionFunc(this, play);
Actor_MoveForward(&this->dyna.actor);
Actor_MoveXZGravity(&this->dyna.actor);

if (this->dyna.actor.gravity != 0.0f) {
if (this->dyna.actor.params != A_OBJ_BOULDER_FRAGMENT) {
Expand Down
2 changes: 1 addition & 1 deletion soh/src/code/z_en_item00.c
Original file line number Diff line number Diff line change
Expand Up @@ -831,7 +831,7 @@ void EnItem00_Update(Actor* thisx, PlayState* play) {

} else {
sp3A = 1;
Actor_MoveForward(&this->actor);
Actor_MoveXZGravity(&this->actor);
}

if (sp3A || D_80157D94[0]) {
Expand Down
4 changes: 2 additions & 2 deletions soh/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ void ArmsHook_Wait(ArmsHook* this, PlayState* play) {
s32 length = ((player->heldItemAction == PLAYER_IA_HOOKSHOT) ? 13 : 26) * CVarGetFloat(CVAR_CHEAT("HookshotReachMultiplier"), 1.0f);

ArmsHook_SetupAction(this, ArmsHook_Shoot);
func_8002D9A4(&this->actor, 20.0f);
Actor_SetProjectileSpeed(&this->actor, 20.0f);
this->actor.parent = &GET_PLAYER(play)->actor;
this->timer = length;
}
Expand Down Expand Up @@ -250,7 +250,7 @@ void ArmsHook_Shoot(ArmsHook* this, PlayState* play) {
}
}
} else {
Actor_MoveForward(&this->actor);
Actor_MoveXZGravity(&this->actor);
Math_Vec3f_Diff(&this->actor.world.pos, &this->actor.prevPos, &prevFrameDiff);
Math_Vec3f_Sum(&this->unk_1E8, &prevFrameDiff, &this->unk_1E8);
this->actor.shape.rot.x = Math_Atan2S(this->actor.speedXZ, -this->actor.velocity.y);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -869,7 +869,7 @@ void BgDyYoseizo_Update(Actor* thisx, PlayState* play2) {
}
}

Actor_MoveForward(&this->actor);
Actor_MoveXZGravity(&this->actor);
this->heightOffset = this->scale * 7500.0f;
Actor_SetFocus(&this->actor, this->heightOffset);
this->actor.focus.pos.y = this->heightOffset;
Expand Down
2 changes: 1 addition & 1 deletion soh/src/overlays/actors/ovl_Bg_Haka/z_bg_haka.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ void BgHaka_Destroy(Actor* thisx, PlayState* play) {
void func_8087B758(BgHaka* this, Player* player) {
Vec3f sp1C;

func_8002DBD0(&this->dyna.actor, &sp1C, &player->actor.world.pos);
Actor_WorldToActorCoords(&this->dyna.actor, &sp1C, &player->actor.world.pos);
if (fabsf(sp1C.x) < 34.6f && sp1C.z > -112.8f && sp1C.z < -36.0f) {
player->stateFlags2 |= PLAYER_STATE2_FORCE_SAND_FLOOR_SOUND;
}
Expand Down
2 changes: 1 addition & 1 deletion soh/src/overlays/actors/ovl_Bg_Haka_Ship/z_bg_haka_ship.c
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ void BgHakaShip_Update(Actor* thisx, PlayState* play) {

this->actionFunc(this, play);
if (this->dyna.actor.params == 0) {
Actor_MoveForward(&this->dyna.actor);
Actor_MoveXZGravity(&this->dyna.actor);
}
}

Expand Down
4 changes: 2 additions & 2 deletions soh/src/overlays/actors/ovl_Bg_Haka_Trap/z_bg_haka_trap.c
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ void func_8087FFC0(BgHakaTrap* this, PlayState* play) {
f32 zNonNegative;
Player* player = GET_PLAYER(play);

func_8002DBD0(&this->dyna.actor, &sp28, &player->actor.world.pos);
Actor_WorldToActorCoords(&this->dyna.actor, &sp28, &player->actor.world.pos);

sine = Math_SinS(this->dyna.actor.shape.rot.y);
cosine = Math_CosS(this->dyna.actor.shape.rot.y);
Expand Down Expand Up @@ -434,7 +434,7 @@ void func_808809E4(BgHakaTrap* this, PlayState* play, s16 arg2) {
Player* player = GET_PLAYER(play);
Vec3f sp18;

func_8002DBD0(&this->dyna.actor, &sp18, &player->actor.world.pos);
Actor_WorldToActorCoords(&this->dyna.actor, &sp18, &player->actor.world.pos);

if ((fabsf(sp18.x) < 70.0f) && (fabsf(sp18.y) < 100.0f) && (sp18.z < 500.0f) &&
(GET_PLAYER(play)->currentBoots != PLAYER_BOOTS_IRON)) {
Expand Down
2 changes: 1 addition & 1 deletion soh/src/overlays/actors/ovl_Bg_Haka_Zou/z_bg_haka_zou.c
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,7 @@ void BgHakaZou_Update(Actor* thisx, PlayState* play) {
this->actionFunc(this, play);

if (this->dyna.actor.params == 3) {
Actor_MoveForward(&this->dyna.actor);
Actor_MoveXZGravity(&this->dyna.actor);
}
}

Expand Down
6 changes: 3 additions & 3 deletions soh/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.c
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ void BgHeavyBlock_MovePiece(BgHeavyBlock* this, PlayState* play) {

thisx->velocity.x *= 0.98f;
thisx->velocity.z *= 0.98f;
func_8002D7EC(thisx);
Actor_UpdatePos(thisx);
thisx->shape.rot.x += thisx->world.rot.x;
thisx->shape.rot.y += thisx->world.rot.y;
thisx->shape.rot.z += thisx->world.rot.z;
Expand Down Expand Up @@ -385,7 +385,7 @@ void BgHeavyBlock_Fly(BgHeavyBlock* this, PlayState* play) {
Vec3f pos;
f32 raycastResult;

Actor_MoveForward(&this->dyna.actor);
Actor_MoveXZGravity(&this->dyna.actor);
pos.x = this->dyna.actor.home.pos.x;
pos.y = this->dyna.actor.home.pos.y + 1000.0f;
pos.z = this->dyna.actor.home.pos.z;
Expand Down Expand Up @@ -459,7 +459,7 @@ void BgHeavyBlock_Land(BgHeavyBlock* this, PlayState* play) {
Math_StepToF(&this->dyna.actor.velocity.y, 0.0f, 3.0f);
this->dyna.actor.gravity = 0.0f;
this->dyna.actor.world.pos = this->dyna.actor.home.pos;
Actor_MoveForward(&this->dyna.actor);
Actor_MoveXZGravity(&this->dyna.actor);
this->dyna.actor.home.pos = this->dyna.actor.world.pos;
switch (this->dyna.actor.params & 0xFF) {
case HEAVYBLOCK_UNBREAKABLE_OUTSIDE_CASTLE:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ void BgHidanDalm_Update(Actor* thisx, PlayState* play) {
BgHidanDalm* this = (BgHidanDalm*)thisx;

this->actionFunc(this, play);
Actor_MoveForward(&this->dyna.actor);
Actor_MoveXZGravity(&this->dyna.actor);
Actor_UpdateBgCheckInfo(play, &this->dyna.actor, 10.0f, 15.0f, 32.0f, 5);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ s32 BgHidanFirewall_CheckProximity(BgHidanFirewall* this, PlayState* play) {
Vec3f distance;

player = GET_PLAYER(play);
func_8002DBD0(&this->actor, &distance, &player->actor.world.pos);
Actor_WorldToActorCoords(&this->actor, &distance, &player->actor.world.pos);

if (fabsf(distance.x) < 100.0f && fabsf(distance.z) < 120.0f) {
return 1;
Expand Down Expand Up @@ -146,7 +146,7 @@ void BgHidanFirewall_ColliderFollowPlayer(BgHidanFirewall* this, PlayState* play

player = GET_PLAYER(play);

func_8002DBD0(&this->actor, &sp30, &player->actor.world.pos);
Actor_WorldToActorCoords(&this->actor, &sp30, &player->actor.world.pos);
if (sp30.x < -70.0f) {
sp30.x = -70.0f;
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ void BgHidanFwbig_MoveCollider(BgHidanFwbig* this, PlayState* play) {
f32 cs;
f32 sn;

func_8002DBD0(&this->actor, &projPos, &player->actor.world.pos);
Actor_WorldToActorCoords(&this->actor, &projPos, &player->actor.world.pos);
projPos.z = ((projPos.z >= 0.0f) ? 1.0f : -1.0f) * 25.0f * -1.0f;
if (this->direction == 0) {
projPos.x = CLAMP(projPos.x, -360.0f, 360.0f);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ void func_80888860(BgHidanHamstep* this, PlayState* play) {
s32 pad2;
s32 quakeIndex;

Actor_MoveForward(&this->dyna.actor);
Actor_MoveXZGravity(&this->dyna.actor);

if (((this->dyna.actor.world.pos.y - this->dyna.actor.home.pos.y) < (-20.0f - this->dyna.actor.minVelocityY)) &&
(this->dyna.actor.velocity.y <= 0.0f)) {
Expand Down Expand Up @@ -343,7 +343,7 @@ void func_80888A58(BgHidanHamstep* this, PlayState* play) {
s32 pad2;
s32 quakeIndex;

Actor_MoveForward(&this->dyna.actor);
Actor_MoveXZGravity(&this->dyna.actor);
func_80888694(this, (BgHidanHamstep*)this->dyna.actor.parent);

if (((this->dyna.actor.params & 0xFF) <= 0) || ((this->dyna.actor.params & 0xFF) >= 6)) {
Expand Down
4 changes: 2 additions & 2 deletions soh/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.c
Original file line number Diff line number Diff line change
Expand Up @@ -125,12 +125,12 @@ void func_80889C18(BgHidanKousi* this, PlayState* play) {
this->dyna.actor.speedXZ = 2.0f;
BgHidanKousi_SetupAction(this, func_80889C90);
}
Actor_MoveForward(&this->dyna.actor);
Actor_MoveXZGravity(&this->dyna.actor);
func_8002F974(&this->dyna.actor, NA_SE_EV_METALDOOR_SLIDE - SFX_FLAG);
}

void func_80889C90(BgHidanKousi* this, PlayState* play) {
func_8002D7EC(&this->dyna.actor);
Actor_UpdatePos(&this->dyna.actor);
if (D_80889E40[this->dyna.actor.params & 0xFF] <
Math_Vec3f_DistXYZ(&this->dyna.actor.home.pos, &this->dyna.actor.world.pos)) {
func_80889ACC(this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ void BgHidanRock_Update(Actor* thisx, PlayState* play) {

this->actionFunc(this, play);
if (this->actionFunc == func_8088B79C) {
Actor_MoveForward(&this->dyna.actor);
Actor_MoveXZGravity(&this->dyna.actor);
Actor_UpdateBgCheckInfo(play, &this->dyna.actor, 0.0f, 0.0f, 0.0f, 4);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ void BgIceTurara_Fall(BgIceTurara* this, PlayState* play) {
return;
}
} else {
Actor_MoveForward(&this->dyna.actor);
Actor_MoveXZGravity(&this->dyna.actor);
this->dyna.actor.world.pos.y += 40.0f;
Actor_UpdateBgCheckInfo(play, &this->dyna.actor, 0.0f, 0.0f, 0.0f, 4);
this->dyna.actor.world.pos.y -= 40.0f;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ void BgJyaHaheniron_SetupChairCrumble(BgJyaHaheniron* this) {
void BgJyaHaheniron_ChairCrumble(BgJyaHaheniron* this, PlayState* play) {
Vec3f vec;

Actor_MoveForward(&this->actor);
Actor_MoveXZGravity(&this->actor);
Actor_UpdateBgCheckInfo(play, &this->actor, 5.0f, 8.0f, 0.0f, 0x85);
if ((this->actor.bgCheckFlags & 9) || ((this->collider.base.atFlags & AT_HIT) && (this->collider.base.at != NULL) &&
(this->collider.base.at->category == ACTORCAT_PLAYER))) {
Expand All @@ -173,7 +173,7 @@ void BgJyaHaheniron_SetupPillarCrumble(BgJyaHaheniron* this) {

void BgJyaHaheniron_PillarCrumble(BgJyaHaheniron* this, PlayState* play) {
if (this->timer >= 8) {
Actor_MoveForward(&this->actor);
Actor_MoveXZGravity(&this->actor);
} else if (this->timer >= 17) {
BgJyaHaheniron_SpawnFragments(play, &this->actor.world.pos, D_808987A0);
Actor_Kill(&this->actor);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ void func_8089E650(BgMizuMovebg* this, PlayState* play) {
this->dyna.actor.speedXZ = dist;
}
func_80035844(&this->dyna.actor.world.pos, &waypoint, &this->dyna.actor.world.rot, 1);
func_8002D97C(&this->dyna.actor);
Actor_MoveXYZ(&this->dyna.actor);
dx = waypoint.x - this->dyna.actor.world.pos.x;
dy = waypoint.y - this->dyna.actor.world.pos.y;
dz = waypoint.z - this->dyna.actor.world.pos.z;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ void BgMoriBigst_SetupFall(BgMoriBigst* this, PlayState* play) {
}

void BgMoriBigst_Fall(BgMoriBigst* this, PlayState* play) {
Actor_MoveForward(&this->dyna.actor);
Actor_MoveXZGravity(&this->dyna.actor);
if (this->dyna.actor.world.pos.y <= this->dyna.actor.home.pos.y) {
this->dyna.actor.world.pos.y = this->dyna.actor.home.pos.y;
BgMoriBigst_SetupLanding(this, play);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ void BgMoriHashigo_LadderFall(BgMoriHashigo* this, PlayState* play) {
static f32 bounceSpeed[3] = { 4.0f, 2.7f, 1.7f };
Actor* thisx = &this->dyna.actor;

Actor_MoveForward(thisx);
Actor_MoveXZGravity(thisx);
if ((thisx->bgCheckFlags & 1) && (thisx->velocity.y < 0.0f)) {
if (this->bounceCounter >= ARRAY_COUNT(bounceSpeed)) {
BgMoriHashigo_SetupLadderRest(this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ void BgMoriRakkatenjo_Fall(BgMoriRakkatenjo* this, PlayState* play) {
Actor* thisx = &this->dyna.actor;
s32 quake;

Actor_MoveForward(thisx);
Actor_MoveXZGravity(thisx);
if ((thisx->velocity.y < 0.0f) && (thisx->world.pos.y <= 403.0f)) {
if (this->bounceCount >= ARRAY_COUNT(bounceVel)) {
BgMoriRakkatenjo_SetupRest(this);
Expand Down
Loading

0 comments on commit c6cf4e3

Please sign in to comment.