⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spark.rb

📁 rcssserver3d Robocup 3D比赛官方指定平台
💻 RB
📖 第 1 页 / 共 2 页
字号:
## spark.rb, setup kerosin application framework### define constants used to setup spark## scene and server path$scenePath = '/usr/scene/'$serverPath = '/sys/server/'# (Inputsystem)## the default InputSystem used to read keyboard, mouse and timer input$defaultInputSystem = 'InputSystemSDL'# the name of the default bundle that contains the default InputSystem$defaultInputSystemBundle = 'inputsdl'# (OpenGL rendering)## the default OpenGLSystem used for rendering$defaultOpenGLSystem = 'OpenGLSystemSDL'# the name of the bundle that contains the default OpenGLSystem$defaultOpenGLBundle = 'openglsyssdl'## (AgentControl) constants#$agentStep = 0.02$agentType = 'tcp'$agentPort = 3100# (MonitorControl) constants## define the monitor update interval in cycles$renderStep = 0.04$monitorLoggerStep = 0.2;$monitorStep = 0.04$serverType = 'tcp'$serverPort = 3200# (SparkMonitorClient) constants#$monitorServer = '127.0.0.1'$monitorPort = 3200# socket type ('tcp' or 'udp')$monitorType = 'tcp'# (Global Physics / World) constants#$physicsGlobalCFM = 0.00001$physicsGlobalGravity = -9.81## below is a set of utility functions for the user app## return the existing instance or create a new onedef sparkGetOrCreate(className, path)  obj = get(path)  if (obj != nil)    return obj  end  #print "(spark.rb) creating "  #print className  #print " instance at "  #print path  #print "\n"  return new(className, path)end# delete any existing instance and create a new onedef sparkCreate(className, path)  delete(path)  #print "(spark.rb) creating "  #print className  #print " instance at "  #print path  #print "\n"  return new(className, path)enddef sparkGetMonitorServer  return sparkGetOrCreate('oxygen/MonitorServer', $serverPath+'monitor')enddef sparkGetPhysicsServer  return sparkGetOrCreate('oxygen/PhysicsServer', $serverPath+'physics')enddef sparkGetSceneServer  return sparkGetOrCreate('oxygen/SceneServer', $serverPath+'scene')enddef sparkGetGameControlServer  return sparkGetOrCreate('oxygen/GameControlServer', $serverPath+'gamecontrol')enddef sparkGetSimulationServer  return sparkGetOrCreate('oxygen/SimulationServer', $serverPath+'simulation')enddef sparkGetGeometryServer  return sparkGetOrCreate('oxygen/GeometryServer', $serverPath+'geometry')enddef sparkGetMaterialServer  return sparkGetOrCreate('kerosin/MaterialServer', $serverPath+'material')enddef sparkGetOpenGLServer  return sparkGetOrCreate('kerosin/OpenGLServer', $serverPath+'opengl')enddef sparkGetInputServer  return sparkGetOrCreate('kerosin/InputServer', $serverPath+'input')enddef sparkGetFontServer  return sparkGetOrCreate('kerosin/FontServer', $serverPath+'font')enddef sparkGetRenderServer  return sparkGetOrCreate('kerosin/RenderServer', $serverPath+'render')enddef sparkGetImageServer  return sparkGetOrCreate('kerosin/ImageServer', $serverPath+'image')enddef sparkGetTextureServer  return sparkGetOrCreate('kerosin/TextureServer', $serverPath+'texture')end# rebuild scene and update all cached referencesdef sparkResetScene  scene = get($scenePath)  if (scene != nil)    scene.unlinkChildren()  end  # (re-)create world and space aspects  world = new('oxygen/World', $scenePath+'world')  world.setGravity(0.0, 0.0, $physicsGlobalGravity)  world.setCFM($physicsGlobalCFM)  world.setAutoDisableFlag(true)             #not in simspark  world.setContactSurfaceLayer(0.001)	     #not in simspark  new('oxygen/Space', $scenePath+'space')  # invalidate all cached references  scriptServer = get($serverPath+'script')  if (scriptServer != nil)    scriptServer.updateCachedAllNodes()  end  # force update references to scene objects (world, space etc.)  sceneServer = sparkGetSceneServer()  if (sceneServer != nil)    sceneServer.setActiveScene($scenePath)  end  # reset material definitions  materialServer = sparkGetMaterialServer()  materialServer.resetMaterials()  # reset simulation time  simulationServer = sparkGetSimulationServer()  if (simulationServer != nil)    simulationServer.resetTime()  endenddef sparkSetupMonitor  print "(spark.rb) sparkSetupMonitor\n"  # add the agent control node  simulationServer = sparkGetSimulationServer()  if (simulationServer != nil)    simulationServer.setMultiThreads(false)  end  monitorClient = sparkCreate('SparkMonitorClient', $serverPath+'simulation/SparkMonitorClient')  monitorClient.setServer($monitorServer)  monitorClient.setPort($monitorPort)  if ($monitorType == 'udp')    monitorClient.setClientTypeUDP()  else if ($monitorType == 'tcp')	 monitorClient.setClientTypeTCP()       else	 print "(spark.rb) unknown monitor socket type "	 print $monitorType	 print "\n"       end  end  rubySceneImporter = get($serverPath+'scene/RubySceneImporter')  if (rubySceneImporter != nil)    rubySceneImporter.setUnlinkOnCompleteScenes(true);  endenddef sparkSetupMonitorLogPlayer  print "(spark.rb) sparkSetupMonitorLogPlayer\n"  simulationServer = sparkGetSimulationServer()  if (simulationServer != nil)    simulationServer.setMultiThreads(false)    monitorClient = sparkCreate('SparkMonitorLogFileServer', $serverPath+'simulation/SparkMonitorLogFileServer')    monitorClient.setFileName($logPlayerFile)    monitorClient.setStepDelay(33000)  end  rubySceneImporter = get($serverPath+'scene/RubySceneImporter')  if (rubySceneImporter != nil)    rubySceneImporter.setUnlinkOnCompleteScenes(true);  endend## install a class below the SparkMonitorClient that implementes the# simulation specific monitor processing#def sparkRegisterCustomMonitor(className)  print "(spark.rb) sparkRegisterCustomMonitor " + className + "\n"  sparkGetSimulationServer()  sparkCreate(className, $serverPath+'simulation/SparkMonitorClient/'+className)end## install a class below the Spark RenderControl node that implements# application specific render logic#def sparkRegisterCustomRender(className)  print "(spark.rb) sparkRegisterCustomRender " + className + "\n"  sparkGetSimulationServer()  sparkCreate(className, $serverPath+'simulation/RenderControl/'+className)end## install a class below the Spark InputControl node that implements# application specific input processing#def sparkRegisterCustomInput(className)  print "(spark.rb) sparkRegisterCustomInput " + className + "\n"  sparkGetSimulationServer()  sparkCreate(className, $serverPath+'simulation/InputControl/'+className)end## install a class below the Spark MonitorSystem node that parses# commands received from a monitor client#def sparkRegisterMonitorCmdParser(className)  print "(spark.rb) sparkRegisterMonitorCmdParser " + className + "\n"  sparkGetMonitorServer()  sparkCreate(className, $serverPath+'monitor/SparkMonitor/'+className)enddef sparkSetupServer  print "(spark.rb) sparkSetupServer\n"  # add the agent control node  simulationServer = sparkGetSimulationServer()  if (simulationServer != nil)    simulationServer.setMultiThreads(false);    simulationServer.initControlNode('oxygen/AgentControl','AgentControl')    # set auto speed adjust mode.    # a smaller value for MaxStepsPerCycle is recommended specially for slow systems    simulationServer.setAdjustSpeed(true)    simulationServer.setMaxStepsPerCyle(3)  end  # set port and socket type for agent control  agentControl = get($serverPath+'simulation/AgentControl');  if (agentControl != nil)    agentControl.setServerPort($agentPort)    agentControl.setStep($agentStep)  end  if ($agentType == 'udp')	agentControl.setServerTypeUDP()  else if ($agentType == 'tcp')	agentControl.setServerTypeTCP()       else	 print "(spark.rb) unknown agent socket type "	 print $agentType	 print "\n"       end  end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -