{"action":"created","issue":{"url":"https://api.github.com/repos/godotengine/godot/issues/17720","repository_url":"https://api.github.com/repos/godotengine/godot","labels_url":"https://api.github.com/repos/godotengine/godot/issues/17720/labels{/name}","comments_url":"https://api.github.com/repos/godotengine/godot/issues/17720/comments","events_url":"https://api.github.com/repos/godotengine/godot/issues/17720/events","html_url":"https://github.com/godotengine/godot/pull/17720","id":307991393,"node_id":"MDExOlB1bGxSZXF1ZXN0MTc3MDQwNTM0","number":17720,"title":"[mono] Generic Typed GetNode, GetChild, etc.","user":{"login":"paulloz","id":437025,"node_id":"MDQ6VXNlcjQzNzAyNQ==","avatar_url":"https://avatars2.githubusercontent.com/u/437025?v=4","gravatar_id":"","url":"https://api.github.com/users/paulloz","html_url":"https://github.com/paulloz","followers_url":"https://api.github.com/users/paulloz/followers","following_url":"https://api.github.com/users/paulloz/following{/other_user}","gists_url":"https://api.github.com/users/paulloz/gists{/gist_id}","starred_url":"https://api.github.com/users/paulloz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paulloz/subscriptions","organizations_url":"https://api.github.com/users/paulloz/orgs","repos_url":"https://api.github.com/users/paulloz/repos","events_url":"https://api.github.com/users/paulloz/events{/privacy}","received_events_url":"https://api.github.com/users/paulloz/received_events","type":"User","site_admin":false},"labels":[{"id":820006056,"node_id":"MDU6TGFiZWw4MjAwMDYwNTY=","url":"https://api.github.com/repos/godotengine/godot/labels/cherrypick","name":"cherrypick","color":"043a96","default":false},{"id":73330068,"node_id":"MDU6TGFiZWw3MzMzMDA2OA==","url":"https://api.github.com/repos/godotengine/godot/labels/feature%20proposal","name":"feature proposal","color":"1144ff","default":false},{"id":709269775,"node_id":"MDU6TGFiZWw3MDkyNjk3NzU=","url":"https://api.github.com/repos/godotengine/godot/labels/topic:mono","name":"topic:mono","color":"ffdd44","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/godotengine/godot/milestones/7","html_url":"https://github.com/godotengine/godot/milestone/7","labels_url":"https://api.github.com/repos/godotengine/godot/milestones/7/labels","id":2529217,"node_id":"MDk6TWlsZXN0b25lMjUyOTIxNw==","number":7,"title":"3.1","description":"","creator":{"login":"akien-mga","id":4701338,"node_id":"MDQ6VXNlcjQ3MDEzMzg=","avatar_url":"https://avatars0.githubusercontent.com/u/4701338?v=4","gravatar_id":"","url":"https://api.github.com/users/akien-mga","html_url":"https://github.com/akien-mga","followers_url":"https://api.github.com/users/akien-mga/followers","following_url":"https://api.github.com/users/akien-mga/following{/other_user}","gists_url":"https://api.github.com/users/akien-mga/gists{/gist_id}","starred_url":"https://api.github.com/users/akien-mga/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akien-mga/subscriptions","organizations_url":"https://api.github.com/users/akien-mga/orgs","repos_url":"https://api.github.com/users/akien-mga/repos","events_url":"https://api.github.com/users/akien-mga/events{/privacy}","received_events_url":"https://api.github.com/users/akien-mga/received_events","type":"User","site_admin":false},"open_issues":1064,"closed_issues":2105,"state":"open","created_at":"2017-05-18T13:33:56Z","updated_at":"2018-07-25T19:22:24Z","due_on":null,"closed_at":null},"comments":13,"created_at":"2018-03-23T11:22:23Z","updated_at":"2018-07-25T19:37:05Z","closed_at":null,"author_association":"CONTRIBUTOR","pull_request":{"url":"https://api.github.com/repos/godotengine/godot/pulls/17720","html_url":"https://github.com/godotengine/godot/pull/17720","diff_url":"https://github.com/godotengine/godot/pull/17720.diff","patch_url":"https://github.com/godotengine/godot/pull/17720.patch"},"body":"Related issues are #16871, #16309.  \r\nAs discussed, this solution with extensions may be temporary.  \r\n\r\nThis PR introduce the following extension methods to the `Node` class:\r\n\r\n* `GetNode<T>() where T : Node`\r\n* `GetChild<T>(int) where T : Node`\r\n* `GetOwner<T>() where T : Node`\r\n* `GetParent<T>() where T : Node`\r\n\r\nIt is trying to `(T)` cast the return value and throws an `InvalidCastException` if needed.  \r\nTo comply with GDScript version of these methods, it returns `null` if the `Node` we're trying to access can't be found.  "},"comment":{"url":"https://api.github.com/repos/godotengine/godot/issues/comments/407870437","html_url":"https://github.com/godotengine/godot/pull/17720#issuecomment-407870437","issue_url":"https://api.github.com/repos/godotengine/godot/issues/17720","id":407870437,"node_id":"MDEyOklzc3VlQ29tbWVudDQwNzg3MDQzNw==","user":{"login":"neikeq","id":7718100,"node_id":"MDQ6VXNlcjc3MTgxMDA=","avatar_url":"https://avatars3.githubusercontent.com/u/7718100?v=4","gravatar_id":"","url":"https://api.github.com/users/neikeq","html_url":"https://github.com/neikeq","followers_url":"https://api.github.com/users/neikeq/followers","following_url":"https://api.github.com/users/neikeq/following{/other_user}","gists_url":"https://api.github.com/users/neikeq/gists{/gist_id}","starred_url":"https://api.github.com/users/neikeq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/neikeq/subscriptions","organizations_url":"https://api.github.com/users/neikeq/orgs","repos_url":"https://api.github.com/users/neikeq/repos","events_url":"https://api.github.com/users/neikeq/events{/privacy}","received_events_url":"https://api.github.com/users/neikeq/received_events","type":"User","site_admin":false},"created_at":"2018-07-25T19:37:05Z","updated_at":"2018-07-25T19:37:05Z","author_association":"MEMBER","body":"I'm fine with the `Get*OrNull` methods if you want to add them. They just need to use the `as` operator.\r\nOtherwise, looks good to me."}}
{"actor":{"display_login":"neikeq"}}