使用javascript进行自定义目的

我正在写一个光线跟踪器作为我的完整3D引擎的一部分。 我打算使用javascript作为脚本语言而不是编写自己的脚本语言。 问题是我该如何使用它? 顺便说一下,光线跟踪器和UI是用C#编写的。

在DirectInput应用程序中使用SendInput API模拟键盘

我正在尝试为自定义游戏控制器应用程序模拟键盘命令。 因为我需要在DirectInput环境中模拟命令,所以大多数常用方法都不起作用。 我知道使用一个钩子可以100%工作,但我正在努力找到一个更简单的实现。 我已经做了很多搜索,发现通过使用带有Scancodes而不是虚拟键的SendInput API应该可以工作,但它似乎表现得像键是“坚持”。 我已经发送了KEYDOWN和KEYUP事件,但是当我尝试在DirectInput环境中发送消息时,游戏就像按下键一样。 例如,如果我模拟“W”按键并将该键映射到第一人称射击游戏中以“向前移动”动作,一旦我在游戏中,下面的函数将使角色向前移动。 但是,只需发出一次命令,它就会无限期地移动角色。 这是我正在调用的SendInput函数的代码片段(在C#中): [DllImport(“user32.dll”)] static extern UInt32 SendInput(UInt32 nInputs, [MarshalAs(UnmanagedType.LPArray, SizeConst = 1)] INPUT[] pInputs, Int32 cbSize); public static void Test_KeyDown() { INPUT[] InputData = new INPUT[2]; Key ScanCode = Microsoft.DirectX.DirectInput.Key.W; InputData[0].type = 1; //INPUT_KEYBOARD InputData[0].wScan = (ushort)ScanCode; InputData[0].dwFlags = (uint)SendInputFlags.KEYEVENTF_SCANCODE; InputData[1].type = 1; //INPUT_KEYBOARD InputData[1].wScan = (ushort)ScanCode; InputData[1].dwFlags […]

Unity Physics2D.Raycast击中了自己

我正在尝试使用Physics2D.Raycast来检查玩家是否在地面上(我知道还有其他方法来检查玩家是否在地面但我认为光线投射是最可靠的)。 问题是在我的场景中它将玩家本身作为命中返回,我真的不明白为什么以及我该怎么做。 我的代码(在PlayerController )如下: public bool IsGrounded () { Bounds bounds = this.playerCollider.bounds; Vector3 rayOrigin = bounds.center; rayOrigin.y -= bounds.extents.y; RaycastHit2D hit = Physics2D.Raycast (rayOrigin, Vector2.down, 0.1f); if (hit.collider != null) { Debug.Log (“Collider is: ” + hit.collider.name); } return hit.collider != null; } 我可以使用以下方法调试铸造射线: Debug.DrawLine (rayOrigin, new Vector3 (rayOrigin.x, rayOrigin.y – 0.1f, rayOrigin.z), Color.magenta); […]

Console.WriteLine很慢

我运行了数百万条记录,有时我必须使用Console.WriteLine进行调试才能看到发生了什么。 但是, Console.WriteLine非常慢,比写入文件慢得多。 但它非常方便 – 有没有人知道加速它的方法?

我可以简单地“读取”正在使用的文件吗?

我试图使用StreamReader读取文件,但它总是被另一个进程使用,所以我得到这个错误: 该进程无法访问文件’\ arfjwknasgmed17 \ C $ \ FLAG CONDITION \ CP-ARFJN-FLAG.XLS’,因为它正由另一个进程使用。 有没有办法可以在不复制的情况下阅读本文? 或者这是我唯一的选择?

匿名类型的非只读替代方案

在C#中,匿名类型可以如下: method doStuff(){ var myVar = new { a = false, b = true } if (myVar.a) { // Do stuff } } 但是,以下内容将无法编译: method doStuff(){ var myVar = new { a = false, b = true } if (myVar.a) { myVar.b = true; } } 这是因为myVar的字段是只读的,无法分配。 似乎想要做一些像后者相当普遍的事情; 也许我见过的最好的解决方案就是在方法之外定义一个结构。 但是,真的没有办法让上面的块工作吗? 困扰我的原因是,myVar是这个字段的局部变量,所以它似乎只应该在使用它的方法中引用。 此外,需要将struct放在方法之外可以使对象的声明远离其使用,特别是在长方法中。 换句话说,有没有匿名类型的替代方法,这将允许我定义这样的“结构”(我意识到结构存在于C#中,必须在方法之外定义)而不使其只读? 如果不是,想要这样做是否存在根本性的错误,我应该采用不同的方法吗?

在.NET中使用令人难以置信的大数字

我正在尝试解决projecteuler.net上的问题,但我一直遇到一些问题。 第一个问题是在List中存储大量元素。 在列表中存储大量数据时,我一直收到OutOfMemoryException。 现在我承认我可能没有以最好的方式做这些事情但是,有没有办法定义应用程序可以消耗多少内存? 当我满足100,000,000个元素时,它通常会崩溃:S 其次,一些问题需要增加大量数字。 我使用ulong数据类型,我认为这个数字会变得非常大,但我仍然设法绕过最大的受支持的int并进入负数。 你有任何使用难以置信的大数字的技巧吗?

entity framework6代码优先自定义函数

我正在尝试类似的东西: 如何使用带有linq的标量值函数实体? 但是我没有使用EDMX,而是先使用DbContext和代码。 我遇到过这个: https://codefirstfunctions.codeplex.com/ 但用法并不合适。 我想要实现的是能够做到这一点: var locations = context.Locations.Where(e => Functions.LatLongDistanceCalc(e.Lat, e.Long, lat, long) >= 10) 它将在SQL Server上调用标量函数(LatLongDistanceCalc)。 没有使用EDMX有没有办法做到这一点? 我知道你可以构建一个手动查询,但这不会是优先的,因为我想带回具有延迟加载代理等的实体以及构建更复杂的查询。

属性是和可空的是什么意思?

属性是[Required]和可空的是什么意思? (例如下面)似乎如果它是[Required]它可能不是null (没有值),并且如果它能够为null则它可能不是[Required] 。 [Required] public DateTime? OrderDate { get; set; }

软件渲染模式 – WPF

我有一个WPF用户控件,我需要在RenderMode.SoftwareOnly强制渲染。 由于我使用的是.NET 3.5,我不得不做类似的事情, var hwndSource = PresentationSource.FromVisual(this) as HwndSource; if (hwndSource != null) { hwndSource.CompositionTarget.RenderMode = RenderMode.SoftwareOnly; } 但这不适用于我的应用程序,WPF程序在少数计算机上崩溃,关闭注册表级别的硬件加速似乎解决了这个问题。 上面的代码是在窗口的Loaded事件中编写的。 如果我是正确的,则在呈现控件( MSDN )之后发生Loaded事件。 那么在这个事件中有上面的代码是否有意义? 如果没有,哪个事件适合它? 另外,在视觉上设置RenderMode会影响它的孩子吗? 或者我是否需要为每个子元素专门设置它? 任何帮助都会很棒!