66 Commits

Author SHA1 Message Date
10a2e23c19 increased ndisplay swap barrier 2025-12-12 10:37:19 +02:00
6b3b52966d increased ndisplay swap barrier 2025-12-12 10:34:41 +02:00
cad01ca11d added timecode frame delay 2025-12-12 10:18:15 +02:00
22566b6767 changed dante timecode fps to 25 2025-12-03 12:43:35 +02:00
98780c7aae final level snapshots 2025-12-03 09:53:34 +02:00
0f9d0455ef saved level snapshots 2025-12-02 18:44:57 +02:00
aa350d3c44 saved level snapshots 2025-12-02 18:23:25 +02:00
4fbd6d0538 take 2 final level snapshot 2025-12-02 17:14:36 +02:00
82f9d06c77 deleted old remote settings 2025-12-02 17:07:09 +02:00
92ab98604a take 2 level snapshot 2025-12-02 16:48:28 +02:00
7577315b80 removed media player 2025-12-02 12:04:24 +02:00
fa12826333 added sound component to media plate 2025-12-02 11:54:34 +02:00
13293bf32f enabled audio in ndisplay 2025-12-02 11:26:58 +02:00
c43c96dbf1 set startup level 2025-12-01 11:56:59 +02:00
686b148d3f readded media plate location to remote 2025-12-01 11:55:30 +02:00
64b69b8ede Added colour grading settings to remote web interface 2025-12-01 11:26:03 +02:00
a283fdeff7 Added remote web interface 2025-12-01 10:43:58 +02:00
b3ed8e9223 Adjusted inner frustum settings 2025-12-01 10:07:05 +02:00
865ddf77aa changed frame rate to 25 2025-12-01 09:40:58 +02:00
485b18d567 added level for video clip and single ndisplay 2025-12-01 09:26:34 +02:00
e680e9b0c4 removed unnecessary files 2025-11-26 13:03:00 +02:00
b1c92a9ba6 added multi instance ndisplay config to parallax level 2025-11-26 12:55:47 +02:00
bfdf5be5d6 added git management bat file 2025-11-26 12:45:06 +02:00
f30dc73f94 changed framerate to 24 2025-11-25 16:36:10 +02:00
b544a28e60 changed framerate to 48 2025-11-25 16:06:10 +02:00
901dbed60d camera to gpu 0, instance 2 to gpu 1 2025-11-25 14:57:49 +02:00
8dab229815 turned all gpu indexes to 0 2025-11-25 14:37:27 +02:00
eeaf50f4a3 reversed gpu indexes 2025-11-25 14:28:13 +02:00
8ec1dfc67b fixed gpu indexes 2025-11-25 14:20:40 +02:00
a8ba344f0d reversed gpus 2025-11-25 12:19:34 +02:00
91ec771a47 reversed gpus 2025-11-25 12:13:11 +02:00
ca0c0683ac set icvfx gpu to 0 and big wall to 0 2025-11-25 11:49:25 +02:00
15a54c6553 reversed gpu indexes 2025-11-25 11:40:26 +02:00
24a363cffd fixed ndisplay viewports 2025-11-25 11:23:17 +02:00
b15077c827 same path for splat 2025-11-25 11:07:06 +02:00
5ac5f44baf Fixed splat level and added multi instance ndisplay 2025-11-25 09:50:34 +02:00
cb176cb748 switched to hap video 2025-11-18 16:17:39 +02:00
b325c16ef9 switched to hap video 2025-11-18 16:06:57 +02:00
c448f2e1c7 switched dslr video 2025-11-18 14:32:43 +02:00
c0107fcd8f switched dslr video 2025-11-18 14:31:26 +02:00
79d5e31031 switched dslr video 2025-11-18 14:29:38 +02:00
817114860d switched dslr video 2025-11-18 14:27:51 +02:00
1cb1bae4e1 switched dslr video 2025-11-18 14:26:04 +02:00
97a73132a3 switched dslr video 2025-11-18 14:21:31 +02:00
48246fe21c switched dslr video 2025-11-18 14:16:20 +02:00
8745bb22ed switched dslr video 2025-11-18 14:13:51 +02:00
57be6c2ae5 Added codec project settings 2025-11-18 14:08:57 +02:00
8da4c27904 switched dslr video 2025-11-18 12:30:09 +02:00
b6ec056734 switched dslr video 2025-11-18 12:07:49 +02:00
9bbfa88de0 switched dslr video 2025-11-18 11:42:21 +02:00
0bdba27e1f switched dslr video 2025-11-18 11:39:15 +02:00
f68b84b007 switched dslr video 2025-11-18 11:33:16 +02:00
d754f46d58 disabled adapt resolution in ndisplay 2025-11-18 10:32:50 +02:00
a3d21b4441 adjusted position of camera and ndisplay 2025-11-17 16:56:02 +02:00
e6b7d4fb24 added multi instance ndisplay config to australia level 2025-11-17 16:52:20 +02:00
9d1bc074b6 disabled full screen in instance 2 2025-11-17 16:33:16 +02:00
138b670be1 enabled fullscreen in all instances 2025-11-17 16:27:25 +02:00
ad4dd98f67 switched gpu indexes in multi instance config 2025-11-17 16:00:08 +02:00
553d696233 switched gpu index 2025-11-17 15:42:25 +02:00
18ec2efac4 removed gaussian setting 2025-11-17 15:30:37 +02:00
60fdb067b9 Added single instance ndisplay config and level 2025-11-17 15:17:49 +02:00
82c82f5c89 reversed gpus on viewports 2025-11-17 12:28:59 +02:00
1623007d94 Adjusted multi instance ndisplay settings 2025-11-14 09:36:13 +02:00
24c18db3c9 Separated ndisplay configs for multi gpu and multi instance 2025-11-14 08:58:26 +02:00
60c9f5c2a4 disabled media in icvfx camera 2025-11-13 13:20:53 +02:00
a88508018c New multi gpu config with all viewports 2025-11-13 13:11:53 +02:00
57 changed files with 183 additions and 2 deletions

