-------------------------------------------------------------------------------- -- Function......... : updateWeapon -- Author........... : -- Description...... : -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- function FPSCamera.updateWeapon ( ) -------------------------------------------------------------------------------- local w = this.hWeapon ( ) if ( w ~= nil ) then local t = application.getTotalFrameTime ( ) local dt = application.getLastFrameTime ( ) local o = this.getObject ( ) -- -- local curWeaponBackFactor = this.nCurWeaponBackFactor ( ) local dstWeaponBackFactor = this.nDstWeaponBackFactor ( ) if ( dstWeaponBackFactor > 0 ) then this.nDstWeaponBackFactor ( dstWeaponBackFactor - dt ) end if ( curWeaponBackFactor ~= dstWeaponBackFactor ) then this.nCurWeaponBackFactor ( math.interpolate ( curWeaponBackFactor, dstWeaponBackFactor, 10 * dt ) ) end -- -- local oTx, oTy, oTz = object.getTranslation ( o, object.kGlobalSpace ) local oRx, oRy, oRz = object.getRotation ( o, object.kGlobalSpace ) local oXx, oXy, oXz = object.getXAxis ( o, object.kGlobalSpace ) local oYx, oYy, oYz = object.getYAxis ( o, object.kGlobalSpace ) local oZx, oZy, oZz = object.getZAxis ( o, object.kGlobalSpace ) oYx, oYy, oYz = math.vectorScale ( oYx, oYy, oYz, 0.30 + 0.02 * math.sin ( t * 45 ) ) oTx, oTy, oTz = math.vectorSubtract ( oTx, oTy, oTz, oYx, oYy, oYz ) oXx, oXy, oXz = math.vectorScale ( oXx, oXy, oXz, 0.25 + 0.02 * math.sin ( t * 30 ) ) oTx, oTy, oTz = math.vectorAdd ( oTx, oTy, oTz, oXx, oXy, oXz ) oZx, oZy, oZz = math.vectorScale ( oZx, oZy, oZz, 0.4 + 0.02 * math.sin ( t * 55 ) - 0.15 * curWeaponBackFactor ) oTx, oTy, oTz = math.vectorSubtract ( oTx, oTy, oTz, oZx, oZy, oZz ) object.setTranslation ( w, oTx, oTy, oTz, object.kGlobalSpace ) object.setRotation ( w, oRx, oRy, oRz, object.kGlobalSpace ) object.rotate ( w, 3 * curWeaponBackFactor, 0, 0, object.kLocalSpace ) end -------------------------------------------------------------------------------- end --------------------------------------------------------------------------------