Compare commits
19 Commits
multi-inst
...
joakem-vid
| Author | SHA1 | Date | |
|---|---|---|---|
| 10a2e23c19 | |||
| 6b3b52966d | |||
| cad01ca11d | |||
| 22566b6767 | |||
| 98780c7aae | |||
| 0f9d0455ef | |||
| aa350d3c44 | |||
| 4fbd6d0538 | |||
| 82f9d06c77 | |||
| 92ab98604a | |||
| 7577315b80 | |||
| fa12826333 | |||
| 13293bf32f | |||
| c43c96dbf1 | |||
| 686b148d3f | |||
| 64b69b8ede | |||
| a283fdeff7 | |||
| b3ed8e9223 | |||
| 865ddf77aa |
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
[/Script/EngineSettings.GameMapsSettings]
|
[/Script/EngineSettings.GameMapsSettings]
|
||||||
GameDefaultMap=/Engine/Maps/Templates/OpenWorld
|
GameDefaultMap=/Engine/Maps/Templates/OpenWorld
|
||||||
EditorStartupMap=/Game/Levels/Lidinis360/Lidinis360.Lidinis360
|
EditorStartupMap=/Game/Levels/JoakemVideoClip/Joakem.Joakem
|
||||||
|
|
||||||
[/Script/Engine.RendererSettings]
|
[/Script/Engine.RendererSettings]
|
||||||
r.AllowStaticLighting=False
|
r.AllowStaticLighting=False
|
||||||
@@ -84,10 +84,12 @@ FontDPI=72
|
|||||||
+ActiveGameNameRedirects=(OldGameName="TP_Blank",NewGameName="/Script/DEV_TheStudio")
|
+ActiveGameNameRedirects=(OldGameName="TP_Blank",NewGameName="/Script/DEV_TheStudio")
|
||||||
+ActiveGameNameRedirects=(OldGameName="/Script/TP_Blank",NewGameName="/Script/DEV_TheStudio")
|
+ActiveGameNameRedirects=(OldGameName="/Script/TP_Blank",NewGameName="/Script/DEV_TheStudio")
|
||||||
bUseFixedFrameRate=True
|
bUseFixedFrameRate=True
|
||||||
FixedFrameRate=24.000000
|
FixedFrameRate=25.000000
|
||||||
CustomTimeStepClassName=/Game/TheStudio/Media/Sync/BlackMagicGencode.BlackMagicGencode_C
|
CustomTimeStepClassName=/Game/TheStudio/Media/Sync/BlackMagicGencode.BlackMagicGencode_C
|
||||||
TimecodeProviderClassName=/Game/TheStudio/Media/Sync/DanteAudioTimecodeProvider.DanteAudioTimecodeProvider_C
|
TimecodeProviderClassName=/Game/TheStudio/Media/Sync/DanteAudioTimecodeProvider.DanteAudioTimecodeProvider_C
|
||||||
NearClipPlane=0.100000
|
NearClipPlane=0.100000
|
||||||
|
GenerateDefaultTimecodeFrameRate=(Numerator=25,Denominator=1)
|
||||||
|
GenerateDefaultTimecodeFrameDelay=2.000000
|
||||||
|
|
||||||
[/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings]
|
[/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings]
|
||||||
bEnablePlugin=True
|
bEnablePlugin=True
|
||||||
|
|||||||
BIN
Content/LevelSnapshots/Joakem/01_THEME_1_INTRO_WIDE_SHOT.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/01_THEME_1_INTRO_WIDE_SHOT.uasset
Normal file
Binary file not shown.
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/05_THEME_1_ANGRY_1.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/05_THEME_1_ANGRY_1.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/06_THEME_1_ANGRY_2.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/06_THEME_1_ANGRY_2.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/07_THEME_1_ANGRY_3.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/07_THEME_1_ANGRY_3.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/08_THEME_1_ANGRY_4.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/08_THEME_1_ANGRY_4.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/09_THEME_2_CHORUS.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/09_THEME_2_CHORUS.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/10_THEME_2_CHORUS.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/10_THEME_2_CHORUS.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/11_THEME_2_CHORUS.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/11_THEME_2_CHORUS.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/12_THEME_2_INTRO.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/12_THEME_2_INTRO.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/13_THEME_2_INTRO.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/13_THEME_2_INTRO.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/14_THEME_2_INTRO.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/14_THEME_2_INTRO.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/15_THEME_2_BLACK_METAL.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/15_THEME_2_BLACK_METAL.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/16_THEME_2_TSUNAMI.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/16_THEME_2_TSUNAMI.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/17_THEME_2_TSUNAMI_2.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/17_THEME_2_TSUNAMI_2.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/18_THEME_2_TSUNAMI_3.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/18_THEME_2_TSUNAMI_3.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/19_THEME_2_EARTHQUAKE.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/19_THEME_2_EARTHQUAKE.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/20_THEME_2_EARTHQUAKE.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/20_THEME_2_EARTHQUAKE.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/21_THEME_3_CHORUS.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/21_THEME_3_CHORUS.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/22_THEME_3_CHORUS.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/22_THEME_3_CHORUS.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/23_THEME_3_CHORUS.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/23_THEME_3_CHORUS.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/24_THEME_3_KEYBOARD.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/24_THEME_3_KEYBOARD.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/25_THEME_3_KEYBOARD.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/25_THEME_3_KEYBOARD.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/26_THEME_3_SPOTLIGHT.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/26_THEME_3_SPOTLIGHT.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/27_THEME_3_OUTRO.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/27_THEME_3_OUTRO.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/28_THEME_3_OUTRO.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/28_THEME_3_OUTRO.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/29_THEME_3_OUTRO.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/29_THEME_3_OUTRO.uasset
Normal file
Binary file not shown.
BIN
Content/LevelSnapshots/Joakem/30_THEME_3_OUTRO.uasset
Normal file
BIN
Content/LevelSnapshots/Joakem/30_THEME_3_OUTRO.uasset
Normal file
Binary file not shown.
Binary file not shown.
BIN
Content/Levels/JoakemVideoClip/DEV_Remote.uasset
Normal file
BIN
Content/Levels/JoakemVideoClip/DEV_Remote.uasset
Normal file
Binary file not shown.
BIN
Content/Levels/JoakemVideoClip/Joakem.umap
Normal file
BIN
Content/Levels/JoakemVideoClip/Joakem.umap
Normal file
Binary file not shown.
BIN
Content/Levels/JoakemVideoClip/JoakemPlayer_Video.uasset
Normal file
BIN
Content/Levels/JoakemVideoClip/JoakemPlayer_Video.uasset
Normal file
Binary file not shown.
BIN
Content/Levels/JoakemVideoClip/MetalVideoClipSingleInstance.umap
Normal file
BIN
Content/Levels/JoakemVideoClip/MetalVideoClipSingleInstance.umap
Normal file
Binary file not shown.
BIN
Content/Levels/JoakemVideoClip/RemoteWeb_Joakem.uasset
Normal file
BIN
Content/Levels/JoakemVideoClip/RemoteWeb_Joakem.uasset
Normal file
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.
@@ -1,47 +1,153 @@
|
|||||||
@echo off
|
# plugin_prelaunch.py - With connection check
|
||||||
REM ---------------------------------------------
|
from switchboard.devices.device_base import Device, DeviceStatus
|
||||||
REM Safe Switchboard External Command: Git Pull
|
from switchboard.devices.device_widget_base import DeviceWidget
|
||||||
REM Discards local changes, pulls latest from current branch
|
from switchboard.switchboard_logging import LOGGER
|
||||||
REM Safe to keep inside the Git repo
|
from switchboard.config import IntSetting, StringSetting
|
||||||
REM ---------------------------------------------
|
|
||||||
|
|
||||||
REM Change this to your project repo path (can be inside repo)
|
from PySide6 import QtCore
|
||||||
set REPO_PATH=D:\Projects\DEV_TheStudio_Plugin
|
|
||||||
|
|
||||||
REM Name of this batch file
|
|
||||||
set BATCH_NAME=%~nx0
|
|
||||||
|
|
||||||
echo ------------------------------------------------
|
class DevicePreLaunch(Device):
|
||||||
echo [%COMPUTERNAME%] Starting safe Git pull on %REPO_PATH%
|
"""PreLaunch device - executes batch file on connect"""
|
||||||
echo ------------------------------------------------
|
|
||||||
|
|
||||||
REM Navigate to the repo
|
csettings = {
|
||||||
cd /d "%REPO_PATH%"
|
'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",
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
REM Ensure Git is installed
|
def __init__(self, name, address, **kwargs):
|
||||||
where git >nul 2>&1
|
super().__init__(name, address, **kwargs)
|
||||||
IF %ERRORLEVEL% NEQ 0 (
|
LOGGER.info(f"PreLaunch device '{name}' created")
|
||||||
echo ERROR: Git is not installed or not in PATH
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
|
|
||||||
REM Get current branch
|
def device_settings(self):
|
||||||
for /f "tokens=*" %%i in ('git rev-parse --abbrev-ref HEAD') do set CURRENT_BRANCH=%%i
|
return super().device_settings()
|
||||||
echo Current branch: %CURRENT_BRANCH%
|
|
||||||
|
|
||||||
REM Discard any local changes (staged and unstaged)
|
def connect(self):
|
||||||
git reset --hard
|
"""Called when connect button clicked"""
|
||||||
|
LOGGER.info(f">>> {self.name}: connect() called!")
|
||||||
|
|
||||||
REM Clean untracked files and directories, excluding this batch file
|
# First, check if listener is reachable
|
||||||
git clean -fdX -e "%BATCH_NAME%"
|
LOGGER.info(f">>> {self.name}: Checking listener connection...")
|
||||||
|
|
||||||
REM Pull latest changes from origin for current branch
|
# Try a simple connectivity test
|
||||||
git pull origin %CURRENT_BRANCH%
|
try:
|
||||||
|
# Send a simple test message
|
||||||
|
test_message = {'command': 'state'}
|
||||||
|
success, response = self.unreal_client.send_message(test_message)
|
||||||
|
|
||||||
REM Show status
|
if not success:
|
||||||
git status
|
LOGGER.error(f">>> {self.name}: Cannot connect to listener!")
|
||||||
|
self.device_qt_handler.signal_device_connect_failed.emit(self)
|
||||||
|
return
|
||||||
|
|
||||||
echo ------------------------------------------------
|
LOGGER.info(f">>> {self.name}: Listener responded: {response}")
|
||||||
echo [%COMPUTERNAME%] Git pull complete
|
|
||||||
echo ------------------------------------------------
|
except Exception as e:
|
||||||
pause
|
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)
|
||||||
Reference in New Issue
Block a user