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

Method processTick

Engine/source/afx/afxCamera.cpp:750–828  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

748}
749
750void afxCamera::processTick(const Move* move)
751{
752 Parent::processTick(move);
753 Point3F vec,pos;
754
755 // move will be NULL unless camera becomes the control object as in FlyMode
756 if (move)
757 {
758 // UPDATE ORIENTATION //
759 mDelta.rotVec = mRot;
760 mObjToWorld.getColumn(3, &mDelta.posVec);
761 mRot.x = mClampF(mRot.x + move->pitch, -MaxPitch, MaxPitch);
762 mRot.z += move->yaw;
763
764 // ORBIT MODE //
765 if (mMode == OrbitObjectMode || mMode == OrbitPointMode)
766 {
767 if(mMode == OrbitObjectMode && bool(mOrbitObject))
768 {
769 // If this is a shapebase, use its render eye transform
770 // to avoid jittering.
771 GameBase *castObj = mOrbitObject;
772 ShapeBase* shape = dynamic_cast<ShapeBase*>(castObj);
773 if( shape != NULL ) {
774 MatrixF ret;
775 shape->getRenderEyeTransform( &ret );
776 mPosition = ret.getPosition();
777 }
778 else
779 {
780 // Hopefully this is a static object that doesn't move,
781 // because the worldbox doesn't get updated between ticks.
782 mOrbitObject->getWorldBox().getCenter(&mPosition);
783 }
784 }
785 set_cam_pos(mPosition, mRot);
786 validateEyePoint(1.0f, &mObjToWorld);
787 pos = mPosition;
788 }
789
790 // NON-ORBIT MODE (FLY MODE) //
791 else // if (mode == FlyMode)
792 {
793 // Update pos
794 bool faster = move->trigger[0] || move->trigger[1];
795 F32 scale = Camera::getMovementSpeed() * (faster + 1);
796
797 mObjToWorld.getColumn(3,&pos);
798 mObjToWorld.getColumn(0,&vec);
799 pos += vec * move->x * TickSec * scale;
800 mObjToWorld.getColumn(1,&vec);
801 pos += vec * move->y * TickSec * scale;
802 mObjToWorld.getColumn(2,&vec);
803 pos += vec * move->z * TickSec * scale;
804 set_cam_pos(pos,mRot);
805 }
806
807 // If on the client, calc delta for backstepping

Callers

nothing calls this directly

Calls 7

mClampFFunction · 0.85
getMovementSpeedFunction · 0.85
getColumnMethod · 0.80
getRenderEyeTransformMethod · 0.45
getPositionMethod · 0.45
getCenterMethod · 0.45
getWorldBoxMethod · 0.45

Tested by

no test coverage detected