Half-baked API (Camera position)

Kevin Rushforth kevin.rushforth at oracle.com
Wed Oct 16 14:23:32 PDT 2013

Steve: if Pavel throws IllegalStateException("not yet supported for 
parallel camera") or similar, do you think that would be OK or do you 
not want to see any exception?

-- Kevin

Kevin Rushforth wrote:
> Would IllegalStateException be better here? Usually UOE is for 
> operations that are simply not supported by the class in question. In 
> this case, the operation is only unsupported if the camera on the 
> scene (i.e., the state of an object) is of a certain type which can 
> change at runtime.
> I'm OK either way, just want it to be a deliberate decision.
> -- Kevin
> Pavel Safrata wrote:
>> As I've said, we intend to fix it in the future, so the situation 
>> should not be impossible. It is mostly used that way in the existing 
>> code, but there definitely are precedents for throwing it just 
>> temporarily. For instance:
>> nodeOrientationProperty().getCssMetaData:
>>         throw new UnsupportedOperationException("Not supported yet.");
>> or
>> MeshView.impl_computeContains():
>>         throw new UnsupportedOperationException("Not supported yet.");
>> (internal but directly accessible to users via contains())
>> Pavel
>> On 16.10.2013 20:10, Stephen F Northover wrote:
>>> I took a quick look through JavaFX to find how this exception is 
>>> used. It is mostly used to indicate impossible situation.  Is that 
>>> the situation we have here?
>>> Personally, for me, if we throw the exception, then we will 
>>> generally just leave it that way forever.
>>> Steve
>>> On 2013-10-16 11:22 AM, Pavel Safrata wrote:
>>>> On 16.10.2013 17:03, Stephen F Northover wrote:
>>>>> Could do something useful with what was there now?  We can always 
>>>>> fix this in future by adding another API to govern the 
>>>>> interpretation of the value.
>>>> Not much useful. Anyway, any such stuff can be quite easily done by 
>>>> reading the intersectedPoint's Z coordinate.
>>>>> Throwing the exception indicates that the call is unsupported, but 
>>>>> application code can be written to catch the exception and when we 
>>>>> implement the API, it can break (I realize that this is unlikely).
>>>> The exception can tell by the message that the operation will be 
>>>> supported in the future.
>>>> Pavel
>>>>> Steve
>>>>> On 2013-10-16 10:46 AM, Richard Bair wrote:
>>>>>> My quick vote would be throwing the exception, but is like to 
>>>>>> hear from Steve and Kevin.
>>>>>>> On Oct 16, 2013, at 1:04 AM, Pavel Safrata 
>>>>>>> <pavel.safrata at oracle.com> wrote:
>>>>>>> Hello,
>>>>>>> it looks like we can't help releasing a not-fully-baked piece of 
>>>>>>> API with FX8. We've added bunch of new APIs for 3D and did our 
>>>>>>> best to make them work well. Unfortunately, there's been not 
>>>>>>> enough time&priority to fine-tune their behavior in 2D world. 
>>>>>>> Right now I'm concerned about camera position in scene. It is 
>>>>>>> inherent in the 3D perspective camera that it has its specific 
>>>>>>> position in world, but the 2D parallel camera as we have it 
>>>>>>> projects everything to the XY plane basically by ignoring the Z 
>>>>>>> coordinate, so the camera position doesn't matter all that much. 
>>>>>>> However, some of the newly added APIs depend on it:
>>>>>>> 1. Near/far clip on camera. This obviously cannot work without 
>>>>>>> knowing where the camera is. Right now the parallel camera does 
>>>>>>> no clipping though, so I guess we are OK to go with it as a 
>>>>>>> "known limitation".
>>>>>>> 2. PickResult on events which reports "intersectedDistance" 
>>>>>>> between the camera and the picked point. This is worse because 
>>>>>>> we can't just "not support" it - there will be some value and 
>>>>>>> once somebody uses it we'll have a backward compatibility issue. 
>>>>>>> The state right now is that the camera is (tentatively, by my 
>>>>>>> arbitrary decision) at [0, 0, -1] and reports distances from 
>>>>>>> there (note that as the camera renders everything, for nodes "in 
>>>>>>> front of Z=-1" it reports negative distances). This may change 
>>>>>>> when the camera position is properly discussed and specified.
>>>>>>> Note that this post is *not* meant to discuss the camera 
>>>>>>> position. Even if we could find the answer quickly (which I 
>>>>>>> doubt), it's most probably too late to apply the change for FX8.
>>>>>>> So finally here is my question: do you think it's OK to solve 
>>>>>>> this by keeping the current behavior and documenting the 
>>>>>>> "intersectedDistance" in a way that for parallel camera the 
>>>>>>> numbers are unspecified and subject to change in future 
>>>>>>> versions? Or would you prefer something more drastic like 
>>>>>>> throwing an UnsupportedOperationException (losing the 
>>>>>>> possibility to compare the distances)?
>>>>>>> Thanks,
>>>>>>> Pavel

More information about the openjfx-dev mailing list