This commit is contained in:
2026-06-04 03:23:25 +01:00
parent e065d24f5b
commit be9fd42231

View File

@ -84,7 +84,7 @@ class Camera:
self.oscClient = oscClient
self.additionalPictures = 0 # How many additional pictures to take
self.addPicsMinGap = 0 # How long to wait between multi-shot batches
self._cameraEnabled = False
self._lastMode = 0
self._newPictureObserver = createNewPictureObserver(self._newPicture)
self._multiPictureOngoing = False
self._onEnabledCallback = onCameraEnabled
@ -103,6 +103,10 @@ class Camera:
def _newPicture(self, _, timeGap: float):
if self._multiPictureOngoing:
return
# Don't perform multishot in print mode
if self._lastMode == 5:
return
if timeGap < self.addPicsMinGap:
return
@ -119,12 +123,15 @@ class Camera:
time.sleep(0.5)
self._multiPictureOngoing = False
def _onModeChange(self, _: str, mode: int):
def _onModeChange(self, _: str, newMode: int):
"""
Gets called every time the camera mode changes in VRChat.
"""
self.cameraEnabled = mode != 0
enabledFlag = self._lastMode = 0 and newMode != 0
self._lastMode = newMode
if enabledFlag:
self._onCameraEnabled()
def _onCameraEnabled(self):
if self._onEnabledCallback is not None:
@ -136,13 +143,4 @@ class Camera:
Returns True if the camera is enabled
"""
return self._cameraEnabled
@cameraEnabled.setter
def cameraEnabled(self, value: bool):
if value == self._cameraEnabled:
return
self._cameraEnabled = value
if value:
self._onCameraEnabled()
return self._lastMode != 0