Dude.
ObjectA Is overlapping ObjectB
This picks all ObjectA's that overlap any ObjectB. And all ObjectB that overlap any ObjectA. It is in the first place about picking.
Secondly, yes, when there is no object ObjectA picked or/and no ObjectB, the condition marks itself as not do-able: or the logical state untrue.
(handy to follow up with an else)
True or untrue depends on the resulting picklist, not on a Basic wise IF statement.
When the condition is true, it runs its actions/subs, and in most cases we use the list of the picked objects to work with.
Or we refine the picklist with more conditions.
When the condition is untrue, it will not run its actions.
You are addressing an unreferenced object in an action. Therefor you only use, what you perceive as, the logical part of the condition. The IF THEN as you like to call it.
Addressing unreferenced objects is always something that you need to think trough.
I showed you in a capx how to deal with that. I think that was helpful and on topic.
But it comes down to what you expect of the default answer that you get to your conditions and how it is handled in C2 as I see it.
For example, when you do:
If Object1 is overlapping Object2 then do something
In this case its perfectly fine if non of the objects exists, because if they don't the default answer that you get from C2 fits the question. So you get an answer that this condition is false. But since that is the exact answer you would expect to get in case one or non of these objects exists you tend to see it as being correct. And it is correct logically, if non of these objects exists obviously none of them are overlapping, therefore any actions related to this statement shouldn't be done either.
But when you inverse the condition:
If Object1 is not overlapping Object2 then do something
The logic behind this statement should be same as above. Because again if one or none of these objects exists they surely are not overlapping and therefore this condition is true. Just as if you did the check and in the start of layout destroyed Object2, then the above condition would also check true. The reason you don't see anything wrong with that, is because if Object2 doesn't exists how would Object1 be able to overlap it, therefore it has to be true. Which makes perfect sense because its the logical way you would expect it to work. But the default way that C2 check these conditions from what I can see, is that it only fits a non inverted condition. So to apply the same logic to both of them, it shouldn't matter whether its object1 or object2 that doesn't exists. The default answer that you expect from C2 should handle both types of conditions.
[quote:bmnkghzv]You are addressing an unreferenced object in an action. Therefor you only use, what you perceive as, the logical part of the condition. The IF THEN as you like to call it.
But there are no problem in addressing an unreferenced object, even if you might not notice it. if you do the following:
On start of layout
Destroy Object1
If
Object1.variable = 2
Else
Set Object1.variable = 2
C2 have no problem doing something like this even though no object exist and none are picked in the else. You can still add code to change one of its variables, position, etc. It is simply ignored. So there would be no difference in these two.
Where you might have a point as I see it when it comes to picking, is whether C2 can handle 0 picked objects. Because if you add actions to it, for instant "Set Object1.Position = X,Y" you obviously don't want all Object1's to go to that position. So it should be able to know if an inversed condition picked 0 objects and if that's the case it should not apply any actions related to these types of objects. Maybe its not possible to work with 0 picks, I don't know how that is handled in C2.