Files
2025-09-29 00:52:08 +02:00

142 lines
2.8 KiB
Python
Executable File

"""
Remote Console
"""
import clr
import sys
import os
from subprocess import Popen, PIPE, STDOUT
clr.AddReference("RSG.Base.Configuration")
from RSG.Base.Configuration import ConfigFactory
_config = ConfigFactory.CreateConfig()
"""
Public
"""
"""Write only."""
def AddCmd(data, value=None):
_writeQuery_(data, value, 'a')
return
"""Write and execute."""
def RunCmd(cmd=None, value=None ):
return _runRagCmd_(cmd,value, 'w')
"""Get Rag's IP connection"""
def GetIP():
return _getRagIP_()
"""
Private
"""
"""Write out our query for Rag to execute."""
_ragCmdPath = _config.ToolsTemp+"/cmd.txt"
""" GEt IP, revist this with a more robust porcess"""
def _getRagIP_():
_resetCmd_()
cmd = "debug"
_writeQuery_(cmd,None, 'w')
stdOut = _runRagProcess_()
for line in iter(stdOut.readline,''):
if "gameip" in line:
sline =line.split(',')
ip = sline[2].split(":")[1]
_resetCmd_()
return sline[2].split('"')[3]
def _runRagCmd_(cmd, value, mode):
result = False
if cmd:
_writeQuery_(cmd, value, mode)
print cmd
data = _runRagProcess_()
if data:
result = _readQuery_(data)
# Only reset the command after to have finished the read
_resetCmd_()
return result
def _writeQuery_(cmd, value, mode):
file = open(_ragCmdPath, mode)
file.write('widget "'+cmd+'"')
if value:
file.write(' '+value+'\n')
else:
file.write('\n')
file.close()
def _readQuery_(stdOut):
result = []
read = False
for line in iter(stdOut.readline,''):
if "closing" in line:
read = False
return result
if read == True:
#print line.strip('\n\r')
result.append(line.strip('\n\r'))
elif "cmd.txt" in line:
read = True
return result
"""Remove last commands from our Rag query"""
def _resetCmd_():
f = open(_ragCmdPath, 'w')
f.close()
"""Run our Rag Command."""
def _runRagProcess_():
if os.path.exists(_ragCmdPath):
cmd = "{path}/rag/ragCmd.exe {path2}"
cmd = cmd.format(path=_config.ToolsBin, path2=_ragCmdPath)
return _processCmd_(cmd)
return False
def _processCmd_(cmd):
p = Popen(cmd,shell=True, stdout=PIPE, stderr=STDOUT)
return p.stdout
""" EXAMPLE USAGE """
#AddCmd("Camera/Create camera widgets")
#AddCmd("Camera/Free camera/Override streaming focus", "true" )
#AddCmd("Camera/Frame propagator/Override FOV", "true")
#AddCmd("Camera/Free camera/Position Y")
#AddCmd("Camera/Free camera/Position Z")
#x =RunCmd()
#print x