<aside>
🚨 For trackingTarget
Enum selector to work, it is required to have an editor fix described in the "Making Enums Work" section as of this time
</aside>
If you have the fix applied, you should have a proper dropdown menu to select the tracking target
<aside> 💡 It might also be useful to have an editor check present to not have a bunch of errors while running in editor. Here's a guide
</aside>
from udon_classes import * # IGNORE_LINE
SystemVoid = SystemVoid # IGNORE_LINE # pylint: disable=undefined-variable
this_trans = this_trans # IGNORE_LINE # pylint: disable=undefined-variable
this_gameObj = this_gameObj # IGNORE_LINE # pylint: disable=undefined-variable
global targetTransform
global trackingTarget
global rotate
global rotateBy
targetTransform = UnityEngineTransform
trackingTarget = VRCSDKBaseVRCPlayerApiTrackingDataType
rotate = False
rotateBy = 45.0
def initGraphVars() -> SystemVoid:
version = 1
graphName = "UniversalTracker"
loggerObject = UnityEngineGameObject.Find("Logger")
hasLogger = SystemObject(loggerObject) != None
if hasLogger:
logger = VRCUdonCommonInterfacesIUdonEventReceiver(loggerObject.GetComponent("UdonBehaviour"))
# LOGGER SCAFFOLD
def logExternal(logInput: SystemObject) -> SystemVoid:
logger.SetProgramVariable("fromGraph", SystemObject(graphName))
logger.SetProgramVariable("toLog", logInput)
logger.SendCustomEvent("_log")
def logContexted(input: SystemObject) -> SystemVoid:
UnityEngineDebug.Log(SystemObject("[" + graphName + "]: " + SystemConvert.ToString(input)))
if hasLogger:
logExternal(input)
# PROGRAM
def _start():
initGraphVars()
logContexted(SystemObject("v " + SystemConvert.ToString(version)))
player = VRCSDKBaseNetworking.get_LocalPlayer()
isEditor = SystemObject(player) == None
if not isEditor:
logContexted(SystemObject("Running in game"))
else:
logContexted(SystemObject("Running in editor"))
def _update():
if not isEditor:
trackingData = player.GetTrackingData(trackingTarget)
targetPos = trackingData.get_position()
targetRot = trackingData.get_rotation()
targetTransform.set_position(targetPos)
targetTransform.set_rotation(targetRot)
if rotate:
rotationVector = UnityEngineVector3.ctor(0.0,rotateBy,0.0)
targetTransform.Rotate(rotationVector)