Locator


LXsITYPE_LOCATOR

Startup initializes all the packages and then promotes some of them to item status. This basically just means creating the package, assigning the local data and callbacks, and setting up the channels. This module depends on cinemas and meshes.

  • LXsICHAN_LOCATOR_VISIBLE

  • LXsICHAN_LOCATOR_RENDER

  • LXsICHAN_LOCATOR_SELECT

  • LXsICHAN_LOCATOR_LOCK

  • LXsICHAN_LOCATOR_SIZE

  • LXsICHAN_LOCATOR_DRAWSHAPE

  • LXsICHAN_LOCATOR_CENTER

  • LXsICHAN_LOCATOR_PIVOT

  • LXsICHAN_LOCATOR_LINK

  • LXsICHAN_LOCATOR_GLSTATE

  • LXsICHAN_LOCATOR_HVISIBLE

  • LXsICHAN_LOCATOR_GLSURF

  • LXsICHAN_LOCATOR_SILHOUETTE

  • LXsICVAL_LOCATOR_DRAWSHAPE_DEFAULT

  • LXsICVAL_LOCATOR_DRAWSHAPE_CUSTOM

  • LXsICVAL_LOCATOR_LINK_DEFAULT

  • LXsICVAL_LOCATOR_LINK_CUSTOM

  • LXsICVAL_LOCATOR_STATE_DEFAULT

  • LXsICVAL_LOCATOR_STATE_ON

  • LXsICVAL_LOCATOR_STATE_OFF

  • LXsITYPE_LIGHT

  • LXsICHAN_LIGHT_RADIANCE

  • LXsICHAN_LIGHT_FALLTYPE

  • LXsICHAN_LIGHT_RANGE

  • LXsICHAN_LIGHT_SHADTYPE

  • LXsICHAN_LIGHT_SHADRES

  • LXsICHAN_LIGHT_SHADSPOT

  • LXsICHAN_LIGHT_SAMPLES

  • LXsICHAN_LIGHT_IMPORTANCE

  • LXsICHAN_LIGHT_VISCAM

  • LXsICHAN_LIGHT_VISREFL

  • LXsICHAN_LIGHT_VISREFR

  • LXsICHAN_LIGHT_STACK

  • LXsICHAN_LIGHT_TARGET

  • LXsICHAN_SUNLIGHT_GAMMA

  • LXsICHAN_SUNLIGHT_DISTANCE

  • LXsICHAN_SUNLIGHT_THINNING

  • LXsICHAN_SUNLIGHT_SUMMERTIME

  • LXsICHAN_SUNLIGHT_USEWORLDXFORM

  • LXsICVAL_LIGHT_FALLTYPE_NONE

  • LXsICVAL_LIGHT_FALLTYPE_INVDIST

  • LXsICVAL_LIGHT_FALLTYPE_INVDIST2

  • LXsICVAL_LIGHT_SHADTYPE_NONE

  • LXsICVAL_LIGHT_SHADTYPE_RAYTRACE

  • LXsICVAL_LIGHT_SHADTYPE_SHADOWMAP

  • LXsITYPE_CAMERA

  • LXsICHAN_CAMERA_FOCALLEN

  • LXsICHAN_CAMERA_APERTUREX

  • LXsICHAN_CAMERA_APERTUREY

  • LXsICHAN_CAMERA_OFFSETX

  • LXsICHAN_CAMERA_OFFSETY

  • LXsICHAN_CAMERA_SQUEEZE

  • LXsICHAN_CAMERA_FILMROLL

  • LXsICHAN_CAMERA_FILMFIT

  • LXsICHAN_CAMERA_DOF

  • LXsICHAN_CAMERA_FOCUSDIST

  • LXsICHAN_CAMERA_FSTOP

  • LXsICHAN_CAMERA_IRISBLADES

  • LXsICHAN_CAMERA_IRISROT

  • LXsICHAN_CAMERA_IRISBIAS

  • LXsICHAN_CAMERA_DISTORT

  • LXsICHAN_CAMERA_MOTIONBLUR

  • LXsICHAN_CAMERA_BLURLEN

  • LXsICHAN_CAMERA_BLUROFF

  • LXsICHAN_CAMERA_STEREO

  • LXsICHAN_CAMERA_STEREOEYE

  • LXsICHAN_CAMERA_STEREOCOMP

  • LXsICHAN_CAMERA_IODIST

  • LXsICHAN_CAMERA_CONVDIST

  • LXsICHAN_CAMERA_PROJTYPE

  • LXsICHAN_CAMERA_TARGET

  • LXsICHAN_CAMERA_CLIPDIST

  • LXsICHAN_CAMERA_CLIPPING

  • LXsICHAN_CAMERA_RESOVERRIDE

  • LXsICHAN_CAMERA_RESX

  • LXsICHAN_CAMERA_RESY

  • LXsICHAN_CAMERA_OVERSCAN

  • LXsICHAN_CAMERA_USEMASK

  • LXsICHAN_CAMERA_USEIMAGES

  • LXsICHAN_CAMERA_USEBGIMAGE

  • LXsICHAN_CAMERA_USEFGIMAGE

  • LXsICVAL_CAMERA_FILMFIT_FILL

  • LXsICVAL_CAMERA_FILMFIT_HORIZONTAL

  • LXsICVAL_CAMERA_FILMFIT_VERTICAL

  • LXsICVAL_CAMERA_FILMFIT_OVERSCAN

  • LXsICVAL_CAMERA_PROJTYPE_PERSP

  • LXsICVAL_CAMERA_PROJTYPE_ORTHO

  • LXsICVAL_CAMERA_PROJTYPE_CYLINDRICAL

  • LXsICVAL_CAMERA_PROJTYPE_CYLINDRICAL_VR

  • LXsICVAL_CAMERA_PROJTYPE_SPHERICAL

  • LXsICVAL_CAMERA_PROJTYPE_SPHERICAL_VR

  • LXsICVAL_CAMERA_STEREOEYE_LEFT

  • LXsICVAL_CAMERA_STEREOEYE_RIGHT

  • LXsICVAL_CAMERA_STEREOEYE_BOTH

  • LXsICVAL_CAMERA_STEREOCOMP_NONE

  • LXsICVAL_CAMERA_STEREOCOMP_ANAGLYPH_RED_CYAN

  • LXsICVAL_CAMERA_STEREOCOMP_ANAGLYPH_GRAYSCALE

  • LXsICVAL_CAMERA_STEREOCOMP_ANAGLYPH_RED_CYAN_HALF

  • LXsICVAL_CAMERA_STEREOCOMP_ANAGLYPH_RED_CYAN_OPT

  • LXsICVAL_CAMERA_STEREOCOMP_ANAGLYPH_RED_BLUE_LS

  • LXsICVAL_CAMERA_STEREOCOMP_SIDE_BY_SIDE

  • LXsICVAL_CAMERA_STEREOCOMP_SIDE_BY_SIDE_FULL

  • LXsICVAL_CAMERA_STEREOCOMP_SIDE_BY_SIDE_CROSS

  • LXsICVAL_CAMERA_STEREOCOMP_SIDE_BY_SIDE_CROSSFULL

  • LXsITYPE_GROUPLOCATOR


