Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
aedbd87480
|
|||
|
1b1cbf5aa4
|
29
camera.py
29
camera.py
@ -41,16 +41,7 @@ class NewPictureHandler(watchdog.events.FileSystemEventHandler):
|
|||||||
if not isinstance(event, watchdog.events.FileCreatedEvent):
|
if not isinstance(event, watchdog.events.FileCreatedEvent):
|
||||||
return
|
return
|
||||||
|
|
||||||
# Ignore multi layer images
|
# Update last closed (can't use on_closed(), see #4).
|
||||||
for layer in ['_Environment', '_Player', '_UI']:
|
|
||||||
if layer in os.path.basename(event.src_path):
|
|
||||||
return
|
|
||||||
|
|
||||||
timeGap = time.perf_counter() - self._lastPicture
|
|
||||||
Thread(target=self._callback, args=(event.src_path, timeGap)).start()
|
|
||||||
self._lastPicture = time.perf_counter()
|
|
||||||
|
|
||||||
def on_closed(self, event: watchdog.events.FileSystemEvent) -> None:
|
|
||||||
exExt = '.'.join(event.src_path.split('.')[:-1])
|
exExt = '.'.join(event.src_path.split('.')[:-1])
|
||||||
|
|
||||||
if exExt.endswith('_Environment'):
|
if exExt.endswith('_Environment'):
|
||||||
@ -64,6 +55,15 @@ class NewPictureHandler(watchdog.events.FileSystemEventHandler):
|
|||||||
|
|
||||||
self.lastClosedTime = time.perf_counter()
|
self.lastClosedTime = time.perf_counter()
|
||||||
|
|
||||||
|
# Ignore multi layer images
|
||||||
|
for layer in ['_Environment', '_Player', '_UI']:
|
||||||
|
if layer in os.path.basename(event.src_path):
|
||||||
|
return
|
||||||
|
|
||||||
|
timeGap = time.perf_counter() - self._lastPicture
|
||||||
|
Thread(target=self._callback, args=(event.src_path, timeGap)).start()
|
||||||
|
self._lastPicture = time.perf_counter()
|
||||||
|
|
||||||
def createNewPictureObserver(callback: callable) -> Observer:
|
def createNewPictureObserver(callback: callable) -> Observer:
|
||||||
"""
|
"""
|
||||||
Creates an Observer that watches the VRChat pictures folder and calls callback
|
Creates an Observer that watches the VRChat pictures folder and calls callback
|
||||||
@ -188,13 +188,20 @@ class Camera:
|
|||||||
# Wait until the camera is ready
|
# Wait until the camera is ready
|
||||||
self._waitForCameraReady()
|
self._waitForCameraReady()
|
||||||
time.sleep(0.75)
|
time.sleep(0.75)
|
||||||
|
# Check the camera mode, and see if it's disabled
|
||||||
|
if self._lastMode == 0:
|
||||||
|
# If so, break out of the loop.
|
||||||
|
print('Camera disabled. Bailing out.')
|
||||||
|
break
|
||||||
# Take a new picture
|
# Take a new picture
|
||||||
self.oscClient.send_message('/usercamera/Capture', True)
|
self.oscClient.send_message('/usercamera/Capture', True)
|
||||||
# Reset the lastPicture time, the set that happens at the start of this
|
# Reset the lastPicture time, the set that happens at the start of this
|
||||||
# function is not fast enough and causes race conditions.
|
# function is not fast enough and causes race conditions.
|
||||||
self.lastPicture = time.perf_counter()
|
self.lastPicture = time.perf_counter()
|
||||||
# Wait for the camera to be ready one last time to prevent a cycle
|
# Wait for the camera to be ready one last time to prevent a cycle
|
||||||
self._waitForCameraReady()
|
# but only if the camera is still enabled.
|
||||||
|
if self._lastMode != 0:
|
||||||
|
self._waitForCameraReady()
|
||||||
except TimeoutError:
|
except TimeoutError:
|
||||||
print('WARNING: Timeout occured during multishot. Bailing out.')
|
print('WARNING: Timeout occured during multishot. Bailing out.')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user