+ self.tags = set(tags)
+ self.appearance = appearance
+
+ def __getstate__(self):
+ state = []
+ if self.direction:
+ state.append(("direction", self.direction))
+ if self.speed:
+ state.append(("speed", self.speed))
+ if self.offset:
+ state.append(("offset", self.offset))
+ if self.tags:
+ state.append(("tags", list(self.tags)))
+ if self.appearance:
+ state.append(("appearance", self.appearance))
+ try:
+ params = self.bullet.params
+ except AttributeError:
+ state.append(('bullet', self.bullet))
+ else:
+ if params.params:
+ state.append(('bullet', self.bullet))
+ else:
+ # Strip out empty BulletRefs.
+ state.append(('bullet', self.bullet.bullet))
+ return state
+
+ def __setstate__(self, state):
+ state = dict(state)
+ self.__init__(**state)