LXiICVAL_LIGHT_SHADTYPE_NONE

These declarations are used to test light shadow types.

  • LXiICVAL_LIGHT_SHADTYPE_RAYTRACE

  • LXiICVAL_LIGHT_SHADTYPE_SHADOWMAP

  • LXiICVAL_LIGHT_SHADTYPE_PORTAL

typedef unsigned LXtTransformType

Transforms applied to locators have a fixed set of types.

  • LXiXFRM_SCALE

  • LXiXFRM_ROTATION

  • LXiXFRM_POSITION

  • LXiXFRM_PIVOT

  • LXiXFRM_PIVOT_C

  • LXiXFRM_SHEAR

  • LXiXFRM_PIVOT_ROT

  • LXiXFRM_PIVOT_ROT_C

ILxLocator

class ILxLocator

A locator is a basic item type that has a transform.

Public Functions

LxResult Visible(LXtObjectID self, LXtObjectID chanRead)

Locator-type item visibility is controlled both locally and by parent items. If an item evaluates as visible, the return value is LXe_TRUE, otherwise the return value is LXe_FALSE.

LxResult WorldTransform(LXtObjectID self, LXtObjectID chanRead, LXtMatrix xfrm, LXtVector pos)

Locator-type items have support methods for getting and setting their transforms. This gets the evaluated world transform (position offset and 3x3 matrix) for a given item at a given time.

