[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Re: removing 'experimental' notice from pygame.math



Indeed, getting the attribute returns a float so the attribute should be settable as a float for consistency.

If users are familiar with GLSL[1], they might be surprised that the type of vectors returned by swizzle attribute access is not a vector:

>>> from pygame.math import Vector3, enable_swizzling
>>> enable_swizzling()
>>> Vector3()
<Vector3(0, 0, 0)>
>>> v = Vector3(1, 2, 3)                                                                                     
>>> v.xy
(1.0, 2.0)
>>> type(v.xy)
<class 'tuple'>

[1] https://en.wikibooks.org/wiki/GLSL_Programming/Vector_and_Matrix_Operations#Components


On Sun, 25 Feb 2018 at 09:38 René Dudfield <renesd@xxxxxxxxx> wrote:
Hi,

that's a good point.

TLDR; I think it should be on by default too. There's still a couple of issues with doing that.


It should have _no_ cost in almost all cases for attribute access. Because it first tries normal attribute access.
See: https://github.com/pygame/pygame/blob/master/src/math.c#L1517

I guess the reason is it's off by default is because it was implemented later on, and to leave it on in a buggy state caused issues.

Not a big concern, but turning it on by default will perhaps have annoying compatibility issues for people using an old pygame.
If they forget to turn it on.

There's two test failures once I changed to be enabled by default:

>>> import pygame.math
>>> v = pygame.math.Vector2(1,2)
>>> v.x = 3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: a sequence is expected
>>> pygame.math.disable_swizzling()
>>> v.x = 3
>>> v
<Vector2(3, 2)>

These are to do with assignment to a variable.
https://github.com/pygame/pygame/pull/403




On Sat, Feb 24, 2018 at 7:23 PM, Daniel Pope <mauve@xxxxxxxxxxxxxx> wrote:
Does the Swizzling have a cost if you're not using it? If not I'd be tempted to say it should always be on.


On Sat, 24 Feb 2018, 18:00 René Dudfield, <renesd@xxxxxxxxx> wrote:
Hey hey,

I noticed the pygame.math vectors couldn't be pickled/unpickled.

So that has been added here:
https://github.com/pygame/pygame/pull/403

Could someone please review?


cheers,



On Sat, Feb 24, 2018 at 10:30 AM, René Dudfield <renesd@xxxxxxxxx> wrote:
Hello,

I'm going to remove the experimental notice from pygame.math in the docs.
https://www.pygame.org/docs/ref/math.html

It seems fine to me, and I guess no one has plans to change it?


best regards,