View File

@@ -2,7 +2,7 @@
[/Script/EngineSettings.GameMapsSettings]
GameDefaultMap=/Engine/Maps/Templates/OpenWorld
EditorStartupMap=/Game/Levels/Lidinis360/Lidinis360.Lidinis360
EditorStartupMap=/Game/Levels/JoakemVideoClip/Joakem.Joakem
[/Script/Engine.RendererSettings]
r.AllowStaticLighting=False
@@ -84,10 +84,12 @@ FontDPI=72
+ActiveGameNameRedirects=(OldGameName="TP_Blank",NewGameName="/Script/DEV_TheStudio")
+ActiveGameNameRedirects=(OldGameName="/Script/TP_Blank",NewGameName="/Script/DEV_TheStudio")
bUseFixedFrameRate=True
FixedFrameRate=24.000000
FixedFrameRate=25.000000
CustomTimeStepClassName=/Game/TheStudio/Media/Sync/BlackMagicGencode.BlackMagicGencode_C
TimecodeProviderClassName=/Game/TheStudio/Media/Sync/DanteAudioTimecodeProvider.DanteAudioTimecodeProvider_C
NearClipPlane=0.100000
GenerateDefaultTimecodeFrameRate=(Numerator=25,Denominator=1)
GenerateDefaultTimecodeFrameDelay=2.000000
[/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings]
bEnablePlugin=True

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -415,6 +415,32 @@
{
"Name": "ElectraPlayer",
"Enabled": true
},
{
"Name": "AvidDNxHDDecoderElectra",
"Enabled": true,
"SupportedTargetPlatforms": [
"Win64"
]
},
{
"Name": "AppleProResDecoderElectra",
"Enabled": true,
"SupportedTargetPlatforms": [
"Win64"
]
},
{
"Name": "HAPDecoderElectra",
"Enabled": true,
"SupportedTargetPlatforms": [
"Win64",
"Mac"
]
},
{
"Name": "VPxDecoderElectra",
"Enabled": true
}
]
}

153
Source/git_management.bat Normal file
View File