LxResult GetTransformItem(LXtObjectID self, LXtTransformType type, void **ppvObj)

This method returns the transform item of the given type for the locator item. If no item exists this method returns LXe_NOTFOUND. Otherwise the item is returned.

LxResult AddTransformItem(LXtObjectID self, LXtTransformType type, void **ppvObj, unsigned *index)

This method adds a given transform or returns the existing one. It can optionally return the index of the first value channel of the xfrm as well.

LxResult SetTransformVector(LXtObjectID self, LXtObjectID chanWrite, LXtTransformType type, const LXtVector value)

This method sets the value of one of the transforms for the given locator item. The chanWrite object can be an object presenting an ILxChannelWrite interface for one of the scene’s actions. If this is null the vector is written as constant channel values in some appropriate action.

LxResult AddPreTransformItem(LXtObjectID self, LXtObjectID chanWrite, LXtTransformType type, const LXtVector value, void **ppvObj, unsigned *index)

This method creates a new transform of the requested type and inserts into the transform chain before the standard transform. It returns the new object, optionally the first value channel of the xfrm as well. If ‘value’ is not NULL, it sets the value of one of the transforms. The chanWrite object can be an object presenting an ILxChannelWrite interface for one of the scene’s actions. If this is null the vector is written as constant channel values in some appropriate action.

LxResult AddPostTransformItem(LXtObjectID self, LXtObjectID chanWrite, LXtTransformType type, const LXtVector value, void **ppvObj, unsigned *index)

This is like the above, but it inserts the transform AFTER the standard transforms.

LxResult SetTarget(LXtObjectID self, LXtObjectID target, void **ppvObj)
LxResult PrependTransformItem(LXtObjectID self, LXtObjectID chanWrite, LXtTransformType type, const LXtVector value, void **ppvObj, unsigned *index)

Inserts the transform BEFORE the very first transform.

LxResult AppendTransformItem(LXtObjectID self, LXtObjectID chanWrite, LXtTransformType type, const LXtVector value, void **ppvObj, unsigned *index)

Inserts the transform AFTER the very last transform.

LxResult SetPosition(LXtObjectID self, LXtObjectID chanRead, LXtObjectID chanWrite, const LXtVector pos, unsigned type, unsigned comp)
LxResult SetRotation(LXtObjectID self, LXtObjectID chanRead, LXtObjectID chanWrite, const LXtMatrix m3, unsigned type, unsigned comp)
LxResult SetScale(LXtObjectID self, LXtObjectID chanRead, LXtObjectID chanWrite, const LXtMatrix4 m4, unsigned type, unsigned comp)
LxResult ExtractLocalPosition(LXtObjectID self, LXtObjectID chanRead, LXtVector pos)

Items may have several position transforms (zeroed, pivot etc) making it difficult to set a local position directly. This function takes the desired local position values for an item and updates them to the values that need to be set on the standard position transform item to give the desired position after taking all other transforms into account.

LxResult ExtractLocalRotation(LXtObjectID self, LXtObjectID chanRead, LXtMatrix m3)

As above above but for the local rotation matrix.

LxResult ZeroTransform(LXtObjectID self, LXtObjectID chanRead, LXtObjectID chanWrite, LXtTransformType type)
LxResult WorldTransform4(LXtObjectID self, LXtObjectID chanRead, LXtMatrix4 xfrm4)

This is similar to WorldTransform, except the evaluated world transform is returned in a full 4x4 matrix.

LxResult WorldInvertTransform(LXtObjectID self, LXtObjectID chanRead, LXtMatrix xfrm, LXtVector pos)

This gets the invert transformation matrix and offset

LxResult LocalTransform(LXtObjectID self, LXtObjectID chanRead, LXtMatrix xfrm, LXtVector pos)

This gets the evaluated local transform (position offset and 3x3 matrix - relative to its parent) for a given item at a given time.

LxResult LocalTransform4(LXtObjectID self, LXtObjectID chanRead, LXtMatrix4 xfrm4)

This is similar to LocalTransform, except the evaluated local transform is returned in a full 4x4 matrix.

  • LXiLOCATOR_LOCAL