Cylinder divisions and PerspectiveCamera fixedEyePosition should be mutable
Richard Bair
richard.bair at oracle.com
Fri Oct 4 13:51:10 PDT 2013
Depends on whether it is usable from SceneBuilder and FXML, and the following:
- We must *not* expose a ReadOnly property for these properties (and I don't think we do)
- The FXML changes must be backwards compatible (they should be but we need to verify)
- The SceneBuilder can do something reasonable as is (not sure).
Richard
On Oct 4, 2013, at 1:08 PM, Kevin Rushforth <kevin.rushforth at oracle.com> wrote:
> Certainly for divisions there is no reason to keep them immutable. For fixedEyeAtCameraZero, I don't think the reasons for keeping it immutable are compelling.
>
> Making either change in FX 8 is a different matter, though, given how late we are. The implementation assumes immutability and we would need to change it, implement it, test it, and then fix any bugs as a result. Seems like we could add mutability in a subsequent release.
>
> -- Kevin
>
>
> Richard Bair wrote:
>>
>> I would turn that around and say that unless there is a compelling reason for something to be immutable, it should be mutable. Mutability is important for tools as well as for FXML as well as for developers.
>>
>> Immutable state is awesome for thread-safety or any type of concurrency. But these types of classes are not of that nature, they're UI only classes, and as such their state should be mutable (and like all mutable state in FX, the range of possible values should not be hindered by the evil "unbind" pattern).
>>
>> Richard
>>
>> On Oct 4, 2013, at 12:46 PM, Kevin Rushforth <kevin.rushforth at oracle.com> wrote:
>>
>>
>>> Yes, that pretty much captures the thinking behind it.
>>>
>>> My thought is that there is no real reason that subdivisions need to be immutable, although I wouldn't want to change it at this late date for FX 8 unless it is needed for FXML support.
>>>
>>> The fixedEyeAtCameraZero mode is not something I think should be mutable, since the camera behaves fairly differently in each mode. Having said that, there is no reason it couldn't be made mutable in a subsequent release if there was a good reason to do so.
>>>
>>> -- Kevin
>>>
>>>
>>> Chien Yang wrote:
>>>
>>>> We did discuss making divisions in the predefined 3D shapes mutable in earlier meeting. However we decided against it since it is a heavy weight operation as the supporting mesh will has to be regenerated. I believe the constructor with the divisions argument will not have much use in the future when we move away from mesh implementation of our predefined 3D shapes.
>>>>
>>>> The fixedEyeAtCameraZero flag in PerspectiveCamera is a setup flag to the camera and once set it shouldn't be changed. The perspective projection matrix is constructed differently depending on the flag. In the default mode, JavaFX controls the eye to achieve a projection plane at Z=0 so that simple adding of 3D shapes into a 2D scene looks intuitive. The other mode, where eye is fixed a camera zero, is well suitable for movable camera in the 3d space.
>>>>
>>>> - Chien
>>>>
>>>> On 10/4/2013 9:28 AM, Richard Bair wrote:
>>>>
>>>>> Why are they not? It isn't immediately obvious to me why these are not mutable? I was reading https://javafx-jira.kenai.com/browse/RT-29577 and this struck me as odd.
>>>>>
>>>>> Richard
>>>>>
>>
>>
More information about the openjfx-dev
mailing list