@@ -0,0 +1,153 @@
# plugin_prelaunch.py - With connection check
from switchboard.devices.device_base import Device, DeviceStatus
from switchboard.devices.device_widget_base import DeviceWidget
from switchboard.switchboard_logging import LOGGER
from switchboard.config import IntSetting, StringSetting
from PySide6 import QtCore
class DevicePreLaunch(Device):
"""PreLaunch device - executes batch file on connect"""
csettings = {
'batch_file': StringSetting(
attr_name="batch_file",
nice_name="Batch File Path",
value="D:\\Projects\\DEV_TheStudio_Plugin\\Source\\git_management.bat",
tool_tip="Full path to the batch file on the remote machine",
category="PreLaunch Settings",
),
'port': IntSetting(
attr_name="port",
nice_name="Listener Port",
value=2980,
tool_tip="Port of SwitchboardListener",
category="Network Settings",
),
}
def __init__(self, name, address, **kwargs):
super().__init__(name, address, **kwargs)
LOGGER.info(f"PreLaunch device '{name}' created")
def device_settings(self):
return super().device_settings()
def connect(self):
"""Called when connect button clicked"""
LOGGER.info(f">>> {self.name}: connect() called!")
# First, check if listener is reachable
LOGGER.info(f">>> {self.name}: Checking listener connection...")
# Try a simple connectivity test
try:
# Send a simple test message
test_message = {'command': 'state'}
success, response = self.unreal_client.send_message(test_message)
if not success:
LOGGER.error(f">>> {self.name}: Cannot connect to listener!")
self.device_qt_handler.signal_device_connect_failed.emit(self)
return
LOGGER.info(f">>> {self.name}: Listener responded: {response}")
except Exception as e:
LOGGER.error(f">>> {self.name}: Connection test failed: {e}")
self.device_qt_handler.signal_device_connect_failed.emit(self)
return
# Set status to READY
self.status = DeviceStatus.READY
LOGGER.info(f">>> {self.name}: Status set to READY, executing batch file...")
# Execute batch file
self.execute_batch_file()
def disconnect(self):
"""Called when disconnect button clicked"""
LOGGER.info(f">>> {self.name}: disconnect() called!")
self.status = DeviceStatus.DISCONNECTED
def execute_batch_file(self):
"""Execute the batch file"""
batch_file = self.batch_file.get_value()
if not batch_file:
LOGGER.warning(f"  {self.name}: No batch file configured")
return False
LOGGER.info(f">>> {self.name}: ========== EXECUTING ==========")
LOGGER.info(f">>> {self.name}: File: {batch_file}")
LOGGER.info(f">>> {self.name}: Address: {self.address}")
LOGGER.info(f">>> {self.name}: Port: {self.port.get_value()}")
try:
message = {
'command': 'start',
'bTryKill': False,
'bUpdateWorkingDir': False,
'caller': self.name,
'name': 'cmd.exe',
'args': f'/c "{batch_file}"',
'working_dir': '',
}
LOGGER.info(f">>> {self.name}: Sending message...")
success, msg = self.unreal_client.send_message(message)
if success:
LOGGER.info(f">>>  {self.name}: SUCCESS!")
LOGGER.info(f">>> Response: {msg}")
return True
else:
LOGGER.error(f">>> L {self.name}: Send failed!")
return False
except Exception as e:
LOGGER.error(f">>> L {self.name}: ERROR: {e}")
import traceback
LOGGER.error(traceback.format_exc())
return False
class DeviceWidgetPreLaunch(DeviceWidget):
"""Widget for PreLaunch device"""
def __init__(self, name, device_hash, address, icons, parent=None):
super().__init__(name, device_hash, address, icons, parent=parent)
LOGGER.info(f"PreLaunch widget created for {name}")
def _add_control_buttons(self):
"""Add connect button"""
super()._add_control_buttons()
CONTROL_BUTTON_ICON_SIZE = QtCore.QSize(21, 21)
self.connect_button = self.add_control_button(
icon_size=CONTROL_BUTTON_ICON_SIZE,
checkable=True,
tool_tip='Connect and execute batch file',
hover_focus=False,
name='connect')
self.connect_button.clicked.connect(self.connect_button_clicked)
def connect_button_clicked(self):
"""Handle connect button click"""
if self.connect_button.isChecked():
self._connect()
else:
self._disconnect()
def _connect(self):
"""Connect"""
self.connect_button.setChecked(True)
self.signal_device_widget_connect.emit(self)
def _disconnect(self):
"""Disconnect"""
self.connect_button.setChecked(False)
self.signal_device_widget_disconnect.emit(self)