{"record":{"id":"86a1bab41be843d1","repo":"stride3d/stride","slug":"simulated-mouse-does-not-exist","errorCode":null,"errorMessage":"Simulated Mouse does not exist","messagePattern":"Simulated Mouse does not exist","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"sources/engine/Stride.Input/Simulated/InputSourceSimulated.cs","lineNumber":72,"sourceCode":"        public void RemoveAllGamePads()\n        {\n            foreach (var gamePad in gamePads)\n                UnregisterDevice(gamePad);\n            gamePads.Clear();\n        }\n\n        public MouseSimulated AddMouse()\n        {\n            var mouse = new MouseSimulated(this);\n            mice.Add(mouse);\n            RegisterDevice(mouse);\n            return mouse;\n        }\n\n        public void RemoveMouse(MouseSimulated mouse)\n        {\n            if (!mice.Contains(mouse))\n                throw new InvalidOperationException(\"Simulated Mouse does not exist\");\n            UnregisterDevice(mouse);\n            mice.Remove(mouse);\n        }\n\n        public void RemoveAllMice()\n        {\n            foreach (var mouse in mice)\n                UnregisterDevice(mouse);\n            mice.Clear();\n        }\n\n        public KeyboardSimulated AddKeyboard()\n        {\n            var keyboard = new KeyboardSimulated(this);\n            keyboards.Add(keyboard);\n            RegisterDevice(keyboard);\n            return keyboard;\n        }","sourceCodeStart":54,"sourceCodeEnd":90,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/engine/Stride.Input/Simulated/InputSourceSimulated.cs#L54-L90","documentation":"InputSourceSimulated.RemoveMouse requires the MouseSimulated instance to currently be in the source's mice collection. If the mouse was never created by this source or was already removed, the membership check fails and InvalidOperationException is thrown.","triggerScenarios":"Calling RemoveMouse with a mouse not created via this source's CreateMouse, or a second RemoveMouse call for an already-removed instance.","commonSituations":"Double teardown in test fixtures; stale references after RemoveAllMice; passing simulated mice between different InputSourceSimulated instances.","solutions":["Only remove MouseSimulated instances created by this source","Track removed instances or check membership before removal","Prefer RemoveAllMice for full teardown","Null out references after removal to avoid stale reuse"],"exampleFix":"// before\nsource.RemoveMouse(mouse);\nsource.RemoveMouse(mouse); // throws\n// after\nif (mice.Contains(mouse)) source.RemoveMouse(mouse);","handlingStrategy":"validation","validationCode":"if (createdMice.Contains(mouse)) source.RemoveMouse(mouse);","typeGuard":null,"tryCatchPattern":"try { source.RemoveMouse(mouse); } catch (InvalidOperationException) { /* already removed */ }","preventionTips":["Only remove mice you created from this same source instance","Drop references after removal","Use RemoveAllMice for teardown"],"tags":["input","simulated","mouse","entity-not-found"],"backgroundTag":"resource-not-found","analyzedSha":"96fad776d210c221682aac1ccdf4c79dc046fc38","analyzedAt":"2026-09-14T02:59:31.279Z","contentChangedAt":"2026-09-14T02:59:31.279Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}