mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-10 14:51:40 +00:00
Merge branch 'maint'
This commit is contained in:
commit
e4e26e7aa7
1 changed files with 19 additions and 13 deletions
|
@ -38,6 +38,7 @@ class ACustomBridge : public AActor
|
|||
DECLARE_CLASS (ACustomBridge, AActor)
|
||||
public:
|
||||
void BeginPlay ();
|
||||
void Destroy();
|
||||
};
|
||||
|
||||
IMPLEMENT_CLASS(ACustomBridge)
|
||||
|
@ -58,6 +59,24 @@ void ACustomBridge::BeginPlay ()
|
|||
}
|
||||
}
|
||||
|
||||
void ACustomBridge::Destroy()
|
||||
{
|
||||
// Hexen originally just set a flag to make the bridge balls remove themselves in A_BridgeOrbit.
|
||||
// But this is not safe with custom bridge balls that do not necessarily call that function.
|
||||
// So the best course of action is to look for all bridge balls here and destroy them ourselves.
|
||||
|
||||
TThinkerIterator<AActor> it;
|
||||
AActor *thing;
|
||||
|
||||
while ((thing = it.Next()))
|
||||
{
|
||||
if (thing->target == this)
|
||||
{
|
||||
thing->Destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Action functions for the non-Doom bridge --------------------------------
|
||||
|
||||
#define ORBIT_RADIUS 15
|
||||
|
@ -89,10 +108,6 @@ DEFINE_ACTION_FUNCTION(AActor, A_BridgeOrbit)
|
|||
// Set rotation radius
|
||||
if (self->target->args[4]) rotationradius = ((self->target->args[4] * self->target->radius) / (100 * FRACUNIT));
|
||||
|
||||
if (self->target->special1)
|
||||
{
|
||||
self->SetState (NULL);
|
||||
}
|
||||
self->angle += rotationspeed;
|
||||
self->x = self->target->x + rotationradius * finecosine[self->angle >> ANGLETOFINESHIFT];
|
||||
self->y = self->target->y + rotationradius * finesine[self->angle >> ANGLETOFINESHIFT];
|
||||
|
@ -115,7 +130,6 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_BridgeInit)
|
|||
cy = self->y;
|
||||
cz = self->z;
|
||||
startangle = pr_orbit() << 24;
|
||||
self->special1 = 0;
|
||||
|
||||
// Spawn triad into world -- may be more than a triad now.
|
||||
int ballcount = self->args[2]==0 ? 3 : self->args[2];
|
||||
|
@ -129,14 +143,6 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_BridgeInit)
|
|||
}
|
||||
}
|
||||
|
||||
/* never used
|
||||
void A_BridgeRemove (AActor *self)
|
||||
{
|
||||
self->special1 = true; // Removing the bridge
|
||||
self->flags &= ~MF_SOLID;
|
||||
self->SetState (&ABridge::States[S_FREE_BRIDGE]);
|
||||
}
|
||||
*/
|
||||
|
||||
// Invisible bridge --------------------------------------------------------
|
||||
|
||||
|
|
Loading…
Reference in a new issue