Skip to content

Commit

Permalink
Merge pull request #1938 from John3/add_strikeObject
Browse files Browse the repository at this point in the history
added strikeObject lightning feature
  • Loading branch information
Areloch committed Feb 5, 2017
2 parents b6cbac0 + 84f610f commit 5c8a821
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 4 deletions.
46 changes: 43 additions & 3 deletions Engine/source/T3D/fx/lightning.cpp
Expand Up @@ -867,13 +867,53 @@ void Lightning::strikeRandomPoint()
}

//--------------------------------------------------------------------------
void Lightning::strikeObject(ShapeBase*)
void Lightning::strikeObject(ShapeBase* targetObj)
{
AssertFatal(isServerObject(), "Error, client objects may not initiate lightning!");

AssertFatal(false, "Lightning::strikeObject is not implemented.");
}
Point3F strikePoint = targetObj->getPosition();
Point3F objectCenter;

Box3F wb = getWorldBox();
if (!wb.isContained(strikePoint))
return;

Point3F targetRel = strikePoint - getPosition();
Point3F length(wb.len_x() / 2.0f, wb.len_y() / 2.0f, wb.len_z() / 2.0f);

Point3F strikePos = targetRel / length;

bool playerInWarmup = false;
Player *playerObj = dynamic_cast< Player * >(targetObj);
if (playerObj)
{
if (!playerObj->getControllingClient())
{
playerInWarmup = true;
}
}

if (!playerInWarmup)
{
applyDamage_callback(targetObj->getWorldSphere().center, VectorF(0.0, 0.0, 1.0), targetObj);
}

SimGroup* pClientGroup = Sim::getClientGroup();
for (SimGroup::iterator itr = pClientGroup->begin(); itr != pClientGroup->end(); itr++) {
NetConnection* nc = static_cast<NetConnection*>(*itr);
if (nc != NULL)
{
LightningStrikeEvent* pEvent = new LightningStrikeEvent;
pEvent->mLightning = this;

pEvent->mStart.x = strikePoint.x;
pEvent->mStart.y = strikePoint.y;
pEvent->mTarget = targetObj;

nc->postNetEvent(pEvent);
}
}
}

//--------------------------------------------------------------------------
U32 Lightning::packUpdate(NetConnection* con, U32 mask, BitStream* stream)
Expand Down
2 changes: 1 addition & 1 deletion Engine/source/T3D/fx/lightning.h
Expand Up @@ -229,7 +229,7 @@ class Lightning : public GameBase

void warningFlashes();
void strikeRandomPoint();
void strikeObject(ShapeBase*);
void strikeObject(ShapeBase* targetObj);
void processEvent(LightningStrikeEvent*);

DECLARE_CONOBJECT(Lightning);
Expand Down

0 comments on commit 5c8a821

Please sign in to comment.