public void SessionTest1() { using var session = fht.NewSession(new Functions()); InputStruct input = default; OutputStruct output = default; var key1 = new KeyStruct { kfield1 = 13, kfield2 = 14 }; var value = new ValueStruct { vfield1 = 23, vfield2 = 24 }; session.Upsert(ref key1, ref value, Empty.Default, 0); var status = session.Read(ref key1, ref input, ref output, Empty.Default, 0); if (status == Status.PENDING) { session.CompletePending(true); } else { Assert.IsTrue(status == Status.OK); } Assert.IsTrue(output.value.vfield1 == value.vfield1); Assert.IsTrue(output.value.vfield2 == value.vfield2); }
protected new void Start() { base.Start(); Background.SetBackgroundColor(Color.black); _textStyle = new GUIStyle(); _textStyle.alignment = TextAnchor.MiddleCenter; _textStyle.normal.textColor = Color.white; _puzzle = gameObject.AddComponent <LightsOutScript>(); _previousInput = mainmenu.Escape; mainmenu.Escape = new InputStruct(KeyCode.Escape); _puzzle.Open(); (_solver = gameObject.AddComponent <LightsOutSolver>()).enabled = false; int keypressed = MyInputs.GetNumberPressed(Input.GetKey); if (Input.GetKey(KeyCode.P)) { keypressed += 10; } else if (keypressed < 2) { keypressed = 10; } //Debug.Log(keypressed); _puzzle.CreateBoard(keypressed, keypressed, Color.red, Color.green); LightsOutScript.ActiveDdebug = true; LightsOutScript.Square.EdgeSizeRatio = 50f / 1920f; }
static void RotateInput(ref InputStruct __instance) { Vector2 leftInput = RotateInputVector2(__instance.leftX, __instance.leftY); Vector2 rightInput = RotateInputVector2(__instance.rightX, __instance.rightY); if ((settings.switchFlipSticks && PlayerController.Instance.IsSwitch) || (settings.regularFlipSticks && !PlayerController.Instance.IsSwitch)) { __instance.leftX = rightInput.x; __instance.leftY = rightInput.y; __instance.rightX = leftInput.x; __instance.rightY = leftInput.y; } else { __instance.leftX = leftInput.x; __instance.leftY = leftInput.y; __instance.rightX = rightInput.x; __instance.rightY = rightInput.y; } if ((settings.switchInvertX && PlayerController.Instance.IsSwitch) || (settings.regularInvertX && !PlayerController.Instance.IsSwitch)) { __instance.leftX = -__instance.leftX; __instance.rightX = -__instance.rightX; } if ((settings.switchInvertY && PlayerController.Instance.IsSwitch) || (settings.regularInvertY && !PlayerController.Instance.IsSwitch)) { __instance.leftY = -__instance.leftY; __instance.rightY = -__instance.rightY; } }
public override byte[] Format(InputStruct message) { var r_message = (WriteRequestSiemensInputStruct)message; byte[] valueBytes = BigEndianValueHelper.Instance.ObjectArrayToByteArray(r_message.WriteValue); const byte protoId = 0x32; const byte rosctr = 0x01; const ushort redId = 0x0000; ushort pduRef = r_message.PduRef; const ushort parLg = 14; // 参数字节数(2+12的倍数),目前仅为14 ushort datLg = (ushort)(4 + valueBytes.Length); // 数据字节数 const byte serviceId = 0x05; const byte numberOfVariables = 1; const byte variableSpec = 0x12; const byte vAddrLg = 0x0A; const byte syntaxId = 0x10; const byte typeR = (byte)SiemensTypeCode.Byte; ushort numberOfElements = (ushort)valueBytes.Length; ushort dbBlock = r_message.DbBlock; byte area = r_message.Area; int offsetBit = r_message.Offset * 8; byte[] offsetBitBytes = BigEndianValueHelper.Instance.GetBytes(offsetBit); const byte reserved = 0x00; const byte type = (byte)SiemensDataType.OtherAccess; ushort numberOfWriteBits = (ushort)(valueBytes.Length * 8); return(Format(new byte[7], protoId, rosctr, redId, pduRef, parLg, datLg, serviceId, numberOfVariables , variableSpec, vAddrLg, syntaxId, typeR, numberOfElements, dbBlock, area, offsetBitBytes.Skip(1).ToArray(), reserved, type, numberOfWriteBits, valueBytes)); }
public void ReadNoRefKeyInputOutput([Values] TestUtils.DeviceType deviceType) { InputStruct input = default; Setup(128, new LogSettings { MemorySizeBits = 22, SegmentSizeBits = 22, PageSizeBits = 10 }, deviceType); uContext.ResumeThread(); try { var key1 = new KeyStruct { kfield1 = 13, kfield2 = 14 }; var value = new ValueStruct { vfield1 = 23, vfield2 = 24 }; uContext.Upsert(ref key1, ref value, Empty.Default, 0); var status = uContext.Read(key1, input, out OutputStruct output, Empty.Default, 111); AssertCompleted(new(StatusCode.Found), status); // Verify the read data Assert.AreEqual(value.vfield1, output.value.vfield1); Assert.AreEqual(value.vfield2, output.value.vfield2); Assert.AreEqual(key1.kfield1, 13); Assert.AreEqual(key1.kfield2, 14); } finally { uContext.SuspendThread(); } }
public void NativeInMemWriteRead([Values] TestUtils.DeviceType deviceType) { Setup(128, new LogSettings { PageSizeBits = 10, MemorySizeBits = 12, SegmentSizeBits = 22 }, deviceType); uContext.ResumeThread(); try { InputStruct input = default; OutputStruct output = default; var key1 = new KeyStruct { kfield1 = 13, kfield2 = 14 }; var value = new ValueStruct { vfield1 = 23, vfield2 = 24 }; uContext.Upsert(ref key1, ref value, Empty.Default, 0); var status = uContext.Read(ref key1, ref input, ref output, Empty.Default, 0); AssertCompleted(new (StatusCode.Found), status); Assert.AreEqual(value.vfield1, output.value.vfield1); Assert.AreEqual(value.vfield2, output.value.vfield2); } finally { uContext.SuspendThread(); } }
public void Move(ref PhysicsVelocity rb, ref PhysicsMass mass, ref InputStruct input, ref PhysicsControllerStruct playerData, ref LocalToWorld toWorld, ref Rotation rot, ref Translation trans) { float3 targetVelocity = new float3(); float speed = 9; float gravity = 4; //Set target to input velocity targetVelocity.x = input.move.x; targetVelocity.z = input.move.y; //Calculate how fast we should be moving targetVelocity = TransformDirection(toWorld.Value, targetVelocity); //Change from local space to world space targetVelocity *= speed * deltaTime * 100; //Apply a force that attempts to reach our target velocity float3 velocityChange = (targetVelocity - rb.Linear); velocityChange.y = -gravity * deltaTime * 10; //Apply gravity to the player //Mouse movement rb.Angular.y = -input.mouseX * 2; //* deltaTime; mass.InverseInertia[0] = 0; mass.InverseInertia[2] = 0; if (playerData.isGrounded && input.jump && playerData.timeSinceLastJump > .1f) { velocityChange.y = 10; playerData.timeSinceLastJump = 0; } playerData.timeSinceLastJump += deltaTime; rb.ApplyLinearImpulse(mass, velocityChange); }
public void SessionTest4() { using var session1 = fht.NewSession(new Functions()); using var session2 = fht.NewSession(new Functions()); var t1 = Task.CompletedTask.ContinueWith((t) => { InputStruct input = default; OutputStruct output = default; var key1 = new KeyStruct { kfield1 = 14, kfield2 = 15 }; var value1 = new ValueStruct { vfield1 = 24, vfield2 = 25 }; session1.Upsert(ref key1, ref value1, Empty.Default, 0); var status = session1.Read(ref key1, ref input, ref output, Empty.Default, 0); if (status.IsPending) { session1.CompletePendingWithOutputs(out var outputs, wait: true); (status, output) = GetSinglePendingResult(outputs); } Assert.IsTrue(status.Found); Assert.AreEqual(value1.vfield1, output.value.vfield1); Assert.AreEqual(value1.vfield2, output.value.vfield2); }); var t2 = Task.CompletedTask.ContinueWith((t) => { InputStruct input = default; OutputStruct output = default; var key2 = new KeyStruct { kfield1 = 15, kfield2 = 16 }; var value2 = new ValueStruct { vfield1 = 25, vfield2 = 26 }; session2.Upsert(ref key2, ref value2, Empty.Default, 0); var status = session2.Read(ref key2, ref input, ref output, Empty.Default, 0); if (status.IsPending) { session2.CompletePendingWithOutputs(out var outputs, wait: true); (status, output) = GetSinglePendingResult(outputs); } Assert.IsTrue(status.Found); Assert.AreEqual(value2.vfield1, output.value.vfield1); Assert.AreEqual(value2.vfield2, output.value.vfield2); }); t1.Wait(); t2.Wait(); }
public override byte[] Format(InputStruct message) { var r_message = (WriteRequestOpcInputStruct)message; byte[] tag = Encoding.UTF8.GetBytes(r_message.Tag); return(Format((byte)0x00, tag, (int)0x00ffff00, r_message.SetValue.GetType().FullName, (int)0x00ffff00, r_message.SetValue)); }
public void SessionTest1() { using var session = fht.NewSession(new Functions()); InputStruct input = default; OutputStruct output = default; var key1 = new KeyStruct { kfield1 = 13, kfield2 = 14 }; var value = new ValueStruct { vfield1 = 23, vfield2 = 24 }; session.Upsert(ref key1, ref value, Empty.Default, 0); var status = session.Read(ref key1, ref input, ref output, Empty.Default, 0); if (status.IsPending) { session.CompletePendingWithOutputs(out var outputs, wait: true); (status, output) = GetSinglePendingResult(outputs); } Assert.IsTrue(status.Found); Assert.AreEqual(value.vfield1, output.value.vfield1); Assert.AreEqual(value.vfield2, output.value.vfield2); }
public override byte[] Format(InputStruct message) { var r_message = (ReadRequestSiemensInputStruct)message; const byte protoId = 0x32; const byte rosctr = 0x01; const ushort redId = 0x0000; ushort pduRef = r_message.PduRef; const ushort parLg = 14; // 参数字节数(2+12的倍数),目前仅为14 const ushort datLg = 0; // 数据字节数 const byte serviceId = 0x04; const byte numberOfVariables = 1; const byte variableSpec = 0x12; const byte vAddrLg = 0x0A; const byte syntaxId = 0x10; byte type = r_message.TypeCode; ushort numberOfElements = r_message.NumberOfElements; ushort dbBlock = r_message.DbBlock; byte area = r_message.Area; int offsetBit = r_message.Offset * 8; byte[] offsetBitBytes = BigEndianValueHelper.Instance.GetBytes(offsetBit); return(Format(new byte[7], protoId, rosctr, redId, pduRef, parLg, datLg, serviceId, numberOfVariables , variableSpec, vAddrLg, syntaxId, type, numberOfElements, dbBlock, area, offsetBitBytes.Skip(1).ToArray())); }
public void SessionTest3() { using var session = fht.NewSession(new Functions()); Task.CompletedTask.ContinueWith((t) => { InputStruct input = default; OutputStruct output = default; var key1 = new KeyStruct { kfield1 = 13, kfield2 = 14 }; var value = new ValueStruct { vfield1 = 23, vfield2 = 24 }; session.Upsert(ref key1, ref value, Empty.Default, 0); var status = session.Read(ref key1, ref input, ref output, Empty.Default, 0); if (status == Status.PENDING) { session.CompletePending(true); } else { Assert.AreEqual(Status.OK, status); } Assert.AreEqual(value.vfield1, output.value.vfield1); Assert.AreEqual(value.vfield2, output.value.vfield2); }).Wait(); }
void RecievedTime(InputStruct msg) { if (msg.ObjectID == lobbyUDP.teamID) { LocalInputRecievetime = msg.ClientTime; InputRecievedTimeText.text = "Recieved Time:" + LocalInputRecievetime.ToString(); if (StartPredictng == true) { if (lobbyUDP.teamID == 1) { newPlayer2.IsPredicting = true; StartPredictng = false; } if (lobbyUDP.teamID == 2) { newPlayer1.IsPredicting = true; StartPredictng = false; } } } else { OtherInputRecievetime = msg.ClientTime; OtherRecievedTimeText.text = "OtherRecievedTime:" + OtherInputRecievetime.ToString(); StartRewinding = true; } }
public override byte[] Format(InputStruct message) { var r_message = (GetSystemTimeModbusInputStruct)message; return(Format(r_message.BelongAddress, r_message.FunctionCode, r_message.StartAddress, r_message.GetCount)); }
public override async Task<OutputStruct> SendReceiveAsync(ProtocalUnit unit, InputStruct content) { if (!ProtocalLinker.IsConnected) { if (connectTryCount > 10) return null; return await await ConnectAsync().ContinueWith(answer => answer.Result ? base.SendReceiveAsync(unit, content) : null); } return await base.SendReceiveAsync(unit, content); }
public override byte[] Format(InputStruct message) { var r_message = (SetSystemTimeModbusInputStruct)message; return(Format(r_message.BelongAddress, r_message.FunctionCode, r_message.StartAddress, r_message.WriteCount, r_message.WriteByteCount, r_message.Year, r_message.Day, r_message.Month, r_message.Hour, r_message.Second, r_message.Minute, r_message.Millisecond)); }
public override byte[] Format(InputStruct message) { var r_message = (WriteDataModbusInputStruct)message; byte[] formattingBytes = Format(r_message.BelongAddress, r_message.FunctionCode, r_message.StartAddress, r_message.WriteCount, r_message.WriteByteCount, r_message.WriteValue); formattingBytes[6] = (byte)(formattingBytes.Length - 7); return(formattingBytes); }
// Update is called once per frame void Update() { //We can get the struct easily InputStruct s = mInterface.Value; //This does not work: //mInterface.Value = s; //We cannot write to the value. Well we can, but nothing with actually happen. //It doesn't update the value from the monobehaviour }
public void ResetInputs() { inputsThisFrame = 0; totalInputs = new InputStruct() { hasVertical = false, hasHorizontal = false, horizontal = 0, vertical = 0 }; }
public void UpdateInputs() { totalInputs = new InputStruct() { hasVertical = totalInputs.hasVertical || Input.GetAxis("Jump") >= 0.25f, hasHorizontal = totalInputs.hasHorizontal || (Mathf.Abs(Input.GetAxis("Horizontal")) > 0.1f), horizontal = totalInputs.horizontal + Input.GetAxis("Horizontal"), vertical = totalInputs.vertical + Input.GetAxis("Jump") }; inputsThisFrame++; }
static bool Prefix(InputThread __instance) { int _pos = Traverse.Create(__instance).Field("_pos").GetValue <int>(); GamePadState state = Traverse.Create(__instance).Field("state").GetValue <GamePadState>(); InputStruct _lastFrameData = Traverse.Create(__instance).Field("_lastFrameData").GetValue <InputStruct>(); if (_pos < __instance._maxLength) { if (state.IsConnected) { __instance.inputsIn[_pos].leftX = __instance.leftXFilter.Filter((double)state.ThumbSticks.Left.X); __instance.inputsIn[_pos].leftY = __instance.leftYFilter.Filter((double)state.ThumbSticks.Left.Y); __instance.inputsIn[_pos].rightX = __instance.rightXFilter.Filter((double)state.ThumbSticks.Right.X); __instance.inputsIn[_pos].rightY = __instance.rightYFilter.Filter((double)state.ThumbSticks.Right.Y); RotateInput(ref __instance.inputsIn[_pos]); __instance.inputsIn[_pos].time = DateTime.UtcNow.Ticks; __instance.inputsIn[_pos].leftXVel = Traverse.Create(__instance).Method("GetVel", __instance.inputsIn[_pos].leftX, _lastFrameData.leftX, __instance.inputsIn[_pos].time, _lastFrameData.time).GetValue <float>(); __instance.inputsIn[_pos].leftYVel = Traverse.Create(__instance).Method("GetVel", __instance.inputsIn[_pos].leftY, _lastFrameData.leftY, __instance.inputsIn[_pos].time, _lastFrameData.time).GetValue <float>(); __instance.inputsIn[_pos].rightXVel = Traverse.Create(__instance).Method("GetVel", __instance.inputsIn[_pos].rightX, _lastFrameData.rightX, __instance.inputsIn[_pos].time, _lastFrameData.time).GetValue <float>(); __instance.inputsIn[_pos].rightYVel = Traverse.Create(__instance).Method("GetVel", __instance.inputsIn[_pos].rightY, _lastFrameData.rightY, __instance.inputsIn[_pos].time, _lastFrameData.time).GetValue <float>(); _lastFrameData.leftX = __instance.inputsIn[_pos].leftX; _lastFrameData.leftY = __instance.inputsIn[_pos].leftY; _lastFrameData.rightX = __instance.inputsIn[_pos].rightX; _lastFrameData.rightY = __instance.inputsIn[_pos].rightY; _lastFrameData.time = __instance.inputsIn[_pos].time; Traverse.Create(__instance).Field("_lastFrameData").SetValue(_lastFrameData); Traverse.Create(__instance).Field("_pos").SetValue(_pos + 1); return(false); } if (__instance.inputController == null || Traverse.Create(__instance.inputController).Field("player").GetValue() == null) { return(false); } __instance.inputsIn[_pos].leftX = __instance.leftXFilter.Filter((double)((Mathf.Abs(Traverse.Create(__instance).Method("GetAxisLX").GetValue <float>()) < 0.1f) ? 0f : Traverse.Create(__instance).Method("GetAxisLX").GetValue <float>())); __instance.inputsIn[_pos].leftY = __instance.leftYFilter.Filter((double)Traverse.Create(__instance).Method("GetAxisLY").GetValue <float>()); __instance.inputsIn[_pos].rightX = __instance.rightXFilter.Filter((double)((Mathf.Abs(Traverse.Create(__instance).Method("GetAxisRX").GetValue <float>()) < 0.1f) ? 0f : Traverse.Create(__instance).Method("GetAxisRX").GetValue <float>())); __instance.inputsIn[_pos].rightY = __instance.rightYFilter.Filter((double)Traverse.Create(__instance).Method("GetAxisRY").GetValue <float>()); RotateInput(ref __instance.inputsIn[_pos]); __instance.inputsIn[_pos].time = DateTime.UtcNow.Ticks; __instance.inputsIn[_pos].leftXVel = Traverse.Create(__instance).Method("GetVel", __instance.inputsIn[_pos].leftX, _lastFrameData.leftX, __instance.inputsIn[_pos].time, _lastFrameData.time).GetValue <float>(); __instance.inputsIn[_pos].leftYVel = Traverse.Create(__instance).Method("GetVel", __instance.inputsIn[_pos].leftY, _lastFrameData.leftY, __instance.inputsIn[_pos].time, _lastFrameData.time).GetValue <float>(); __instance.inputsIn[_pos].rightXVel = Traverse.Create(__instance).Method("GetVel", __instance.inputsIn[_pos].rightX, _lastFrameData.rightX, __instance.inputsIn[_pos].time, _lastFrameData.time).GetValue <float>(); __instance.inputsIn[_pos].rightYVel = Traverse.Create(__instance).Method("GetVel", __instance.inputsIn[_pos].rightY, _lastFrameData.rightY, __instance.inputsIn[_pos].time, _lastFrameData.time).GetValue <float>(); _lastFrameData.leftX = __instance.inputsIn[_pos].leftX; _lastFrameData.leftY = __instance.inputsIn[_pos].leftY; _lastFrameData.rightX = __instance.inputsIn[_pos].rightX; _lastFrameData.rightY = __instance.inputsIn[_pos].rightY; _lastFrameData.time = __instance.inputsIn[_pos].time; Traverse.Create(__instance).Field("_lastFrameData").SetValue(_lastFrameData); Traverse.Create(__instance).Field("_pos").SetValue(_pos + 1); } return(false); }
public void SessionTest2() { using (var session1 = fht.NewSession()) using (var session2 = fht.NewSession()) { InputStruct input = default(InputStruct); OutputStruct output = default(OutputStruct); var key1 = new KeyStruct { kfield1 = 14, kfield2 = 15 }; var value1 = new ValueStruct { vfield1 = 24, vfield2 = 25 }; var key2 = new KeyStruct { kfield1 = 15, kfield2 = 16 }; var value2 = new ValueStruct { vfield1 = 25, vfield2 = 26 }; session1.Upsert(ref key1, ref value1, Empty.Default, 0); session2.Upsert(ref key2, ref value2, Empty.Default, 0); var status = session1.Read(ref key1, ref input, ref output, Empty.Default, 0); if (status == Status.PENDING) { session1.CompletePending(true); } else { Assert.IsTrue(status == Status.OK); } Assert.IsTrue(output.value.vfield1 == value1.vfield1); Assert.IsTrue(output.value.vfield2 == value1.vfield2); status = session2.Read(ref key2, ref input, ref output, Empty.Default, 0); if (status == Status.PENDING) { session2.CompletePending(true); } else { Assert.IsTrue(status == Status.OK); } Assert.IsTrue(output.value.vfield1 == value2.vfield1); Assert.IsTrue(output.value.vfield2 == value2.vfield2); } }
public void SessionTest2() { using var session1 = fht.NewSession(new Functions()); using var session2 = fht.NewSession(new Functions()); InputStruct input = default; OutputStruct output = default; var key1 = new KeyStruct { kfield1 = 14, kfield2 = 15 }; var value1 = new ValueStruct { vfield1 = 24, vfield2 = 25 }; var key2 = new KeyStruct { kfield1 = 15, kfield2 = 16 }; var value2 = new ValueStruct { vfield1 = 25, vfield2 = 26 }; session1.Upsert(ref key1, ref value1, Empty.Default, 0); session2.Upsert(ref key2, ref value2, Empty.Default, 0); var status = session1.Read(ref key1, ref input, ref output, Empty.Default, 0); if (status == Status.PENDING) { session1.CompletePending(true); } else { Assert.AreEqual(Status.OK, status); } Assert.AreEqual(value1.vfield1, output.value.vfield1); Assert.AreEqual(value1.vfield2, output.value.vfield2); status = session2.Read(ref key2, ref input, ref output, Empty.Default, 0); if (status == Status.PENDING) { session2.CompletePending(true); } else { Assert.AreEqual(Status.OK, status); } Assert.AreEqual(value2.vfield1, output.value.vfield1); Assert.AreEqual(value2.vfield2, output.value.vfield2); }
void Start() { InputArray = new InputStruct[maxSize]; MovementArray = new Vector3[maxSize]; RotationArray = new Quaternion[maxSize]; //Empty input to start with CurrentInput = new InputStruct(0, 0, keyEnum.None); //Set variables Speed = 5; RotationSpeed = 1; JumpStrength = 5; LandedVelocity = 0.1f; LandedDistance = 0.6f; MarginForJumpReset = 0.3f; JumpVelocityMargin = 0.05f; //Initialize index index = 0; maxIndexSoFar = 0; //Get and set transformables rb = gameObject.GetComponent <Rigidbody>(); tf = gameObject.GetComponent <Transform>(); StartingPosition = tf.position; MovementArray [0] = StartingPosition; RotationArray [0] = tf.rotation; //Set color of model for (int i = 0; i < transform.childCount; ++i) { Renderer temp = transform.GetChild(i).GetComponent <Renderer>(); if (temp != null) { temp.material.color = color; } ParticleSystem tempP = transform.GetChild(i).GetComponent <ParticleSystem> (); if (tempP != null) { partic = tempP; ParticleSystem.MainModule tempMain = partic.main; tempMain.startColor = color; } } }
public override byte[] Format(InputStruct message) { var r_message = (EstablishAssociationSiemensInputStruct)message; const byte protoId = 0x32; const byte rosctr = 0x01; const ushort redId = 0x0000; ushort pduRef = r_message.PduRef; const ushort parLg = 0x0008; const ushort datLg = 0x0000; const byte serviceId = 0xf0; const byte reserved = 0x00; ushort maxCalling = r_message.MaxCalling; ushort maxCalled = r_message.MaxCalled; ushort maxPdu = r_message.MaxPdu; return(Format(new byte[7], protoId, rosctr, redId, pduRef, parLg, datLg, serviceId, reserved, maxCalling, maxCalled, maxPdu)); }
// Start is called before the first frame update void Start() { lobbyUDP = GetComponent <LobbyUDPClient>(); //ObjectIDText = mainCanvas.GetComponentInChildren<Text>(); //JumpInputText = mainCanvas.GetComponentInChildren<Text>(); SendCounter = 0f; SpawnPlayers(); inputMsg = new InputStruct(); networkManager = FindObjectOfType <NetworkManager>(); timeLastFrame = Time.realtimeSinceStartup; }
void FixedUpdate() { if (TimeOn) { if (Selected) { if (rb.isKinematic) { rb.isKinematic = false; } if (partic.isStopped) { partic.Play(); } //If this is the selected unit, store current input keys maxIndexSoFar = Mathf.Max(maxIndexSoFar, index); InputArray[index] = CurrentInput; index++; UpdateMovement(); } else { if (!rb.isKinematic) { rb.isKinematic = true; } if (!partic.isStopped) { partic.Stop(); } if (index < maxIndexSoFar) { tf.position = MovementArray [index]; tf.rotation = RotationArray [index]; } //If not selected, extract stored keys CurrentInput = InputArray[index]; index++; } } }
public override void HandleInput(InputStruct input) { switch (input.inputEvent) { case PRESS_S: menuPanel.GoDown(); break; case PRESS_DOWN: menuPanel.GoDown(); break; case PRESS_W: menuPanel.GoUp(); break; case PRESS_UP: menuPanel.GoUp(); break; case PRESS_SPACE: menuPanel.Act(); break; case PRESS_ENTER: menuPanel.Act(); break; case PRESS_A: GameContext.Instance.ChangeResolution(1280, 720); Camera.Instance.SetSubScreenDimensions(0, 0, 1280, 720); break; case PRESS_D: GameContext.Instance.ChangeResolution(1920, 1080); Camera.Instance.SetSubScreenDimensions(0, 0, 1920, 1080); break; case PRESS_P: GameContext.Instance.ToggleFullScreen(); break; } }
public override byte[] Format(InputStruct message) { var r_message = (CreateReferenceSimenseInputStruct)message; const ushort head = 0x0300; const ushort len = 0x0016; const byte contentLen = 0x11; const byte typeCode = 0xe0; const ushort dstRef = 0x0000; const ushort srcRef = 0x000c; const byte reserved = 0x00; const ushort tdpuSizeCode = 0xc001; byte tdpuSizeContent = r_message.TdpuSize; const ushort srcTsapCode = 0xc102; ushort srcTsapContent = r_message.TsapSrc; const ushort dstTsapCode = 0xc202; ushort dstTsapContent = r_message.TsapDst; return Format(head, len, contentLen, typeCode, dstRef, srcRef, reserved, tdpuSizeCode, tdpuSizeContent, srcTsapCode, srcTsapContent, dstTsapCode, dstTsapContent); }
public override byte[] Format(InputStruct message) { var r_message = (CreateReferenceSiemensInputStruct)message; const ushort head = 0x0300; const ushort len = 0x0016; const byte contentLen = 0x11; const byte typeCode = 0xe0; const ushort dstRef = 0x0000; const ushort srcRef = 0x000c; const byte reserved = 0x00; const ushort tdpuSizeCode = 0xc001; byte tdpuSizeContent = r_message.TdpuSize; const ushort srcTsapCode = 0xc102; ushort srcTsapContent = r_message.TsapSrc; const ushort dstTsapCode = 0xc202; ushort dstTsapContent = r_message.TsapDst; return(Format(head, len, contentLen, typeCode, dstRef, srcRef, reserved, tdpuSizeCode, tdpuSizeContent, srcTsapCode, srcTsapContent, dstTsapCode, dstTsapContent)); }
static InputStruct[] ParseBytes(byte[] receiveBytes) { int messageID = receiveBytes[0]; //The first byte is the typoe of message InputStruct[] msgArray = new InputStruct[receiveBytes[1]]; //Second byte is how many messages (for message type 0) //ServerTime = DeserializeStruct<int>(receiveBytes, 2); //3-7 bytes are the timein milliseconds for (int i = 0; i < msgArray.Length; i++) { msgArray[i] = DeserializeStruct <InputStruct>(receiveBytes, i * Marshal.SizeOf(typeof(InputStruct))); } print("Jump Button Recieved"); switch (messageID) { case 0: //For each message we've been told to receive, unpack it. break; case 1: //print("Shooting"); break; case 2: break; case 3: int winnerID; int score; int time; break; } return(msgArray); }
public InputStruct PollInput() { InputStruct input = new InputStruct(); if(Input.GetAxisRaw("Vertical") > 0) { input.upDirection = true; } if(Input.GetAxisRaw("Vertical") < 0) { input.downDirection = true; } if(Input.GetAxisRaw("Horizontal") < 0) { input.leftDirection = true; } if(Input.GetAxisRaw("Horizontal") > 0) { input.rightDirection = true; } if(Input.GetButton("Button1")) { input.action1 = true; } if(Input.GetButton("Button2")) { input.action2 = true; } return input; }
/// <summary> /// 发送协议,通过传入需要使用的协议内容和输入结构 /// </summary> /// <param name="unit"></param> /// <param name="content"></param> /// <returns></returns> public virtual OutputStruct SendReceive(ProtocalUnit unit, InputStruct content) { int t = 0; //如果为特别处理协议的话,跳过协议扩展收缩 var formatContent = unit.Format(content); if (formatContent != null) { byte[] receiveContent; if (unit is SpecialProtocalUnit) { receiveContent = ProtocalLinker.SendReceiveWithoutExtAndDec(formatContent); } else { receiveContent = ProtocalLinker.SendReceive(formatContent); } if (receiveContent != null) { return unit.Unformat(receiveContent, ref t); } } return null; }
public void ReadAtAddressReadFlagsNone() { // Just functional test of ReadFlag so one device is enough deviceType = TestUtils.DeviceType.MLSD; Setup(128, new LogSettings { MemorySizeBits = 29 }, deviceType); uContext.ResumeThread(); try { InputStruct input = default; OutputStruct output = default; var key1 = new KeyStruct { kfield1 = 13, kfield2 = 14 }; var value = new ValueStruct { vfield1 = 23, vfield2 = 24 }; ReadOptions readOptions = new() { StartAddress = fht.Log.BeginAddress }; uContext.Upsert(ref key1, ref value, Empty.Default, 0); var status = uContext.ReadAtAddress(ref input, ref output, ref readOptions, Empty.Default, 0); AssertCompleted(new(StatusCode.Found), status); Assert.AreEqual(value.vfield1, output.value.vfield1); Assert.AreEqual(value.vfield2, output.value.vfield2); Assert.AreEqual(key1.kfield1, 13); Assert.AreEqual(key1.kfield2, 14); } finally { uContext.SuspendThread(); } }
public override byte[] Format(InputStruct message) { var r_message = (EstablishAssociationSimenseInputStruct) message; const byte protoId = 0x32; const byte rosctr = 0x01; const ushort redId = 0x0000; ushort pduRef = r_message.PduRef; const ushort parLg = 0x0008; const ushort datLg = 0x0000; const byte serviceId = 0xf0; const byte reserved = 0x00; ushort maxCalling = r_message.MaxCalling; ushort maxCalled = r_message.MaxCalled; ushort maxPdu = r_message.MaxPdu; return Format(new byte[7], protoId, rosctr, redId, pduRef, parLg, datLg, serviceId, reserved, maxCalling, maxCalled, maxPdu); }
public override byte[] Format(InputStruct message) { var r_message = (ReadDataModbusInputStruct)message; return Format(r_message.BelongAddress, r_message.FunctionCode, r_message.StartAddress, r_message.GetCount); }
public override byte[] Format(InputStruct message) { var r_message = (WriteRequestSimenseInputStruct) message; byte[] valueBytes = ValueHelper.Instance.ObjectArrayToByteArray(r_message.WriteValue); const byte protoId = 0x32; const byte rosctr = 0x01; const ushort redId = 0x0000; ushort pduRef = r_message.PduRef; const ushort parLg = 14; // 参数字节数(2+12的倍数),目前仅为14 ushort datLg = (ushort)(4+valueBytes.Length); // 数据字节数 const byte serviceId = 0x05; const byte numberOfVariables = 1; const byte variableSpec = 0x12; const byte vAddrLg = 0x0A; const byte syntaxId = 0x10; const byte typeR = (byte)SimenseTypeCode.Byte; ushort numberOfElements = (ushort)valueBytes.Length; ushort dbBlock = r_message.DbBlock; byte area = r_message.Area; int offsetBit = r_message.Offset * 8; byte[] offsetBitBytes = ValueHelper.Instance.GetBytes(offsetBit); const byte reserved = 0x00; const byte type = (byte)SimenseDataType.OtherAccess; ushort numberOfWriteBits = (ushort)(valueBytes.Length*8); return Format(new byte[7], protoId, rosctr, redId, pduRef, parLg, datLg, serviceId, numberOfVariables , variableSpec, vAddrLg, syntaxId, typeR, numberOfElements, dbBlock, area, offsetBitBytes.Skip(1).ToArray(), reserved, type, numberOfWriteBits, valueBytes); }
public override byte[] Format(InputStruct message) { var r_message = (WriteDataModbusInputStruct)message; byte[] formattingBytes = Format(r_message.BelongAddress, r_message.FunctionCode, r_message.StartAddress, r_message.WriteCount, r_message.WriteByteCount, r_message.WriteValue); formattingBytes[6] = (byte)(formattingBytes.Length - 7); return formattingBytes; }
public override byte[] Format(InputStruct message) { var r_message = (SetSystemTimeModbusInputStruct)message; return Format(r_message.BelongAddress, r_message.FunctionCode, r_message.StartAddress, r_message.WriteCount, r_message.WriteByteCount, r_message.Year, r_message.Day, r_message.Month, r_message.Hour, r_message.Second, r_message.Minute, r_message.Millisecond); }
public override OutputStruct SendReceive(ProtocalUnit unit, InputStruct content) { return AsyncHelper.RunSync(() => SendReceiveAsync(unit, content)); }
public override byte[] Format(InputStruct message) { throw new NotImplementedException(); }
/// <summary> /// 格式化,将输入结构转换为字节数组 /// </summary> /// <param name="message"></param> /// <returns></returns> public abstract byte[] Format(InputStruct message);
private static extern uint SendInput(uint iInputsCount, InputStruct[] inputs, int sizeOfInputStructure);
private async Task<OutputStruct> ForceSendReceiveAsync(ProtocalUnit unit, InputStruct content) { return await base.SendReceiveAsync(unit, content); }
public override byte[] Format(InputStruct message) { var r_message = (ReadRequestFBoxInputStruct) message; return Format(r_message.Area, r_message.Address, r_message.GetCount); }
public override byte[] Format(InputStruct message) { var r_message = (ReadRequestSimenseInputStruct) message; const byte protoId = 0x32; const byte rosctr = 0x01; const ushort redId = 0x0000; ushort pduRef = r_message.PduRef; const ushort parLg = 14; // 参数字节数(2+12的倍数),目前仅为14 const ushort datLg = 0; // 数据字节数 const byte serviceId = 0x04; const byte numberOfVariables = 1; const byte variableSpec = 0x12; const byte vAddrLg = 0x0A; const byte syntaxId = 0x10; byte type = r_message.TypeCode; ushort numberOfElements = r_message.NumberOfElements; ushort dbBlock = r_message.DbBlock; byte area = r_message.Area; int offsetBit = r_message.Offset*8; byte[] offsetBitBytes = ValueHelper.Instance.GetBytes(offsetBit); return Format(new byte[7], protoId, rosctr, redId, pduRef, parLg, datLg, serviceId, numberOfVariables , variableSpec, vAddrLg, syntaxId, type, numberOfElements, dbBlock, area, offsetBitBytes.Skip(1).ToArray()); }