MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / processEvent

Method processEvent

Engine/source/T3D/fx/lightning.cpp:667–747  ·  view source on GitHub ↗

--------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

665
666//--------------------------------------------------------------------------
667void Lightning::processEvent(LightningStrikeEvent* pEvent)
668{
669 AssertFatal(pEvent->mStart.x >= 0.0f && pEvent->mStart.x <= 1.0f, "Out of bounds coord!");
670
671 Strike* pStrike = new Strike;
672
673 Point3F strikePoint;
674 strikePoint.zero();
675
676 if( pEvent->mTarget )
677 {
678 Point3F objectCenter;
679 pEvent->mTarget->getObjBox().getCenter( &objectCenter );
680 objectCenter.convolve( pEvent->mTarget->getScale() );
681 pEvent->mTarget->getTransform().mulP( objectCenter );
682
683 strikePoint = objectCenter;
684 }
685 else
686 {
687 strikePoint.x = pEvent->mStart.x;
688 strikePoint.y = pEvent->mStart.y;
689 strikePoint *= mObjScale;
690 strikePoint += getPosition();
691 strikePoint += Point3F( -mObjScale.x * 0.5f, -mObjScale.y * 0.5f, 0.0f );
692
693 RayInfo rayInfo;
694 Point3F start = strikePoint;
695 start.z = mObjScale.z * 0.5f + getPosition().z;
696 strikePoint.z += -mObjScale.z * 0.5f;
697 bool rayHit = gClientContainer.castRay( start, strikePoint,
698 (STATIC_COLLISION_TYPEMASK | WaterObjectType),
699 &rayInfo);
700 if( rayHit )
701 {
702 strikePoint.z = rayInfo.point.z;
703 }
704 else
705 {
706 strikePoint.z = pStrike->bolt[0].findHeight( strikePoint, getSceneManager() );
707 }
708 }
709
710 pStrike->xVal = strikePoint.x;
711 pStrike->yVal = strikePoint.y;
712
713 pStrike->deathAge = 1.6f;
714 pStrike->currentAge = 0.0f;
715 pStrike->next = mStrikeListHead;
716
717 for( U32 i=0; i<MAX_LIGHTNING; i++ )
718 {
719 F32 randStart = boltStartRadius;
720 F32 height = mObjScale.z * 0.5f + getPosition().z;
721 pStrike->bolt[i].startPoint.set( pStrike->xVal + gRandGen.randF( -randStart, randStart ), pStrike->yVal + gRandGen.randF( -randStart, randStart ), height );
722 pStrike->bolt[i].endPoint = strikePoint;
723 pStrike->bolt[i].width = strikeWidth;
724 pStrike->bolt[i].numMajorNodes = 10;

Callers 2

_processMethod · 0.45
processMethod · 0.45

Calls 15

getPositionFunction · 0.85
mulPMethod · 0.80
findHeightMethod · 0.80
randFMethod · 0.80
startSplitsMethod · 0.80
Point3FClass · 0.50
zeroMethod · 0.45
getCenterMethod · 0.45
convolveMethod · 0.45
getScaleMethod · 0.45
getTransformMethod · 0.45
castRayMethod · 0.45

Tested by

no test coverage detected