def applyTransforms(self): """ Use the objects translation/rotation/scaling values to generate a new transformation Matrix if changes have happened. """ # generate new transformation matrix if needed if self.oldscaling != self.scaling or self.drotation != Vector() or self.oldpos != Vector(*self.pos): self.transform = Transform() self.linkTransform = Transform() drotationTransform = Transform() drotationTransform.applyRotation(self.drotation) self.transform.applyScaling(self.scaling) self.linkTransform.applyScaling(self.scaling) self.transform = self.transform*self.oldrotTransform*drotationTransform self.oldrotTransform = self.oldrotTransform*drotationTransform self.transform.applyTranslation(Vector(*self.pos)) self.linkTransform.applyTranslation(Vector(*self.pos)) if self.oldscaling != self.scaling: self.oldscaling = self.scaling.copy() self.drotation = Vector() if self.oldpos != Vector(*self.pos): self.oldpos = Vector(*self.pos) # send new transform to display service transform_update = { "TRANSFORM_UPDATE": True, "objectid": id(self), "transform": self.transform } return transform_update else: return None