TMTH Posted February 3, 2017 Share Posted February 3, 2017 There are two questions about sprite2d behaviour, again I don't know whether it's bug or intended properties (fun club of @Nockawa keeps working) 1. Origin property of primitive. (That can be a bug) From documentation: Origin: define the origin of the primitive, default being 0.5,0.5, which is the center of the primitive, 0.0,0.0 would be the bottom/left corner of the primitive. The origin play a role in the rotation/scaling of the primitive but not in its positioning. Here is PG with exploration of that "not in its positioning" thing in the context of Sprite2D: http://babylonjs-playground.com/#1RJPAB As we can see, the right origin formula has to be written as "...but not in its positioning, if the primitive is not Sprite2d. In later case, you wouldn't guess the algorithm that derives actual sprite position from it's position and origin properties. 2. Size and width + height (That is a question of usability). Simple - you can set size property, but you can't set height and width properties on sprite2d. I belive that is the intended behaviour, because there are no height and width in sprite2d constructor settings, nor in renderablePrim2d or prim2dBase. But, 1. using all shape2d-based primitives and group2d you can set size or height/width, 2. on all primitives (including sprited2d) you can set position or x/y so, that is one of those nasty little things that you have to just remember. Quote Link to comment Share on other sites More sharing options...
GameMonetize Posted February 3, 2017 Share Posted February 3, 2017 Ping @Nockawa Quote Link to comment Share on other sites More sharing options...
Nockawa Posted February 6, 2017 Share Posted February 6, 2017 @TMTH ok, so: 1) You have to know that Origin gave me nightmares (still does...sometimes), I really had hard time to code it, to understand what would be the best behavior, I've tried many different behaviors, anyway: it's hard... I've created a Trello Card for this and I'll work on replicating your issue and then trying to fix it. I don't know when I'll work on it, if you subscribe to the trello card you'll be able to be notified when the card is moved from TODO to In Progress. 2) Well, let's say that for me width/height could be in the constructor because it's just another way to express the dimension of the primitive. But is it a useful thing to expose a width and height properties, well, I'm not sure, I thought that the size of a sprite would be pretty close to immutable. If you give me a good use case where it's helpful to have them, then why not. But you will see in this (gorgeous) class diagram that Sprite2D is not a Shape2D, but I do get your point about making things more uniform, it's easier for the JS user indeed. Quote Link to comment Share on other sites More sharing options...
Nockawa Posted February 22, 2017 Share Posted February 22, 2017 @TMTH I've investigate the 1. and result is you're displaying a 64x64 sprite with a 100x100 size, which result of internally applying a scale of 1,5625 which is messing up the positioning where the origin is involved. It doesn't mean it's an "expected behavior", I still consider you're right, it's a bug, the scale is hidden to the user, he's not aware of it, so it shouldn't affect the origin. Now that being said, I have to think about a way to solve this, on the top of my mind it appears to me that using the "user scale" may not be the best thing to do, it was easy for me, but it's misleading on other area of the lib.... My subconscious is telling me that it won't be solved quickly and pretty... I'll keep you in touch. Quote Link to comment Share on other sites More sharing options...
Nockawa Posted February 22, 2017 Share Posted February 22, 2017 @TMTH the origin issue is solved, I've update the preview build. when the PG will be updated you'll see the expected result, you can also rotate the sprite with 0.5, 0.5 origin to see the expected center of rotation. Thanks for reporting the issue. I'll find some time to implement the width/height properties, these are wrappers, it's not that hard to do, well, I'm going to do it now, it will be done then. Quote Link to comment Share on other sites More sharing options...
Nockawa Posted February 22, 2017 Share Posted February 22, 2017 On 2/3/2017 at 7:03 AM, TMTH said: 2. Size and width + height (That is a question of usability). Simple - you can set size property, but you can't set height and width properties on sprite2d. I belive that is the intended behaviour, because there are no height and width in sprite2d constructor settings, nor in renderablePrim2d or prim2dBase. But, 1. using all shape2d-based primitives and group2d you can set size or height/width, 2. on all primitives (including sprited2d) you can set position or x/y so, that is one of those nasty little things that you have to just remember. Well, I've just checked and I don't understand because you can set width or height to a Sprite2D instance (not during its construction, but after). I've just checked and it works. Do you speak about width/height or spriteWidth and spriteHeight ? Quote Link to comment Share on other sites More sharing options...
TMTH Posted February 23, 2017 Author Share Posted February 23, 2017 "Origin property of primitive" is solved. About width and height. You are right, you can set it on sprite instance. As I said, that is not a bug, that is a question of usability. Quote Link to comment Share on other sites More sharing options...
Nockawa Posted February 23, 2017 Share Posted February 23, 2017 I was wondering if you were talking about spriteWidth and spriteHeight properties that could have been added... To be honest at first there were only a size property, I've added width and height after because if you do myPrim.size.width += 10 it wouldn't trigger a change... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.