public Game(Connection serverConnection) { _serverConnection = serverConnection; IPlayerController controller; try { var port = new SerialPort(SerialPort.GetPortNames()[0], 115200, Parity.None); port.Open(); port.Close(); _inputManager = new GamepadInputManager(); _inputManager.sendData(1); controller = new GamepadController(_inputManager, _entityManager); } catch (Exception e) { controller = new KeyboardController(_entityManager); } Player player = new Player(new Vector2f(300.0f, 300.0f), controller, playerTexture, healthBarTexture, _entityManager, camera) { Active = true }; _entityManager.Add(player); _entityManager.ActivePlayer = player; _sceneBuffer = new SceneBuffer(playerTexture, healthBarTexture, _entityManager); _serverConnection.SetCallback((connection, data) => { _sceneBuffer.Process(data); }); }
internal RenderManager(Engine engine) { this.engine = engine; cameraManager = engine.CameraManager; sceneBuffer = engine.Device.CreateBuffer <SceneBuffer>(BufferTypeEnum.ConstVertex, 1); objectBuffer = engine.Device.CreateBuffer <ObjectBuffer>(BufferTypeEnum.ConstVertex, 1); pixelShaderSceneBuffer = engine.Device.CreateBuffer <PixelShaderSceneBuffer>(BufferTypeEnum.ConstPixel, 1); instancesBuffer = engine.Device.CreateBuffer <Matrix>(BufferTypeEnum.Vertex, 1); instancesArray = new Matrix[1]; renderers = new Dictionary <ShaderHandle, Dictionary <Material, Dictionary <Mesh, List <Transform> > > >(); sceneData = new SceneBuffer(); defaultSampler = engine.Device.CreateSampler(); depthStencilZWrite = engine.Device.CreateDepthStencilState(true); depthStencilNoZWrite = engine.Device.CreateDepthStencilState(false); renderTexture = engine.Device.CreateRenderTexture((int)engine.WindowHost.WindowWidth, (int)engine.WindowHost.WindowHeight); outlineTexture = engine.Device.CreateRenderTexture((int)engine.WindowHost.WindowWidth, (int)engine.WindowHost.WindowHeight); planeMesh = engine.MeshManager.CreateMesh(new ScreenPlane()); blitShader = engine.ShaderManager.LoadShader("../internalShaders/blit.shader"); blitMaterial = engine.MaterialManager.CreateMaterial(blitShader); unlitMaterial = engine.MaterialManager.CreateMaterial(engine.ShaderManager.LoadShader("../internalShaders/unlit.shader")); }
/// <summary> /// Calls into the Scene Understanding APIs, to retrieve the latest scene as a byte array. /// </summary> /// <param name="enableQuads">When enabled, quad representation of scene objects is retrieved.</param> /// <param name="enableMeshes">When enabled, mesh representation of scene objects is retrieved.</param> /// <param name="enableInference">When enabled, both observed and inferred scene objects are retrieved. Otherwise, only observed scene objects are retrieved.</param> /// <param name="enableWorldMesh">When enabled, retrieves the world mesh.</param> /// <param name="lod">If world mesh is enabled, lod controls the resolution of the mesh returned.</param> private void RetrieveData(float boundingSphereRadiusInMeters, bool enableQuads, bool enableMeshes, bool enableInference, bool enableWorldMesh, SceneMeshLevelOfDetail lod) { Debug.Log("SceneUnderstandingManager.RetrieveData: Started."); System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); try { SceneQuerySettings querySettings; querySettings.EnableSceneObjectQuads = enableQuads; querySettings.EnableSceneObjectMeshes = enableMeshes; querySettings.EnableOnlyObservedSceneObjects = !enableInference; querySettings.EnableWorldMesh = enableWorldMesh; querySettings.RequestedMeshLevelOfDetail = lod; // Ensure that the bounding radius is within the min/max range. boundingSphereRadiusInMeters = Mathf.Clamp(boundingSphereRadiusInMeters, MinBoundingSphereRadiusInMeters, MaxBoundingSphereRadiusInMeters); // Make sure the scene query has completed swap with latestSUSceneData under lock to ensure the application is always pointing to a valid scene. SceneBuffer serializedScene = SceneObserver.ComputeSerializedAsync(querySettings, boundingSphereRadiusInMeters).GetAwaiter().GetResult(); lock (SUDataLock) { // The latest data queried from the device is stored in these variables LatestSUSceneData = new byte[serializedScene.Size]; serializedScene.GetData(LatestSUSceneData); LatestSceneGuid = Guid.NewGuid(); } } catch (Exception e) { Debug.LogException(e); } stopwatch.Stop(); Debug.Log(string.Format("SceneUnderstandingManager.RetrieveData: Completed. Radius: {0}; Quads: {1}; Meshes: {2}; Inference: {3}; WorldMesh: {4}; LOD: {5}; Bytes: {6}; Time (secs): {7};", boundingSphereRadiusInMeters, enableQuads, enableMeshes, enableInference, enableWorldMesh, lod, (LatestSUSceneData == null ? 0 : LatestSUSceneData.Length), stopwatch.Elapsed.TotalSeconds)); }
public NetworkController(SceneBuffer buffer, int id) { _buffer = buffer; Id = id; }