📄 spark.rb
字号:
monitorControl = sparkCreate('oxygen/MonitorControl',$serverPath+'simulation/MonitorControl') monitorControl.setStep($monitorStep) monitorControl.setServerPort($serverPort) if ($serverType == 'udp') monitorControl.setServerTypeUDP() else if ($serverType == 'tcp') monitorControl.setServerTypeTCP() else print "(spark.rb) unknown monitor socket type " print $serverType print "\n" end end # # log recording setup if ($recordLogfile == true) print "(spark.rb) recording Logfile as 'sparkmonitor.log'\n" monitorLogger = sparkCreate('oxygen/MonitorLogger', $serverPath+'simulation/MonitorLogger') monitorLogger.setStep($monitorLoggerStep) endenddef sparkSetupRendering(openGLSystem = $defaultOpenGLSystem) print "(spark.rb) sparkSetupRendering\n" print "(spark.rb) using OpenGLSystem '" + openGLSystem + "'\n" # # setup the kerosin render framework openGLServer = sparkGetOpenGLServer() if (openGLSystem == $defaultOpenGLSystem) importBundle($defaultOpenGLBundle) end openGLServer.init(openGLSystem) sparkGetRenderServer() sparkGetImageServer() sparkGetTextureServer() # # setup the InputServer # create the InputServer and use a german keyboard layout inputServer = sparkGetInputServer() inputServer.setScanCodeMapping('german.scan.rb'); # setup the FontServer sparkGetFontServer() # # register render control node to the simulation server simulationServer = sparkGetSimulationServer() if (simulationServer != nil) simulationServer.initControlNode('kerosin/RenderControl','RenderControl') end renderControl = get($serverPath+'simulation/RenderControl') if (renderControl != nil) renderControl.setStep($renderStep) endenddef sparkSetupInput(inputSystem = $defaultInputSystem) print "(spark.rb) sparkSetupInput\n" print "(spark.rb) using InputSystem '" + inputSystem + "'\n" # setup the SDL input system if (inputSystem == $defaultInputSystem) importBundle($defaultInputSystemBundle) end inputServer = sparkGetInputServer() if (inputServer != nil) inputServer.init(inputSystem) # add devices inputServer.createDevice('Timer') inputServer.createDevice('Keyboard') inputServer.createDevice('Mouse') end # # register input control node to the simulation server simulationServer = sparkGetSimulationServer() if (simulationServer != nil) # add the input control node simulationServer.initControlNode('kerosin/InputControl','InputControl') endenddef sparkSetupTrain() print "(spark.rb) sparkSetupTrain\n" # # register train control node to the simulation server simulationServer = sparkGetSimulationServer() if (simulationServer != nil) # add the train control node simulationServer.initControlNode('oxygen/TrainControl','TrainControl') endend# add a camera with an FPS Controller to the scene at pathdef sparkAddFPSCamera( path, x = 0.0, y = 0.0, z = 4, vAngle = 45.0, hAngle = 10.0, maxSpeed = 15.0, accel = 40.0, drag = 4, addCollider = false, colliderRadius = 2.0, znear = 0.1 ) print "(spark.rb) sparkAddFPSCamera at " + path + "\n" # add a camera. The camera movement is controlled using an # FPSController. cameraTransform = sparkCreate('oxygen/Transform',path) cameraTransform.setLocalPos(x,y,z) camera = new('oxygen/Camera',path+'/camera') camera.setZNear(znear) # the camera is not affected by gravity but restricted to a maximum # speed body = new('oxygen/Body',path+'/physics') body.useGravity(false); velCtr = new('oxygen/VelocityController',path+'/physics/velctr') velCtr.setMaxVelocity(maxSpeed) # add an FPSController to move the camera and set the applied # acceleration fpsController = new('oxygen/FPSController',path+'/physics/controller') fpsController.setAcceleration(accel) fpsController.setVAngle(vAngle) fpsController.setHAngle(hAngle) inputControl = get($serverPath+'simulation/InputControl') if (inputControl != nil) inputControl.setFPSController(path+'/physics/controller') end # add an DragController to work against the camera acceleration dragController = new('oxygen/DragController',path+'/physics/drag') dragController.setLinearDrag(drag) if addCollider # add an Collider that allows the camera to push objects collider = new('oxygen/SphereCollider', path+'/geometry') collider.setRadius(colliderRadius) handler = new('oxygen/ContactJointHandler', path+'geometry/contact') handler.setContactBounceMode true handler.setMinBounceVel 2 endend## registers a new logTarget to the LogServer## valid logTarget value are ':cout' and ':cerr' for stdout and stderr# output, as well as any other file name, e.g. 'log.txt'## logType denotes the debug to be attached to the# logtarget. Valid streams are 'eNone', 'eDebug' and 'eWarning'#def sparkEnableLog(logTarget, logType) print "(spark.rb) sparkEnableLog logTarget="+logTarget+" logType="+logType+"\n" logServer = get($serverPath+'log') if (logServer != nil) logServer.addStream(logTarget, logType) endend# deregisters all output streamdef sparkResetLogging() print "(spark.rb) sparkResetLogging removing all log targets\n"; logServer = get($serverPath+'log') if (logServer != nil) logServer.removeAllStreams() endend# logs all error output to cerrdef sparkLogErrorToCerr() sparkEnableLog(':cerr', 'eError')end# logs all debug output to cerrdef sparkLogDebugToCerr() sparkEnableLog(':cerr', 'eDebug')end# logs all output to cerrdef sparkLogAllToCerr() sparkEnableLog(':cerr', 'eAll')end# logs all error output to 'fileName'def sparkLogErrorToFile(fileName) sparkEnableLog(fileName, 'eError')end# logs all debug output to 'fileName'def sparkLogDebugToFile(fileName) sparkEnableLog(fileName, 'eDebug')end# logs all output to 'fileName'def sparkLogAllToFile(fileName) sparkEnableLog(fileName, 'eAll')end# register an integrated agentdef addIntegratedAgent(agentType, number) sparkGetOrCreate(agentType, "/usr/agent/behavior#{number}")end## setup spark#print "(spark.rb) setup\n"## set up logginglogServer = get($serverPath+'log')if (logServer != nil) logServer.addStream(':cerr', 'eError')end## setup the PhysicsServersparkGetPhysicsServer()## setup the SceneServersceneServer = sparkGetSceneServer()sceneServer.createScene($scenePath)## setup the GeometryServerimportBundle 'voidmeshimporter'importBundle 'objimporter'geometryServer = sparkGetGeometryServer()geometryServer.initMeshImporter("VoidMeshImporter");geometryServer.initMeshImporter("ObjImporter");# use the ruby scene importer to import scenesimportBundle 'rubysceneimporter'sceneServer.initSceneImporter("RubySceneImporter");# use the ros scene importer to import scenesimportBundle 'rosimporter'sceneServer.initSceneImporter("RosImporter");## setup the MaterialServersparkGetMaterialServer()## setup the MonitorServermonitorServer = sparkGetMonitorServer()# register the SparkMonitor systemimportBundle 'sparkmonitor'monitorServer.registerMonitorSystem('SparkMonitor')## setup the GameControlServergameControlServer = sparkGetGameControlServer()# register the s-expression parser to the GameControlServerimportBundle "sexpparser"gameControlServer.initParser('SexpParser')# register the SceneEffector to the GameControlServerimportBundle "sceneeffector"gameControlServer.initEffector('SceneEffector')# prepare scenesparkResetScene()## import the spark perceptors and effector setimportBundle "sparkagent"#importBundle "gyrorateperceptor"#importBundle "collisionperceptor"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -