11__docformat__ = "reStructuredText"
22
3- from typing import TYPE_CHECKING , Any , Callable
3+ from typing import TYPE_CHECKING , Any , Callable , Optional
44
55if TYPE_CHECKING :
66 from .space import Space
77
88from ._chipmunk_cffi import ffi , lib
99from .arbiter import Arbiter
1010
11- _CollisionCallback = Callable [[Arbiter , "Space" ], None ]
11+ _CollisionCallback = Callable [[Arbiter , "Space" , Any ], None ]
1212
1313
1414class CollisionHandler (object ):
@@ -41,10 +41,10 @@ def __init__(self, _handler: Any, space: "Space") -> None:
4141 self ._handler .userData = self ._userData
4242
4343 self ._space = space
44- self ._begin : _CollisionCallback = CollisionHandler . do_nothing
45- self ._pre_solve : _CollisionCallback = CollisionHandler . do_nothing
46- self ._post_solve : _CollisionCallback = CollisionHandler . do_nothing
47- self ._separate : _CollisionCallback = CollisionHandler . do_nothing
44+ self ._begin : Optional [ _CollisionCallback ] = None
45+ self ._pre_solve : Optional [ _CollisionCallback ] = None
46+ self ._post_solve : Optional [ _CollisionCallback ] = None
47+ self ._separate : Optional [ _CollisionCallback ] = None
4848
4949 self ._data : dict [Any , Any ] = {}
5050
@@ -60,7 +60,7 @@ def data(self) -> dict[Any, Any]:
6060 return self ._data
6161
6262 @property
63- def begin (self ) -> _CollisionCallback :
63+ def begin (self ) -> Optional [ _CollisionCallback ] :
6464 """Two shapes just started touching for the first time this step.
6565
6666 ``func(arbiter, space, data)``
@@ -74,16 +74,16 @@ def begin(self) -> _CollisionCallback:
7474 return self ._begin
7575
7676 @begin .setter
77- def begin (self , func : _CollisionCallback ) -> None :
77+ def begin (self , func : Optional [ _CollisionCallback ] ) -> None :
7878 self ._begin = func
7979
80- if self ._begin == CollisionHandler . do_nothing :
80+ if self ._begin == None :
8181 self ._handler .beginFunc = ffi .addressof (lib , "DoNothing" )
8282 else :
8383 self ._handler .beginFunc = lib .ext_cpCollisionBeginFunc
8484
8585 @property
86- def pre_solve (self ) -> _CollisionCallback :
86+ def pre_solve (self ) -> Optional [ _CollisionCallback ] :
8787 """Two shapes are touching during this step.
8888
8989 ``func(arbiter, space, data)``
@@ -96,16 +96,16 @@ def pre_solve(self) -> _CollisionCallback:
9696 return self ._pre_solve
9797
9898 @pre_solve .setter
99- def pre_solve (self , func : _CollisionCallback ) -> None :
99+ def pre_solve (self , func : Optional [ _CollisionCallback ] ) -> None :
100100 self ._pre_solve = func
101101
102- if self ._pre_solve == CollisionHandler . do_nothing :
102+ if self ._pre_solve == None :
103103 self ._handler .preSolveFunc = ffi .addressof (lib , "DoNothing" )
104104 else :
105105 self ._handler .preSolveFunc = lib .ext_cpCollisionPreSolveFunc
106106
107107 @property
108- def post_solve (self ) -> _CollisionCallback :
108+ def post_solve (self ) -> Optional [ _CollisionCallback ] :
109109 """Two shapes are touching and their collision response has been
110110 processed.
111111
@@ -118,16 +118,16 @@ def post_solve(self) -> _CollisionCallback:
118118 return self ._post_solve
119119
120120 @post_solve .setter
121- def post_solve (self , func : _CollisionCallback ) -> None :
121+ def post_solve (self , func : Optional [ _CollisionCallback ] ) -> None :
122122 self ._post_solve = func
123123
124- if self ._post_solve == CollisionHandler . do_nothing :
124+ if self ._post_solve == None :
125125 self ._handler .postSolveFunc = ffi .addressof (lib , "DoNothing" )
126126 else :
127127 self ._handler .postSolveFunc = lib .ext_cpCollisionPostSolveFunc
128128
129129 @property
130- def separate (self ) -> _CollisionCallback :
130+ def separate (self ) -> Optional [ _CollisionCallback ] :
131131 """Two shapes have just stopped touching for the first time this
132132 step.
133133
@@ -140,20 +140,10 @@ def separate(self) -> _CollisionCallback:
140140 return self ._separate
141141
142142 @separate .setter
143- def separate (self , func : _CollisionCallback ) -> None :
143+ def separate (self , func : Optional [ _CollisionCallback ] ) -> None :
144144 self ._separate = func
145145
146- if self ._separate == CollisionHandler . do_nothing :
146+ if self ._separate == None :
147147 self ._handler .separateFunc = ffi .addressof (lib , "DoNothing" )
148148 else :
149149 self ._handler .separateFunc = lib .ext_cpCollisionSeparateFunc
150-
151- @staticmethod
152- def do_nothing (arbiter : Arbiter , space : "Space" ) -> None :
153- """The default do nothing method used for the post_solve and seprate
154- callbacks.
155-
156- Note that its more efficient to set this method than to define your own
157- do nothing method.
158- """
159- return
0 commit comments