{"record":{"id":"4f6eab3efa08f4b3","repo":"egametang/ET","slug":"the-method-or-operation-is-not-implemented-4f6eab","errorCode":null,"errorMessage":"The method or operation is not implemented.","messagePattern":"The method or operation is not implemented\\.","errorType":"exception","errorClass":"NotImplementedException","httpStatus":null,"severity":"error","filePath":"Packages/cn.etetet.recast/Scripts/Core/Share/Recast/Geom/SimpleInputGeomProvider.cs","lineNumber":125,"sourceCode":"            vol.hmin = minh;\n            vol.hmax = maxh;\n            vol.verts = verts;\n            vol.areaMod = areaMod;\n        }\n\n        public void AddConvexVolume(RcConvexVolume convexVolume)\n        {\n            volumes.Add(convexVolume);\n        }\n\n        public IEnumerable<RcTriMesh> Meshes()\n        {\n            return RcImmutableArray.Create(_mesh);\n        }\n\n        public List<RcOffMeshConnection> GetOffMeshConnections()\n        {\n            throw new NotImplementedException();\n        }\n\n        public void AddOffMeshConnection(RcVec3f start, RcVec3f end, float radius, bool bidir, int area, int flags)\n        {\n            throw new NotImplementedException();\n        }\n\n        public void RemoveOffMeshConnections(Predicate<RcOffMeshConnection> filter)\n        {\n            throw new NotImplementedException();\n        }\n\n        public void CalculateNormals()\n        {\n            for (int i = 0; i < faces.Length; i += 3)\n            {\n                int v0 = faces[i] * 3;\n                int v1 = faces[i + 1] * 3;","sourceCodeStart":107,"sourceCodeEnd":143,"githubUrl":"https://github.com/egametang/ET/blob/5cab01f7a8bee5f49f4781eebe9e2b1c6d7ebe0f/Packages/cn.etetet.recast/Scripts/Core/Share/Recast/Geom/SimpleInputGeomProvider.cs#L107-L143","documentation":"SimpleInputGeomProvider.GetOffMeshConnections throws NotImplementedException. This minimal geometry provider stores only a triangle mesh and convex volumes; off-mesh connection support was intentionally left unimplemented. Any caller that needs off-mesh links will fail.","triggerScenarios":"Calling GetOffMeshConnections() on a SimpleInputGeomProvider instance; passing a SimpleInputGeomProvider to Recast pipelines (e.g., crowd/off-mesh link setup) that query off-mesh connections.","commonSituations":"Using the sample/simple geometry provider for a scene that requires jump links, teleports, or off-mesh transitions.","solutions":["Subclass SimpleInputGeomProvider and implement GetOffMeshConnections with a backing list.","Use a full input geometry provider that implements the off-mesh API surface.","Skip the code path that queries off-mesh connections if your scene does not need them."],"exampleFix":"// before\nvar geom = new SimpleInputGeomProvider(verts, faces);\nvar links = geom.GetOffMeshConnections(); // throws\n\n// after\npublic class FullInputGeomProvider : SimpleInputGeomProvider\n{\n    private readonly List<RcOffMeshConnection> _offMesh = new();\n    public override List<RcOffMeshConnection> GetOffMeshConnections() => _offMesh;\n    // ...implement Add/Remove as well\n}","handlingStrategy":"type-guard","validationCode":"if (geom is SimpleInputGeomProvider) throw new NotSupportedException(\"Off-mesh connections unsupported on SimpleInputGeomProvider\");","typeGuard":"static bool SupportsOffMeshConnections(IInputGeomProvider geom)\n    => !(geom is SimpleInputGeomProvider) || geom.GetType().GetMethod(nameof(GetOffMeshConnections))?.DeclaringType != typeof(SimpleInputGeomProvider);","tryCatchPattern":"try { var links = geom.GetOffMeshConnections(); }\ncatch (NotImplementedException) { links = new List<RcOffMeshConnection>(); }","preventionTips":["Subclass SimpleInputGeomProvider to implement off-mesh APIs if you need links.","Prefer a full input geometry provider for scenes with off-mesh links.","Gate code that queries off-mesh connections behind a capability check."],"tags":["recast","input-geom","off-mesh","not-implemented"],"backgroundTag":null,"analyzedSha":"5cab01f7a8bee5f49f4781eebe9e2b1c6d7ebe0f","analyzedAt":"2026-08-13T21:10:40.377Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}