New function to call a non animated function over the animation duration:
Fixed a bug with delay and callFunctionWithDelay.
New functions of the JPExtendedAPI pack are supported:
New feature: loop mode. You can now define a looping animation without having to use callbacks:
New function to set several parameters at once:
leaveAnimationMode now returns the total duration of the animation you've just created:
Parameters order changed for the following function, in order to make it more readable:
Now possible to not interpolate all the values of a function by setting nil values instead (eg: object.setTranslation ( hObject, nil, nil, 50, object.kGlobalSpace )). Works for all the functions that have a equivalent get function plus object.translate and object.rotateTo. Functions like object.lookAt, object.rotateAround are not supported.
If a function is missing, you can add it yourself to the pack thanks to the new function: JPAnimation.addFunction
it is now possible to pass additional parameters to the JPAnimation.setAnimation function. It is useful for instance to send parameters to the JPTweener curves.
Fixed a bug with JPAnimation.callFunction for HUDs
application.setOption is now supported
JPAnimation process optimized.
Pack size greatly reduced
Fixed a bug with JPAnimation.sendValueToUser, was instant instead of animated.
Function JPAnimation.useInstantFeature ( ) removed, this feature is now activated by default. This feature allows to force a function to not be animated in an animation bloc by prefixing it with 'instant.' or 'inst.', for instance: inst.object.setRotation ( hObject, 0, 45, 0, object.kGlobalSpace )
New functions:
New constants:
Removed the setAllowClosestRotations and setDefaultAllowClosestRotations functions. Here's the new rotation functions behaviour:
Fixed the function object.rotateAround, was not working properly.
The following functions always rotate in the closest side: object.lookAt, object.lookAtWithUp, object.rotateTo, object.rotateToAxisAngle, object.rotateToQuaternion, object.rotateToYPR.
The following functions never rotate in the closest side: object.rotate, object.rotateYPR, object.rotateAxisAngle, object.rotateQuaternion.
For the following functions, you can choose to rotate in the closest side: object.setRotation, object.setRotationYPR, object.setRotationAxisAngle, object.setRotationQuaternion.
To choose, use the following functions: JPAnimation.setAllowClosestRotations ( bAllow ) JPAnimation.setDefaultAllowClosestRotations ( bAllow )
JPAnimation.enableJPExtendedAPIFunctions removed, not needed anymore to get the JPExtendedAPI functions working with JPAnimation.
All of the functions impacting the objects rotation now share the same start parameters (UseTargetInsteadOfCurrentValues mode)
All of the functions impacting the objects translation now share the same start parameters (UseTargetInsteadOfCurrentValues mode)
All of the functions impacting the HUDs positions now share the same start parameters (UseTargetInsteadOfCurrentValues mode)
New functions: object.lookAt object.lookAtWithUp object.matchRotation object.matchTranslation object.resetRotation object.resetTranslation object.rotate object.rotateAround object.rotateAxisAngle object.rotateQuaternion object.rotateTo object.rotateToAxisAngle object.rotateToQuaternion object.rotateToYPR object.rotateYPR object.setRotationAxisAngle object.setRotationYPR object.translate object.translateTo
New functions: JPAnimation.pause ( sAnimationID ) JPAnimation.pauseAll ( ) JPAnimation.resume ( sAnimationID ) JPAnimation.resumeAll ( ) bPaused = JPAnimation.isPaused ( sAnimationID )
JPAnimation is now compatible with the JPExtendedAPI functions. Call JPAnimation.enableJPExtendedAPIFunctions ( ) to link these functions with JPAnimation. The following functions are supported: hud.setComponentScreenSpaceBottomLeftCorner ( hComponent, nPositionX, nPositionY ) hud.setComponentScreenSpaceBottomRightCorner ( hComponent, nPositionX, nPositionY ) hud.setComponentScreenSpaceCenter ( hComponent, nPositionX, nPositionY ) hud.setComponentScreenSpaceTopLeftCorner ( hComponent, nPositionX, nPositionY ) hud.setComponentScreenSpaceTopRightCorner ( hComponent, nPositionX, nPositionY )
Optimizations (up to 20%)
You can now force a function to be called instantly while in an animation bloc. You just have to prefix the function with "instant.", for instance: instant.object.setRotation ( hObject, 0, 90, 0, object.kGlobalSpace ) You can also prefix with "inst."
JPAnimation.callFunction and JPAnimation.callFunctionWithDelay can now call any function, even those that are not in the base ShiVa's API.
--hud hud.setComponentZOrder ( hComponent, nZOrder ) hud.setDefaultTextShadowColor ( hUser, nRed, nGreen, nBlue, nAlpha ) hud.setEditTextDisplayRange ( hComponent, nRangeMin, nRangeMax ) hud.setEditTextMaxLength ( hComponent, nLength ) hud.setLabelTextDisplayRange ( hComponent, nRangeMin, nRangeMax ) hud.setListFingerScrollingInertia ( hComponent, nInertia ) hud.setListItemsForegroundColorSelected ( hComponent, nRed, nGreen, nBlue, nAlpha ) hud.setListVerticalScrollPos ( hComponent, nValue )
--light light.setDynamicShadowsViewSpaceClipRectangle ( hObject, nMinX, nMinY, nMaxX, nMaxY )
--mesh mesh.setSubsetVertexNormal ( hObject, nCurveIndex, nPointIndex, x, y, z ) mesh.setSubsetVertexPosition ( hMesh, nSubset, nVertex, x, y, z )
--microphone microphone.setSpectrumWidth ( nWidth )
--navigation navigation.setWaitTimeout ( hObject, nTimeout ) navigation.setPathMaxLength ( hObject, nMaxLength )
--object object.setRotationQuaternion ( hObject, nQuatX, nQuatY, nQuatZ, nQuatW, kSpace )
--scene scene.setAnimationsFrameTimeFactor ( hScene, nFactor ) scene.setColorGradingFadeTime ( hScene, nFadeTime ) scene.setColorLevels ( hScene, r, g, b, nFactor ) scene.setColorSaturation ( hScene, r, g, b, nFactor ) scene.setDynamicsFrameTimeFactor ( hScene, nFactor ) scene.setDynamicsIterationsPerStep ( hScene, nIterations ) scene.setDynamicsTimeStep ( hScene, nTimeStep ) scene.setOceanReflectorBias ( hScene, nBias ) scene.setOceanRefractionNoiseScale ( hScene, nScale ) scene.setParticlesFrameTimeFactor ( hScene, nFactor ) scene.setTrailsFrameTimeFactor ( hScene, nFactor )
--shape shape.setCurveEndColor ( hObject, nCurveIndex, nRed, nGreen, nBlue ) shape.setCurvePoint ( hMesh, nSubset, nVertex, x, y, z ) shape.setCurveStartColor ( hObject, nCurveIndex, nRed, nGreen, nBlue ) shape.setMeshOpacity ( hObject, nOpacity ) shape.setMeshSubsetMaterialEffectMap0AdditionalUVOffset ( hObject, nSubsetIndex, u, v ) shape.setMeshSubsetMaterialEffectMap0AdditionalUVRotation ( hObject, nSubsetIndex, nCenterU, nCenterV, nAngle ) shape.setMeshSubsetMaterialEffectMap0AdditionalUVScale ( hObject, nSubsetIndex, u, v ) shape.setMeshSubsetMaterialEffectMap1AdditionalUVOffset ( hObject, nSubsetIndex, u, v ) shape.setMeshSubsetMaterialEffectMap1AdditionalUVRotation ( hObject, nSubsetIndex, nCenterU, nCenterV, nAngle ) shape.setMeshSubsetMaterialEffectMap1AdditionalUVScale ( hObject, nSubsetIndex, u, v ) shape.setMeshSubsetVertexColor ( hObject, nSubset, nVertex, r, g, b, a )
--user user.setRenderPriority ( hUser, nPriority )
--sfx sfx.setParticleEmitterOpacityAt ( hObject, nIndex, nOpacity ) sfx.setTrailOpacityAt ( hObject, nIndex, nOpacity )
--JPAnimation API JPAnimation.activate ( sUserToken, sActivationKey ) --Animation mode sAnimationID = JPAnimation.enterAnimationMode ( bOptResetParameters ) nTotalDuration = JPAnimation.leaveAnimationMode ( hOptCompletionObject, sOptCompletionAIModel, sOptCompletionHandler, vOptParam0, vOptParam1, vOptParam2, vOptParam3, vOptParam4, vOptParam5, vOptParam6, vOptParam7, vOptParam8, vOptParam9 ) bYes = JPAnimation.isInAnimationMode ( ) --If you want a function to not be animated in an animation bloc, prefix it with 'instant.' or 'inst.'. For instance, instant.object.setRotation ( hObject, 0, 90, 0, object.kGlobalSpace ) will never be animated. --Animation handling JPAnimation.cancel ( sAnimationID ) JPAnimation.cancelAll ( ) bAlive = JPAnimation.isAlive ( sAnimationID ) JPAnimation.pause ( sAnimationID ) JPAnimation.pauseAll ( ) JPAnimation.resume ( sAnimationID ) JPAnimation.resumeAll ( ) bPaused = JPAnimation.isPaused ( sAnimationID ) bYes = JPAnimation.respondToFunction ( sApiDotFunction ) --Set values --Several at once JPAnimation.setParameters ( sAnimation, nDuration, nDelay, kLoopMode, bUseTargetInsteadOfCurrentValues, bWaitUntilDone ) --One by one JPAnimation.setAnimation ( sAnimation, vParam0, vParam1, vParam2, vParam3, vParam4 ) JPAnimation.setDelay ( nDelay ) JPAnimation.setDuration ( nDuration ) JPAnimation.setLookAtMode ( kLookAtMode ) JPAnimation.kLookAtModeStartPosition JPAnimation.kLookAtModeUpdatedPositionProgressiveFactor JPAnimation.kLookAtModeUpdatedPositionFullFactor JPAnimation.setLoopMode ( kLoopMode ) JPAnimation.kLoopModeOnce JPAnimation.kLoopModeOnceReversed JPAnimation.kLoopModeLoop JPAnimation.kLoopModeLoopReversed JPAnimation.kLoopModePingPong JPAnimation.setTimeFactor ( nTimeFactor ) JPAnimation.setUseTargetInsteadOfCurrentValues ( bUseTargetInsteadOfCurrentValues ) JPAnimation.setWaitUntilDone ( bWaitUntilDone ) --Define default values, used when calling JPAnimation.enterAnimationMode ( true ). JPAnimation.resetToDefaultParameters ( ) JPAnimation.setDefaultAnimation ( sAnimation, vParam0, vParam1, vParam2, vParam3, vParam4 ) JPAnimation.setDefaultDelay ( nDelay ) JPAnimation.setDefaultDuration ( nDuration ) JPAnimation.setDefaultLookAtMode ( kLookAtMode ) JPAnimation.setDefaultLoopMode ( kLoopMode ) JPAnimation.setDefaultTimeFactor ( nTimeFactor ) JPAnimation.setDefaultUseTargetInsteadOfCurrentValues ( bUseTargetInsteadOfCurrentValues ) JPAnimation.setDefaultWaitUntilDone ( bWaitUntilDone ) --Animation parameters that can be changed on the fly JPAnimation.changeAnimationLoopMode ( sAnimationID, kLoopMode ) JPAnimation.changeAnimationTime ( sAnimationID, nTime ) JPAnimation.changeAnimationTimeFactor ( sAnimationID, nTimeFactor ) --Get functions nDuration = JPAnimation.getAnimationDuration ( sAnimationID ) kLoopMode = JPAnimation.getAnimationLoopMode ( sAnimationID ) nTime = JPAnimation.getAnimationTime ( sAnimationID ) nTimeFactor = JPAnimation.getAnimationTimeFactor ( sAnimationID ) --Global parameters nTimeFactor = JPAnimation.getGlobalTimeFactor ( ) JPAnimation.setGlobalTimeFactor ( nTimeFactor ) --Interpolate a value JPAnimation.sendValueToObject ( hObject, sAIModel, sHandler, nStartValue, nEndValue ) JPAnimation.sendValueToUser ( hUser, sAIModel, sHandler, nStartValue, nEndValue ) --Call of any function JPAnimation.callFunction ( nParamCount, sApiDotFunction, vParam0, vParam1, ... ) JPAnimation.callFunctionWithDelay ( nDelay, nParamCount, sApiDotFunction, vParam0, vParam1, ... ) JPAnimation.callFunctionOverTime ( nParamCount, sApiDotFunction, vParam0, vParam1, vParam2, vParam3, vParam4, vParam5, vParam6, vParam7, vParam8, vParam9, vParam10, vParam11, vParam12, vParam13, vParam14, vParam15 ) --Add an unsupported function yourself JPAnimation.addFunction ( sAPI, sSetFunction, nSetParamsCount, tGetReturnsIndexes, sGetFunction, tGetParamsIndexes ) --What are tGetReturnsIndexes and tGetParamsIndexes? They are the parameters index of the set function, for the parameters and return values of the get function. --Example: --JPAnimation.addFunction ( "object", "setTranslation", 5, {1,2,3}, "getTranslation", {0,4} ) -- --Here are the 5 params for the set function: object.setTranslation ( hObject, nTx, nTy, nTz, kSpace ) -- #0 #1 #2 #3 #4 --Here are the params for the get function: nTx, nTy, nTz = object.getTranslation ( hObject, kSpace ) --tGetReturnsIndexes is {1,2,3} -> nTx, nTy and nTz were params #1, #2 and #3 for the setTranslation function --tGetReturnsIndexes is {0,4} -> hObject and kSpace were params #0 and #4 for the setTranslation function -- --To summurize, you can read it like that: --Function definition: JPAnimation.addFunction ( "object", "setTranslation", 5, {1,2,3}, "getTranslation", {0,4} ) --Params index from set to get function: object.setTranslation ( #0, #1, #2, #3, #4 ) #1, #2, #3 = object.getTranslation ( #0, #4 ) --SUPPORTED FUNCTIONS --JPExtendedAPI application.setGlobalSoundsVolumeCoef ( nCoef ) hud.setComponentScreenSpaceBottomLeftCorner ( hComponent, nPositionX, nPositionY ) hud.setComponentScreenSpaceBottomRightCorner ( hComponent, nPositionX, nPositionY ) hud.setComponentScreenSpaceCenter ( hComponent, nPositionX, nPositionY ) hud.setComponentScreenSpaceTopLeftCorner ( hComponent, nPositionX, nPositionY ) hud.setComponentScreenSpaceTopRightCorner ( hComponent, nPositionX, nPositionY ) hud.translate ( hComponent, nTx, nTy ) sound.setVolume ( hObject, nSoundIndex, nVolume ) --animation animation.setPlaybackCursor ( hObject, nBlendLayer, nValue ) animation.setPlaybackLevel ( hObject, nBlendLayer, nValue ) animation.setPlaybackSpeed ( hObject, nBlendLayer, nValue ) animation.setSkeletonScale ( hObject, nBlendLayer, nValue ) --application application.setCurrentUserAIVariable ( sAIModel, sVariable, vValue ) application.setCurrentUserEnvironmentVariable ( sName, vValue ) application.setFrameTimeFactor ( nValue ) application.setOption ( kOption, nValue ) --camera camera.setAspectRatioScale ( hObject, nValue ) camera.setDepthBlurFactor ( hObject, nValue ) camera.setChromaticAberrationAmplitude ( hObject, nValue ) camera.setChromaticAberrationFactor ( hObject, nValue ) camera.setDepthBlurFocusRangeMax ( hObject, nValue ) camera.setDepthBlurFocusRangeMin ( hObject, nValue ) camera.setDistortionAmplitude ( hObject, nValue ) camera.setDistortionFactor ( hObject, nValue ) camera.setDistortionFrequency ( hObject, nValue ) camera.setDistortionMapAmplitude ( hObject, nValue ) camera.setDistortionMapFactor ( hObject, nValue ) camera.setDistortionMapUVOffset ( hObject, u, v ) camera.setDistortionMapUVScale ( hObject, u, v ) camera.setDistortionTiling ( hObject, nValue ) camera.setFieldOfView ( hObject, nValue ) camera.setMaxViewDistance ( hObject, nValue ) camera.setMinViewDistance ( hObject, nValue ) camera.setMotionBlurFactor ( hObject, nValue ) camera.setVelocityBlurFactor ( hObject, nValue ) --dynamics dynamics.setAngularDamping ( hObject, nCoef ) dynamics.setAngularSpeedLimit ( hObject, nLimit ) dynamics.setAngularVelocity ( hObject, x, y, z, kSpace ) dynamics.setBounce ( hObject, nCoef ) dynamics.setBounceThreshold ( hObject, nThreshold ) dynamics.setFriction ( hObject, nCoef ) dynamics.setLinearDamping ( hObject, nCoef ) dynamics.setLinearSpeedLimit ( hObject, nLimit ) dynamics.setLinearVelocity ( hObject, x, y, z, kSpace ) dynamics.setMass ( hObject, nMass ) dynamics.setOffset ( hObject, x, y, z ) --hud hud.setButtonTextHeight ( hComponent, nValue ) hud.setButtonTextLetterSpacing ( hComponent, nValue ) hud.setButtonTextLineSpacing ( hComponent, nValue ) hud.setCheckTextHeight ( hComponent, nValue ) hud.setCheckTextLetterSpacing ( hComponent, nValue ) hud.setCheckTextLineSpacing ( hComponent, nValue ) hud.setComponentBackgroundColor ( hComponent, nRed, nGreen, nBlue, nAlpha ) hud.setComponentBackgroundImageUVOffset ( hComponent, nOffsetU, nOffsetV ) hud.setComponentBackgroundImageUVScale ( hComponent, nScaleU, nScaleV ) hud.setComponentBorderColor ( hComponent, nRed, nGreen, nBlue, nAlpha ) hud.setComponentForegroundColor ( hComponent, nRed, nGreen, nBlue, nAlpha ) hud.setComponentOpacity ( hComponent, nValue ) hud.setComponentPosition ( hComponent, nPositionX, nPositionY ) hud.setComponentRotation ( hComponent, nValue ) hud.setComponentShapeEllipseMaxAngle ( hComponent, nValue ) hud.setComponentShapeEllipseMinAngle ( hComponent, nValue ) hud.setComponentShapeRoundRectangleCornerRadius ( hComponent, nValue ) hud.setComponentSize ( hComponent, nSizeX, nSizeY ) hud.setComponentZOrder ( hComponent, nZOrder ) hud.setCursorPosition ( hComponent, nPosX, nPosY ) hud.setDefaultTextShadowColor ( hUser, nRed, nGreen, nBlue, nAlpha ) hud.setEditTextHeight ( hComponent, nValue ) hud.setEditTextLetterSpacing ( hComponent, nValue ) hud.setEditTextLineSpacing ( hComponent, nValue ) hud.setEditTextDisplayRange ( hComponent, nRangeMin, nRangeMax ) hud.setEditTextMaxLength ( hComponent, nLength ) hud.setLabelTextHeight ( hComponent, nValue ) hud.setLabelTextLetterSpacing ( hComponent, nValue ) hud.setLabelTextDisplayRange ( hComponent, nRangeMin, nRangeMax ) hud.setLabelTextLineSpacing ( hComponent, nValue ) hud.setListColumnWidthAt ( hComponent, nColumn, nWidth ) hud.setListItemsBackgroundColorEven ( hComponent, nRed, nGreen, nBlue, nAlpha ) hud.setListItemsBackgroundColorOdd ( hComponent, nRed, nGreen, nBlue, nAlpha ) hud.setListItemsBackgroundColorSelected ( hComponent, nRed, nGreen, nBlue, nAlpha ) hud.setListItemsHeight ( hComponent, nValue ) hud.setListTextHeight ( hComponent, nValue ) hud.setListTextLeftMargin ( hComponent, nValue ) hud.setListTextLetterSpacing ( hComponent, nValue ) hud.setListTextLineSpacing ( hComponent, nValue ) hud.setListTextRightMargin ( hComponent, nValue ) hud.setListFingerScrollingInertia ( hComponent, nInertia ) hud.setListItemsForegroundColorSelected ( hComponent, nRed, nGreen, nBlue, nAlpha ) hud.setListVerticalScrollPos ( hComponent, nValue ) hud.setMoviePlaybackProgress ( hComponent, nProgress ) hud.setPixelMapUVOffset ( hComponent, nOffsetU, nOffsetV ) hud.setProgressValue ( hComponent, nValue ) hud.setSliderValue ( hComponent, nValue ) --light light.setColor ( hObject, nRed, nGreen, nBlue ) light.setDynamicShadowsViewSpaceClipRectangle ( hObject, nMinX, nMinY, nMaxX, nMaxY ) --mesh mesh.setSubsetIndexValue ( hMesh, nSubset, nLOD, nIndex, nValue ) mesh.setSubsetVertexNormal ( hObject, nCurveIndex, nPointIndex, x, y, z ) mesh.setSubsetVertexPosition ( hMesh, nSubset, nVertex, x, y, z ) mesh.setSubsetVertexTexCoord ( hMesh, nSubset, nVertex, nSet, u, v ) --microphone microphone.setSpectrumWidth ( nWidth ) --navigation navigation.setAcceleration ( hObject, nValue ) navigation.setHeightOffset ( hObject, nValue ) navigation.setPathMaxLength ( hObject, nMaxLength ) navigation.setSpeedLimit ( hObject, nValue ) navigation.setWaitTimeout ( hObject, nTimeout ) --object object.lookAt ( hObject, nPx, nPy, nPz, kSpace, nFactor ) object.lookAtWithUp ( hObject, nPx, nPy, nPz, nUx, nUy, nUz, kSpace, nFactor ) object.matchRotation ( hObject, hOtherObject, kSpace ) object.matchTranslation ( hObject, hOtherObject, kSpace ) object.resetRotation ( hObject, kSpace ) object.resetTranslation ( hObject, kSpace ) object.rotate ( hObject, nRx, nRy, nRz, kSpace ) object.rotateAround ( hObject, nPx, nPy, nPz, nRx, nRy, nRz, kSpace ) object.rotateAxisAngle ( hObject, nAxisX, nAxisY, nAxisZ, nAngle, kSpace ) object.rotateQuaternion ( hObject, nQuatX, nQuatY, nQuatZ, nQuatW, kSpace ) object.rotateTo ( hObject, nRx, nRy, nRz, kSpace, nFactor ) object.rotateToAxisAngle ( hObject, nAxisX, nAxisY, nAxisZ, nAngle, kSpace, nFactor ) object.rotateToQuaternion ( hObject, nQuatX, nQuatY, nQuatZ, nQuatW, kSpace, nFactor ) object.rotateToYPR ( hObject, nYaw, nPitch, nRoll, kSpace, nFactor ) object.rotateYPR ( hObject, nYaw, nPitch, nRoll, kSpace ) object.setAIVariable ( hObject, sAIModel, sVariable, vValue ) object.setRotation ( hObject, nRx, nRy, nRz, kSpace ) object.setRotationAxisAngle ( hObject, nAxisX, nAxisY, nAxisZ, nAngle, kSpace ) object.setRotationQuaternion ( hObject, nQuatX, nQuatY, nQuatZ, nQuatW, kSpace ) object.setRotationYPR ( hObject, nYaw, nPitch, nRoll, kSpace ) object.setScale ( hObject, nSx, nSy, nSz ) object.setTranslation ( hObject, nTx, nTy, nTz, kSpace ) object.setUniformScale ( hObject, nScale ) object.translate ( hObject, nTx, nTy, nTz, kSpace ) object.translateTo ( hObject, nTx, nTy, nTz, kSpace, nFactor ) --pixelmap pixelmap.setBrushOrigin ( hPixelMap, sBrush, x, y ) pixelmap.setPixel ( hPixelMap, x, y, r, g, b, a ) --projector projector.setColor ( hObject, nRed, nGreen, nBlue ) projector.setFieldOfView ( hObject, nValue ) projector.setMaxClipDistance ( hObject, nValue ) projector.setMinClipDistance ( hObject, nValue ) projector.setOpacity ( hObject, nOpacity ) --scene scene.setAmbientColor ( hScene, r, g, b ) scene.setAmbientOcclusionColor ( hScene, r, g, b ) scene.setAmbientOcclusionDepthBias ( hScene, nValue ) scene.setAmbientOcclusionDistance ( hScene, nValue ) scene.setAmbientOcclusionIntensity ( hScene, nValue ) scene.setAmbientOcclusionSampleCount ( hScene, nValue ) scene.setAnimationsFrameTimeFactor ( hScene, nFactor ) scene.setBackgroundColor ( hScene, r, g, b ) scene.setBackgroundOpacity ( hScene, nValue ) scene.setBloomColoring ( hScene, nValue ) scene.setBloomIntensity ( hScene, nValue ) scene.setBloomMotionBlurFactor ( hScene, nValue ) scene.setBloomThreshold ( hScene, nValue ) scene.setColorContrast ( hScene, nValue ) scene.setColorGradingIntensity ( hScene, nValue ) scene.setColorGradingFadeTime ( hScene, nFadeTime ) scene.setColorLevels ( hScene, r, g, b, nFactor ) scene.setColorSaturation ( hScene, r, g, b, nFactor ) scene.setDistanceFogStart ( hScene, nValue ) scene.setDynamicShadowsFadeDistance ( hScene, nValue ) scene.setDynamicShadowsMaxDistance ( hScene, nValue ) scene.setDynamicsFrameTimeFactor ( hScene, nFactor ) scene.setDynamicsIterationsPerStep ( hScene, nIterations ) scene.setDynamicsTimeStep ( hScene, nTimeStep ) scene.setDynamicsGravity ( hScene, x, y, z ) scene.setFogColor ( hScene, r, g, b ) scene.setFogDensity ( hScene, nValue ) scene.setGammaCorrection ( hScene, nValue ) scene.setHeightFogDensityFactor ( hScene, nValue ) scene.setHeightFogLevel ( hScene, nValue ) scene.setMonochromeFilter ( hScene, r, g, b, nValue ) scene.setNormalMappingFadeScreenSize ( hScene, nValue ) scene.setNormalMappingMinScreenSize ( hScene, nValue ) scene.setOceanDepthAttenuationFactor ( hScene, nValue ) scene.setOceanFoamMapScrollingSpeed ( hScene, x, z ) scene.setOceanFoamMapTiling ( hScene, nValue ) scene.setOceanFresnelBias ( hScene, nValue ) scene.setOceanFresnelPower ( hScene, nValue ) scene.setOceanNormalMapScrollingSpeed ( hScene, x, z ) scene.setOceanNormalMapTiling ( hScene, nValue ) scene.setOceanReflectedObjectsMaxSurfaceDistance ( hScene, nValue ) scene.setOceanReflectionNoiseScale ( hScene, nValue ) scene.setOceanSurfaceColor ( hScene, r, g, b ) scene.setOceanSurfaceColorFactor ( hScene, nValue ) scene.setOceanSurfaceColorMaxDistance ( hScene, nValue ) scene.setOceanUnderwaterFogColor ( hScene, r, g, b ) scene.setOceanUnderwaterFogDensity ( hScene, nValue ) scene.setOceanReflectorBias ( hScene, nBias ) scene.setOceanRefractionNoiseScale ( hScene, nScale ) scene.setOceanWavesAmplitude ( hScene, nValue ) scene.setOceanWavesFrequency ( hScene, nValue ) scene.setOceanWavesMeanHeight ( hScene, nValue ) scene.setParticlesFrameTimeFactor ( hScene, nFactor ) scene.setPerPixelLightingMinScreenSize ( hScene, nValue ) scene.setPotentiallyOccludedObjectMaxSize ( hScene, nValue ) scene.setShadowAmbientColor ( hScene, r, g, b ) scene.setSkyBoxColor ( hScene, r, g, b ) scene.setSpecularLightingFadeScreenSize ( hScene, nValue ) scene.setSpecularLightingMinScreenSize ( hScene, nValue ) scene.setTrailsFrameTimeFactor ( hScene, nFactor ) --sensor sensor.setBoxCenterAt ( hObject, nIndex, x, y, z, kSpace ) sensor.setBoxSizeAt ( hObject, nIndex, sx, sy, sz ) sensor.setSphereCenterAt ( hObject, nIndex, x, y, z, kSpace ) sensor.setSphereRadiusAt ( hObject, nIndex, nRadius ) --sfx sfx.setParticleAttractorFieldPointPosition ( hObject, nIndex, x, y, z, kSpace ) sfx.setParticleAttractorFieldStrength ( hObject, nIndex, nValue ) sfx.setParticleEmitterCustomForce ( hObject, nIndex, x, y, z, kSpace ) sfx.setParticleEmitterGenerationRateAt ( hObject, nIndex, nValue ) sfx.setParticleEmitterInitialCountFactorAt ( hObject, nIndex, nFactor ) sfx.setParticleEmitterInitialSpeedFactorAt ( hObject, nIndex, nValue ) sfx.setParticleEmitterKillBoxAt ( hObject, nIndex, xmin, ymin, zmin, xmax, ymax, zmax ) sfx.setParticleEmitterLifeTimeFactorAt ( hObject, nIndex, nValue ) sfx.setParticleEmitterOpacityAt ( hObject, nIndex, nOpacity ) sfx.setParticleEmitterUniformScaleAt ( hObject, nIndex, nValue ) sfx.setParticleTurbulenceFieldFrequency ( hObject, nIndex, nFrequency ) sfx.setParticleTurbulenceFieldStrength ( hObject, nIndex, nStrength ) sfx.setParticleVortexFieldAxialDrop ( hObject, nIndex, nValue ) sfx.setParticleVortexFieldAxialDropDamping ( hObject, nIndex, nValue ) sfx.setParticleVortexFieldOrbitalSpeed ( hObject, nIndex, nValue ) sfx.setParticleVortexFieldOrbitalSpeedDamping ( hObject, nIndex, nValue ) sfx.setParticleVortexFieldRadialPull ( hObject, nIndex, nValue ) sfx.setParticleVortexFieldRadialPullDamping ( hObject, nIndex, nValue ) sfx.setParticleVortexFieldStrength ( hObject, nIndex, nValue ) sfx.setTrailOpacityAt ( hObject, nIndex, nOpacity ) --shape shape.overrideSkeletonJointRotation ( hObject, sJointName, rx, ry, rz, kSpace, nFactor ) shape.overrideSkeletonJointTranslation ( hObject, sJointName, tx, ty, tz, kSpace, nFactor ) shape.setCurveEndColor ( hObject, nCurveIndex, nRed, nGreen, nBlue ) shape.setCurvePoint ( hMesh, nSubset, nVertex, x, y, z ) shape.setCurveStartColor ( hObject, nCurveIndex, nRed, nGreen, nBlue ) shape.setMeshOpacity ( hObject, nOpacity ) shape.setMeshSubsetMaterialEffectMap0AdditionalUVOffset ( hObject, nSubsetIndex, u, v ) shape.setMeshSubsetMaterialEffectMap0AdditionalUVRotation ( hObject, nSubsetIndex, nCenterU, nCenterV, nAngle ) shape.setMeshSubsetMaterialEffectMap0AdditionalUVScale ( hObject, nSubsetIndex, u, v ) shape.setMeshSubsetMaterialEffectMap1AdditionalUVOffset ( hObject, nSubsetIndex, u, v ) shape.setMeshSubsetMaterialEffectMap1AdditionalUVRotation ( hObject, nSubsetIndex, nCenterU, nCenterV, nAngle ) shape.setMeshSubsetMaterialEffectMap1AdditionalUVScale ( hObject, nSubsetIndex, u, v ) shape.setMeshSubsetVertexColor ( hObject, nSubset, nVertex, r, g, b, a ) shape.setSkeletonJointRotation ( hObject, sJointName, rx, ry, rz, kSpace, nFactor ) shape.setSkeletonJointTranslation ( hObject, sJointName, tx, ty, tz, kSpace, nFactor ) --sound sound.setPlaybackProgress ( hObject, nSoundIndex, nValue ) sound.setSpatializationReferenceDistance ( hObject, nValue ) sound.setSpatializationRolloffFactor ( hObject, nValue ) --user user.setAIVariable ( hUser, sAIModel, sVariable, vValue ) user.setEnvironmentVariable ( hUser, sName, vValue ) user.setLocalSoundSourceReferenceDistance ( hUser, nValue ) user.setLocalSoundSourceRolloffFactor ( hUser, nValue ) user.setRenderPriority ( hUser, nPriority ) user.setViewport ( hUser, nLeft, nBottom, nWidth, nHeight )
JPAnimation est un pack vraiment magique. C'est un système qui va vous permettre de programmer des animations dans vos jeux ShiVa de la manière la plus simple qui soit, en utilisant les fonctions de l'API de base de ShiVa. En temps normal, lorsque vous utilisez une fonction de ShiVa, l'effet est instantané. Avec JPAnimation, vous pouvez choisir à tout moment d'entrer ou de sortir du 'mode animation', un mode où toutes les fonctions que vous utiliserez seront appliquées non pas instantanément, mais de façon progressive de la valeur courante jusqu'à la nouvelle valeur donnée, et sur une durée définie. Voyez vous-même comment celà fonctionne :
object.setTranslation ( hObject, 0, 0, 0, object.kGlobalSpace ) JPAnimation.enterAnimationMode ( ) object.setTranslation ( hObject, 5, 0, 0, object.kGlobalSpace ) JPAnimation.leaveAnimationMode ( )
L'objet est tout d'abord placé à l'origine du repère. Se trouve ensuite la déclaration d'un bloc d'animation (entre enterAnimationMode et leaveAnimationMode). Tout ce qui se trouvera à l'intérieur de ce bloc sera interprété comme devant être animé. Ici est définie une nouvelle position de l'objet en (5,0,0). Cela aura pour effet de faire se déplacer l'objet de la position (0,0,0) jusqu'en (5,0,0) sur une durée de 1 seconde (qui est la durée d'animation par défaut).
Vous pouvez également définir un AIModel et un handler afin qu'un évènement soit envoyé lorsque toutes les animations définies dans le bloc sont terminées. Grâce à JPAnimation, vous pouvez programmer votre jeu de façon évènementielle, fini le besoin de créer des states ou des onEnterFrame pour effectuer une animation, JPAnimation le fait pour vous.
L'animation proposée par JPAnimation suit une courbe linéaire. En installant le pack JPTweener, vous pourrez offrir à JPAnimation toutes les courbes de transition offertes par JPTweener. La combinaison de JPAnimation et JPTweener est vraiment très puissante, elle vous permettra de faire des animations du plus bel effet dans vos jeux avec très peu de lignes de code. Essayer la démo pour vous rendre compte de quoi ces packs sont capables. Voici comment utiliser JPTweener avec JPAnimation :
JPAnimation.setAnimation ( "easeInSine" )
JPAnimation fonctionne avec la majorité des couples de fonctions get/set de l'API de ShiVa, comme par exemple pour les objets (translation, rotation, scale, ...), pour les scènes (couleurs, shaders, océan, brouillard distance, ...) et pour toutes les autres APIs. Pour connaitre la liste des fonctions prises en charge par JPAnimation, veuillez vous référer à la page de l'API en cliquant sur le bouton correspondant ci-dessous. Si jamais une fonction était manquante, contactez-moi et je me ferai un plaisir de compléter le pack. En attendant, vous pouvez référencer la fonction manquante dans JPAnimation par vous même grâce à la fonction géniale JPAnimation.addFunction
JPAnimation permet d'appeler n'importe quelle fonction avec un délai d'exécution, en utilisant la fonction JPAnimation.callFunction ( nParamCount, sApiDotFunction, vParam0, vParam1, ... ) comme ceci :
object.setTranslation ( hObject, 0, 0, 0, object.kGlobalSpace ) JPAnimation.enterAnimationMode ( ) object.setTranslation ( hObject, 5, 0, 0, object.kGlobalSpace ) JPAnimation.callFunction ( 2, "object.setVisible", hObject, false ) JPAnimation.leaveAnimationMode ( )
Ce qui résultera en un déplacement de l'objet vers sa nouvelle position, et aussitôt il sera masqué.
JPAnimation fourni également la fonction JPAnimation.callFunctionWithDelay ( nDelay, nParamCount, sApiDotFunction, vParam0, vParam1, ... ). Avec cette fonction, vous allez pouvoir appeler une fonciton avec un délai d'exécution sans avoir à déclarer un bloc d'animation :
JPAnimation.callFunctionWithDelay ( 5, 2, "hud.setComponentVisible", hComponent, true )
Le composant HUD sera alors visible dans 5 secondes.