void Start() { c_transform=transform; c_playerTransform=GameObject.FindGameObjectWithTag("Player").transform; c_lineRenderer=gameObject.GetComponent<LineRenderer>(); c_wireFrame=gameObject.GetComponent<WireFrame>(); }
public void Glue_SerializeDeserialize_WithHeadersWithChineseText() { var hdr = "<a><remote name='久有归天愿'/></a>"; var frm1 = new WireFrame(123, false, FID.Generate(), hdr); var utfLen = WireFrame.HEADERS_ENCODING.GetByteCount(hdr); Aver.IsTrue(utfLen > hdr.Length); Console.WriteLine("{0} has {1} byte len and {2} char len".Args(hdr, utfLen, hdr.Length)); Aver.AreEqual(WireFrame.FRAME_LENGTH + utfLen, frm1.Length); var ms = new MemoryStream(); Aver.AreEqual(WireFrame.FRAME_LENGTH + utfLen, frm1.Serialize(ms)); ms.Position = 0; var frm2 = new WireFrame(ms); Aver.IsTrue(frm1.Type == frm2.Type); Aver.AreEqual(frm1.RequestID, frm2.RequestID); Aver.AreEqual(frm1.OneWay, frm2.OneWay); Aver.AreEqual(frm1.Length, frm2.Length); Aver.AreEqual(frm1.Format, frm2.Format); Aver.AreEqual(frm1.HeadersContent, frm2.HeadersContent); Aver.IsFalse(frm2.OneWay); Aver.AreEqual("久有归天愿", frm2.Headers["remote"].AttrByName("name").Value); }
public void Echo_SerializeDeserialize() { var frm1 = new WireFrame(FrameType.Echo, 123, true, FID.Generate()); Assert.IsFalse(frm1.OneWay); Assert.AreEqual(WireFrame.FRAME_LENGTH, frm1.Length); var ms = new MemoryStream(); Assert.AreEqual(WireFrame.FRAME_LENGTH, frm1.Serialize(ms)); ms.Position = 0; var frm2 = new WireFrame(ms); Assert.AreEqual(frm1.Type, frm2.Type); Assert.AreEqual(frm1.RequestID, frm2.RequestID); Assert.AreEqual(frm1.OneWay, frm2.OneWay); Assert.AreEqual(frm1.Length, frm2.Length); Assert.AreEqual(frm1.Format, frm2.Format); Assert.AreEqual(frm1.HeadersContent, frm2.HeadersContent); Assert.IsFalse(frm2.OneWay); }
public void Glue_SerializeDeserialize_WithHeadersWithLatinText() { var hdr = "<a><remote name='zzz'/></a>";//Latin only chars var frm1 = new WireFrame(123, false, FID.Generate(), hdr); var utfLen = WireFrame.HEADERS_ENCODING.GetByteCount(hdr); Aver.IsTrue(utfLen == hdr.Length); Aver.AreEqual(WireFrame.FRAME_LENGTH + hdr.Length, frm1.Length); var ms = new MemoryStream(); Aver.AreEqual(WireFrame.FRAME_LENGTH + hdr.Length, frm1.Serialize(ms)); ms.Position = 0; var frm2 = new WireFrame(ms); Aver.IsTrue(frm1.Type == frm2.Type); Aver.AreEqual(frm1.RequestID, frm2.RequestID); Aver.AreEqual(frm1.OneWay, frm2.OneWay); Aver.AreEqual(frm1.Length, frm2.Length); Aver.AreEqual(frm1.Format, frm2.Format); Aver.AreEqual(frm1.HeadersContent, frm2.HeadersContent); Aver.IsFalse(frm2.OneWay); Aver.AreEqual("zzz", frm2.Headers["remote"].AttrByName("name").Value); }
public void HeartBeat_SerializeDeserialize() { var frm1 = new WireFrame(FrameType.Heartbeat, 123, false, FID.Generate()); Aver.IsTrue(frm1.OneWay); Aver.AreEqual(WireFrame.FRAME_LENGTH, frm1.Length); var ms = new MemoryStream(); Aver.AreEqual(WireFrame.FRAME_LENGTH, frm1.Serialize(ms)); ms.Position = 0; var frm2 = new WireFrame(ms); Aver.IsTrue(frm1.Type == frm2.Type); Aver.AreEqual(frm1.RequestID, frm2.RequestID); Aver.AreEqual(frm1.OneWay, frm2.OneWay); Aver.AreEqual(frm1.Length, frm2.Length); Aver.AreEqual(frm1.Format, frm2.Format); Aver.AreEqual(frm1.HeadersContent, frm2.HeadersContent); Aver.IsTrue(frm2.OneWay); }
public void Forward(WireFrame frame) { if (_dismissed) { return; } OtherEndpoint.Forward(frame); }
protected override RequestMsg DoDecodeRequest(WireFrame frame, MemoryStream ms, ISerializer serializer) { var utf8 = ms.GetBuffer(); var json = Encoding.UTF8.GetString(utf8, (int)ms.Position, (int)ms.Length - (int)ms.Position); var data = JSONReader.DeserializeDataObject(json) as JSONDataMap; if (data == null) { throw new ProtocolException(StringConsts.GLUE_BINDING_REQUEST_ERROR.Args(nameof(AppTermBinding), "data==null")); } var reqID = new FID(data["request-id"].AsULong(handling: ConvertErrorHandling.Throw)); //kuda ego vstavit? var instance = data["instance"].AsNullableGUID(handling: ConvertErrorHandling.Throw); var oneWay = data["one-way"].AsBool(); var method = data["method"].AsString(); MethodSpec mspec; if (method.EqualsOrdIgnoreCase(nameof(Contracts.IRemoteTerminal.Connect))) { mspec = AppTermBinding.METHOD_CONNECT; } else if (method.EqualsOrdIgnoreCase(nameof(Contracts.IRemoteTerminal.Execute))) { mspec = AppTermBinding.METHOD_EXECUTE; } else if (method.EqualsOrdIgnoreCase(nameof(Contracts.IRemoteTerminal.Disconnect))) { mspec = AppTermBinding.METHOD_DISCONNECT; } else { throw new ProtocolException(StringConsts.GLUE_BINDING_REQUEST_ERROR.Args(nameof(AppTermBinding), "unknown method `{0}`".Args(method))); } var args = data["command"] == null ? new object[0] : new object[] { data["command"].AsString() }; var result = new RequestAnyMsg(AppTermBinding.TYPE_CONTRACT, mspec, oneWay, instance, args); var autht = data["auth-token"].AsString(); if (autht != null) { var hdr = new AuthenticationHeader(Security.SkyAuthenticationTokenSerializer.Deserialize(autht)); result.Headers.Add(hdr); } var authc = data["auth-cred"].AsString(); if (authc != null) { var hdr = new AuthenticationHeader(Azos.Security.IDPasswordCredentials.FromBasicAuth(authc)); result.Headers.Add(hdr); } return(result); }
//OnInspectorGUIをoverrideする public override void OnInspectorGUI() { //デフォルトのInspectorを表示 DrawDefaultInspector(); WireFrame t = target as WireFrame; //描画モード変更 if (GUILayout.Button("描画モード更新")) { //押したときの処理 t.SetMT(); } }
protected override ResponseMsg DoDecodeResponse(WireFrame frame, MemoryStream ms) { var utf8 = ms.GetBuffer(); var json = Encoding.UTF8.GetString(utf8, (int)ms.Position, (int)ms.Length - (int)ms.Position); var data = json.JSONToDataObject() as JSONDataMap; if (data == null) { throw new ProtocolException(StringConsts.GLUE_BINDING_RESPONSE_ERROR.Args(nameof(AppTermBinding), "data==null")); } var reqID = new FID(data["request-id"].AsULong(handling: ConvertErrorHandling.Throw)); var instance = data["instance"].AsNullableGUID(handling: ConvertErrorHandling.Throw); object returnValue = data["return"]; if (returnValue == null || returnValue is string) { //return as-is } else if (returnValue is JSONDataMap map)//error or Remote Terminal { var errorContent = map["error-content"].AsString(); if (errorContent != null) { returnValue = WrappedExceptionData.FromBase64(errorContent); } else { returnValue = new Contracts.RemoteTerminalInfo(map); } } else { throw new ProtocolException(StringConsts.GLUE_BINDING_RESPONSE_ERROR.Args(nameof(AppTermBinding), "data.return is " + returnValue.GetType().FullName)); } var result = new ResponseMsg(reqID, instance, returnValue); return(result); }
public void Render(List <GameObject> terrains) { foreach (GameObject terrain in terrains) { var terrainComponent = terrain.GetComponent <Terrain>(); PrepareTerrain(terrainComponent); LoadModelMatrix(terrain); if (WireFrame.IsEnabled()) { GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line); } GL.DrawElements(BeginMode.Triangles, terrainComponent.model.vertexCount, DrawElementsType.UnsignedInt, 0); if (WireFrame.IsEnabled()) { GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill); } UnbindTexturedModel(); } }
public void Forward(WireFrame frame) { if (_dismissed) { return; } ++FrameCounter; if (_recursion || _frameBuffer.Count > 0 || _decide()) { _frameBuffer.Enqueue(frame); } else { _recursion = true; OtherEndpoint.Forward(frame); _recursion = false; } }
public void SetWireFrames(float distance) { for(int i=1 ; i<tr.Length ; i++){ wf=tr[i].GetComponent<WireFrame>(); lr=tr[i].GetComponent<LineRenderer>(); if(distance!=0){ if(!wf.enabled) wf.enabled=true; if(!lr.enabled) lr.enabled=true; }else{ if(wf.enabled) wf.enabled=false; if(lr.enabled) lr.enabled=false; } if(wf.enabled && lr.enabled){ tempVector3.x=((maxDistance-distance)/maxDistance)*thickness; lr.SetWidth(tempVector3.x, tempVector3.x); tempVector3.x=roughness*Random.value*3; lr.sharedMaterial.mainTextureScale = tempVector3; } } }
public void Render(Dictionary <TexturedModel, List <GameObject> > entities) { foreach (TexturedModel model in entities.Keys) { entities.TryGetValue(model, out List <GameObject> batch); PrepareTexturedModel(model); foreach (GameObject entity in batch) { PrepareInstance(entity); if (WireFrame.IsEnabled()) { GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line); } GL.DrawElements(BeginMode.Triangles, model.rawModel.vertexCount, DrawElementsType.UnsignedInt, 0); if (WireFrame.IsEnabled()) { GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill); } } UnbindTexturedModel(); } }
public void Forward(WireFrame frame) { _pump.Send(frame); }
private void Update(object sender, GameUpdatedEventArgs args) { if (!Focused) { return; } DebugScreenTexts(); if (Input.GetKeyDown(Key.Escape) || ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButtonDown(Buttons.Back)) { Exit(); } if (Input.GetKeyDown(Key.F) || ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButtonDown(Buttons.DPadDown)) { FrameRate.Enable(!FrameRate.IsEnabled()); } if (Input.GetKeyDown(Key.Z) || ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButtonDown(Buttons.DPadUp)) { WireFrame.Enable(!WireFrame.IsEnabled()); } if (Input.GetKeyDown(Key.Q) || ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButtonDown(Buttons.DPadLeft)) { ProfilerScreen.enabled = !ProfilerScreen.enabled; text1.enabled = !text1.enabled; text2.enabled = !text2.enabled; } if (Input.GetKeyDown(Key.G) || ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButtonDown(Buttons.Start)) { Gaming = !Gaming; } if (Input.GetKeyDown(Key.V) || ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButtonDown(Buttons.DPadRight)) { if (VSync == VSyncMode.Off) { VSync = VSyncMode.On; } else { VSync = VSyncMode.Off; } } if (Input.GetKeyDown(Key.L) || ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButtonDown(Buttons.LeftShoulder)) { Input.LockCursor(!Input.GetLockCursor()); Input.ShowCursor(!Input.GetCursorVisibility()); CameraFollowMouse = !CameraFollowMouse; if (Input.GetLockCursor()) { Input.SetMousePositionScreenCenter(0, 0); } } if (!Gaming) { const float cameraSpeed = 20.0f; if (Input.GetKey(Key.Space)) { MainCamera.gameObject.transform.position += MainCamera.gameObject.transform.Up * cameraSpeed * args.DeltaTime; } if (Input.GetKey(Key.ShiftLeft)) { MainCamera.gameObject.transform.position -= MainCamera.gameObject.transform.Up * cameraSpeed * args.DeltaTime; } if (ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButton(Buttons.A)) { MainCamera.gameObject.transform.position += MainCamera.gameObject.transform.Up * cameraSpeed * args.DeltaTime; } if (ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButton(Buttons.B)) { MainCamera.gameObject.transform.position -= MainCamera.gameObject.transform.Up * cameraSpeed * args.DeltaTime; } if (Input.GetKey(Key.A)) { MainCamera.gameObject.transform.position -= MainCamera.gameObject.transform.Right * cameraSpeed * args.DeltaTime; } if (Input.GetKey(Key.D)) { MainCamera.gameObject.transform.position += MainCamera.gameObject.transform.Right * cameraSpeed * args.DeltaTime; } if (ControllerManager.ControllerExists(0)) { MainCamera.gameObject.transform.position += MainCamera.gameObject.transform.Right * cameraSpeed * args.DeltaTime * ControllerManager.GetController(0).GetAxis(Controller.Axis.HorizontalLeft); } if (Input.GetKey(Key.W)) { MainCamera.gameObject.transform.position += MainCamera.gameObject.transform.Front * cameraSpeed * args.DeltaTime; } if (Input.GetKey(Key.S)) { MainCamera.gameObject.transform.position -= MainCamera.gameObject.transform.Front * cameraSpeed * args.DeltaTime; } if (ControllerManager.ControllerExists(0)) { MainCamera.gameObject.transform.position += MainCamera.gameObject.transform.Front * cameraSpeed * args.DeltaTime * ControllerManager.GetController(0).GetAxis(Controller.Axis.VerticalLeft); } if (CameraFollowMouse) { Vector2 delta = Input.GetMouseDelta(); var sensitivity = Camera.Sensitivity; if (ControllerManager.ControllerExists(0)) { var newDelta = ControllerManager.GetController(0).GetAxis(3, 4); if (Math.Abs(newDelta.X) + Math.Abs(newDelta.Y) > 0) { delta = newDelta; sensitivity = 100 * args.DeltaTime; } } if (Input.GetLockCursor()) { Input.SetMousePositionScreenCenter(0, 0); } MainCamera.gameObject.transform.Rotate(-delta.Y * sensitivity, -delta.X * sensitivity, 0); MainCamera.gameObject.transform.rotation = new Vector3(Math.Clamp(MainCamera.gameObject.transform.rotation.X, -89f, 89f), MainCamera.gameObject.transform.rotation.Y, MainCamera.gameObject.transform.rotation.Z); } } else { const float movementSpeed = 10.0f; var movement = Vector3.Zero; if (ControllerManager.ControllerExists(0)) { movement.Z = ControllerManager.GetController(0).GetAxis(Controller.Axis.VerticalLeft); } if (Input.GetKey(Key.W)) { movement.Z += 1; } if (Input.GetKey(Key.S)) { movement.Z -= 1; } if (ControllerManager.ControllerExists(0)) { movement.X = -ControllerManager.GetController(0).GetAxis(Controller.Axis.HorizontalLeft); } if (Input.GetKey(Key.A)) { movement.X += 1; } if (Input.GetKey(Key.D)) { movement.X -= 1; } if (CameraFollowMouse) { Vector2 delta = Input.GetMouseDelta(); if (ControllerManager.ControllerExists(0)) { var newDelta = ControllerManager.GetController(0).GetAxis(2, 3); if (Math.Abs(newDelta.X) > 0) { delta = newDelta; } } if (Input.GetLockCursor()) { Input.SetMousePositionScreenCenter(0, 0); } // if (delta.X < 0) MainCamera.gameObject.transform.position -= MainCamera.gameObject.transform.Right * 10 * args.DeltaTime; // if (delta.X > 0) MainCamera.gameObject.transform.position += MainCamera.gameObject.transform.Right * 10 * args.DeltaTime; // MainCamera.gameObject.transform.LookAt(player.transform.position); } else { if (movement.Z != 0 || movement.X != 0) { var camForward = MainCamera.gameObject.transform.Front; camForward.Y = 0; camForward.Normalize(); var camRight = MainCamera.gameObject.transform.Right; camRight.Y = 0; camRight.Normalize(); if (!Targeting) { var direction = player.transform.position + (camForward * -movement.Z + camRight * movement.X).Normalized(); player.transform.RotateTowardsTarget(direction, args.DeltaTime * 5, 270); } else { player.transform.RotateTowardsTarget(target.transform.position, 1, 90); } var movementVector = new Vector3(((camForward * -movement.Z + camRight * movement.X) * movementSpeed * args.DeltaTime).X, 0, ((camForward * -movement.Z + camRight * movement.X) * movementSpeed * args.DeltaTime).Z); player.transform.position -= movementVector; } var pos = player.transform.position; MainCamera.gameObject.transform.rotation = new Vector3(-15f, -180, MainCamera.gameObject.transform.rotation.Z); MainCamera.gameObject.transform.position = new Vector3(pos.X, pos.Y + 6, pos.Z - 7); } } }
public void BadPointers() { var data = new ulong[1]; var wf = new WireFrame(new Memory <ulong>[] { new Memory <ulong>(data) }); var d0 = DeserializerState.CreateRoot(wf); Assert.AreEqual(ObjectKind.Nil, d0.Kind); WirePointer p = default; p.BeginStruct(1, 0); p.Offset = 0; data[0] = p; Assert.ThrowsException <DeserializationException>(() => DeserializerState.CreateRoot(wf)); p.BeginList(ListKind.ListOfBits, 64); data[0] = p; Assert.ThrowsException <DeserializationException>(() => DeserializerState.CreateRoot(wf)); p.BeginList(ListKind.ListOfBytes, 8); data[0] = p; Assert.ThrowsException <DeserializationException>(() => DeserializerState.CreateRoot(wf)); p.BeginList(ListKind.ListOfEmpty, 6400); data[0] = p; var d1 = DeserializerState.CreateRoot(wf); p.BeginList(ListKind.ListOfInts, 2); data[0] = p; Assert.ThrowsException <DeserializationException>(() => DeserializerState.CreateRoot(wf)); p.BeginList(ListKind.ListOfLongs, 1); data[0] = p; Assert.ThrowsException <DeserializationException>(() => DeserializerState.CreateRoot(wf)); p.BeginList(ListKind.ListOfPointers, 1); data[0] = p; Assert.ThrowsException <DeserializationException>(() => DeserializerState.CreateRoot(wf)); p.BeginList(ListKind.ListOfShorts, 4); data[0] = p; Assert.ThrowsException <DeserializationException>(() => DeserializerState.CreateRoot(wf)); p.BeginList(ListKind.ListOfStructs, 1); data[0] = p; Assert.ThrowsException <DeserializationException>(() => DeserializerState.CreateRoot(wf)); p.SetFarPointer(0, 0, false); data[0] = p; Assert.ThrowsException <DeserializationException>(() => DeserializerState.CreateRoot(wf)); p.SetFarPointer(1, 0, false); data[0] = p; Assert.ThrowsException <DeserializationException>(() => DeserializerState.CreateRoot(wf)); p.SetFarPointer(0, 1, false); data[0] = p; Assert.ThrowsException <DeserializationException>(() => DeserializerState.CreateRoot(wf)); p.SetFarPointer(0, 0, true); data[0] = p; Assert.ThrowsException <DeserializationException>(() => DeserializerState.CreateRoot(wf)); var data2 = new ulong[3]; var wf2 = new WireFrame(new Memory <ulong>[] { new Memory <ulong>(data2) }); p.BeginList(ListKind.ListOfStructs, 1); data2[0] = p; data2[1] = p; Assert.ThrowsException <DeserializationException>(() => DeserializerState.CreateRoot(wf2)); p.SetFarPointer(0, 1, true); data2[0] = p; data2[1] = 0; Assert.ThrowsException <DeserializationException>(() => DeserializerState.CreateRoot(wf2)); p.SetFarPointer(0, 1, false); data2[1] = p; data2[2] = p; Assert.ThrowsException <DeserializationException>(() => DeserializerState.CreateRoot(wf2)); p.SetFarPointer(0, 2, true); data2[0] = p; Assert.ThrowsException <DeserializationException>(() => DeserializerState.CreateRoot(wf2)); }
private void Update(object sender, GameUpdatedEventArgs args) { if (!Focused) { return; } DebugScreenTexts(); if (lockToMouseObject != null) { if (Input.GetMouseButtonDown(MouseButton.Right)) { var component = lockToMouseObject.GetComponent <RaycastTarget>(); component.focused = false; component.onLoseFocus(); lockToMouseObject = null; return; } if (!Input.GetKey(Key.R)) { var mult = 5.25f; if (Input.GetKey(Key.Up)) { lockToMouseObject.transform.position += lockToMouseObject.transform.Up * args.DeltaTime * mult; } if (Input.GetKey(Key.Down)) { lockToMouseObject.transform.position -= lockToMouseObject.transform.Up * args.DeltaTime * mult; } if (Input.GetKey(Key.Left)) { lockToMouseObject.transform.position -= lockToMouseObject.transform.Right * args.DeltaTime * mult; } if (Input.GetKey(Key.Right)) { lockToMouseObject.transform.position += lockToMouseObject.transform.Right * args.DeltaTime * mult; } if (Input.GetKey(Key.ControlRight)) { lockToMouseObject.transform.position -= lockToMouseObject.transform.Front * args.DeltaTime * mult; } if (Input.GetKey(Key.ShiftRight)) { lockToMouseObject.transform.position += lockToMouseObject.transform.Front * args.DeltaTime * mult; } } else { var mult = 20; if (Input.GetKey(Key.Up)) { lockToMouseObject.transform.Rotate(lockToMouseObject.transform.Up * args.DeltaTime * mult); } if (Input.GetKey(Key.Down)) { lockToMouseObject.transform.Rotate(-lockToMouseObject.transform.Up * args.DeltaTime * mult); } if (Input.GetKey(Key.Left)) { lockToMouseObject.transform.Rotate(-lockToMouseObject.transform.Right * args.DeltaTime * mult); } if (Input.GetKey(Key.Right)) { lockToMouseObject.transform.Rotate(lockToMouseObject.transform.Right * args.DeltaTime * mult); } if (Input.GetKey(Key.ControlRight)) { lockToMouseObject.transform.Rotate(-lockToMouseObject.transform.Front * args.DeltaTime * mult); } if (Input.GetKey(Key.ShiftRight)) { lockToMouseObject.transform.Rotate(lockToMouseObject.transform.Front * args.DeltaTime * mult); } } } if (Input.GetKeyDown(Key.Escape) || ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButtonDown(Buttons.Back)) { Exit(); } if (Input.GetKeyDown(Key.F) || ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButtonDown(Buttons.DPadDown)) { FrameRate.Enable(!FrameRate.IsEnabled()); } if (Input.GetKeyDown(Key.Z) || ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButtonDown(Buttons.DPadUp)) { WireFrame.Enable(!WireFrame.IsEnabled()); } if (Input.GetKeyDown(Key.Q) || ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButtonDown(Buttons.DPadLeft)) { ProfilerScreen.enabled = !ProfilerScreen.enabled; text1.enabled = !text1.enabled; text2.enabled = !text2.enabled; } if (Input.GetKeyDown(Key.V) || ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButtonDown(Buttons.DPadRight)) { if (VSync == VSyncMode.Off) { VSync = VSyncMode.On; } else { VSync = VSyncMode.Off; } } if (Input.GetKeyDown(Key.L) || ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButtonDown(Buttons.LeftShoulder)) { Input.LockCursor(!Input.GetLockCursor()); Input.ShowCursor(!Input.GetCursorVisibility()); CameraFollowMouse = !CameraFollowMouse; if (Input.GetLockCursor()) { Input.SetMousePositionScreenCenter(0, 0); } } const float cameraSpeed = 5; if (Input.GetKey(Key.Space)) { MainCamera.gameObject.transform.position += MainCamera.gameObject.transform.Up * cameraSpeed * args.DeltaTime; } if (Input.GetKey(Key.ShiftLeft)) { MainCamera.gameObject.transform.position -= MainCamera.gameObject.transform.Up * cameraSpeed * args.DeltaTime; } if (ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButton(Buttons.A)) { MainCamera.gameObject.transform.position += MainCamera.gameObject.transform.Up * cameraSpeed * args.DeltaTime; } if (ControllerManager.ControllerExists(0) && ControllerManager.GetController(0).GetButton(Buttons.B)) { MainCamera.gameObject.transform.position -= MainCamera.gameObject.transform.Up * cameraSpeed * args.DeltaTime; } if (Input.GetKey(Key.A)) { MainCamera.gameObject.transform.position -= MainCamera.gameObject.transform.Right * cameraSpeed * args.DeltaTime; } if (Input.GetKey(Key.D)) { MainCamera.gameObject.transform.position += MainCamera.gameObject.transform.Right * cameraSpeed * args.DeltaTime; } if (ControllerManager.ControllerExists(0)) { MainCamera.gameObject.transform.position += MainCamera.gameObject.transform.Right * cameraSpeed * args.DeltaTime * ControllerManager.GetController(0).GetAxis(Controller.Axis.HorizontalLeft); } if (Input.GetKey(Key.W)) { MainCamera.gameObject.transform.position += MainCamera.gameObject.transform.Front * cameraSpeed * args.DeltaTime; } if (Input.GetKey(Key.S)) { MainCamera.gameObject.transform.position -= MainCamera.gameObject.transform.Front * cameraSpeed * args.DeltaTime; } if (ControllerManager.ControllerExists(0)) { MainCamera.gameObject.transform.position += MainCamera.gameObject.transform.Front * cameraSpeed * args.DeltaTime * ControllerManager.GetController(0).GetAxis(Controller.Axis.VerticalLeft); } if (CameraFollowMouse) { Vector2 delta = Input.GetMouseDelta(); var sensitivity = Camera.Sensitivity; if (ControllerManager.ControllerExists(0)) { var newDelta = ControllerManager.GetController(0).GetAxis(3, 4); if (Math.Abs(newDelta.X) + Math.Abs(newDelta.Y) > 0) { delta = newDelta; sensitivity = 100 * args.DeltaTime; } } if (Input.GetLockCursor()) { Input.SetMousePositionScreenCenter(0, 0); } MainCamera.gameObject.transform.Rotate(-delta.Y * sensitivity, -delta.X * sensitivity, 0); MainCamera.gameObject.transform.rotation = new Vector3(Math.Clamp(MainCamera.gameObject.transform.rotation.X, -89f, 89f), MainCamera.gameObject.transform.rotation.Y, MainCamera.gameObject.transform.rotation.Z); } }
/// <summary> /// Processes a sent or received RPC frame /// </summary> /// <param name="dir">frame direction</param> /// <param name="frame">actual frame</param> public void TraceFrame(FrameDirection dir, WireFrame frame) { if (!_timer.IsRunning) { _timer.Start(); } _traceWriter.Write($@"{_timer.ElapsedTicks, 10} | {Thread.CurrentThread.ManagedThreadId, 10} | "); _traceWriter.Write(dir == FrameDirection.Tx ? "Tx |" : "Rx |"); var dec = DeserializerState.CreateRoot(frame); var msg = Message.READER.create(dec); string tag; switch (msg.which) { case Message.WHICH.Abort: _traceWriter.WriteLine($"ABORT {msg.Abort.Reason}"); break; case Message.WHICH.Bootstrap: tag = dir == FrameDirection.Tx ? "Q" : "A"; _traceWriter.WriteLine($"BOOTSTRAP {tag}{msg.Bootstrap.QuestionId}"); break; case Message.WHICH.Call: tag = dir == FrameDirection.Tx ? "Q" : "A"; _traceWriter.Write($"CALL {tag}{msg.Call.QuestionId}, I: {msg.Call.InterfaceId:x} M: {msg.Call.MethodId} "); RenderMessageTarget(msg.Call.Target, dir); _traceWriter.Write(HeaderSpace); _traceWriter.WriteLine($"Send results to {msg.Call.SendResultsTo.which}"); RenderCapTable(msg.Call.Params.CapTable, dir); break; case Message.WHICH.Disembargo: _traceWriter.Write($"DISEMBARGO {msg.Disembargo.Context.which}"); switch (msg.Disembargo.Context.which) { case Disembargo.context.WHICH.Provide: _traceWriter.Write($" {msg.Disembargo.Context.Provide}"); break; case Disembargo.context.WHICH.ReceiverLoopback: _traceWriter.Write($" E{msg.Disembargo.Context.ReceiverLoopback}"); break; case Disembargo.context.WHICH.SenderLoopback: _traceWriter.Write($" E{msg.Disembargo.Context.SenderLoopback}"); break; } _traceWriter.WriteLine("."); _traceWriter.Write(HeaderSpace); RenderMessageTarget(msg.Disembargo.Target, dir); break; case Message.WHICH.Finish: tag = dir == FrameDirection.Tx ? "Q" : "A"; _traceWriter.WriteLine($"FINISH {tag}{msg.Finish.QuestionId}, release: {msg.Finish.ReleaseResultCaps}"); break; case Message.WHICH.Release: tag = dir == FrameDirection.Tx ? "CR" : "CL"; _traceWriter.WriteLine($"RELEASE {tag}{msg.Release.Id}, count: {msg.Release.ReferenceCount}"); break; case Message.WHICH.Resolve: tag = dir == FrameDirection.Tx ? "CL" : "CR"; _traceWriter.Write($"RESOLVE {tag}{msg.Resolve.PromiseId}: {msg.Resolve.which}"); switch (msg.Resolve.which) { case Resolve.WHICH.Cap: RenderCapDescriptor(msg.Resolve.Cap, dir); _traceWriter.WriteLine("."); break; case Resolve.WHICH.Exception: _traceWriter.WriteLine($" {msg.Resolve.Exception.Reason}"); break; } break; case Message.WHICH.Return: tag = dir == FrameDirection.Tx ? "A" : "Q"; _traceWriter.Write($"RETURN {tag}{msg.Return.AnswerId} {msg.Return.which}"); switch (msg.Return.which) { case Return.WHICH.Exception: _traceWriter.WriteLine($" {msg.Return.Exception.Reason}"); break; case Return.WHICH.Results: _traceWriter.WriteLine($", release: {msg.Return.ReleaseParamCaps}"); RenderCapTable(msg.Return.Results.CapTable, dir); break; case Return.WHICH.TakeFromOtherQuestion: tag = dir == FrameDirection.Tx ? "Q" : "A"; _traceWriter.WriteLine($" {tag}{msg.Return.TakeFromOtherQuestion}"); break; default: _traceWriter.WriteLine(); break; } break; case Message.WHICH.Unimplemented: _traceWriter.WriteLine($"UNIMPLEMENTED {msg.Unimplemented.which}"); break; case Message.WHICH.Accept: _traceWriter.WriteLine("ACCEPT"); break; case Message.WHICH.Join: _traceWriter.WriteLine("JOIN"); break; case Message.WHICH.Provide: _traceWriter.WriteLine($"PROVIDE {msg.Provide.QuestionId}"); RenderMessageTarget(msg.Provide.Target, dir); break; case Message.WHICH.ObsoleteDelete: _traceWriter.WriteLine("OBSOLETEDELETE"); break; case Message.WHICH.ObsoleteSave: _traceWriter.WriteLine("OBSOLETESAVE"); break; default: _traceWriter.WriteLine($"Unknown message {msg.which}"); break; } }