what does static condition return?

For developers using the Construct 2 Javascript SDK

Post » Thu May 03, 2012 9:02 am

I was tinkering with my own plugin and I looked at some conditions from the Sprite plugin and some of the code looks kinda odd to me. Specifically in the IsOverlapping and OnCollision condition:
  • why does it sometime return false and the above comment say that "We've already run the event by now." Did the condition failed? If not then what does false mean?
  • sometime it returns "lsol.instances.length". I guess this will traslate into false or true? Same as above I don't understand why the need to return this. Maybe there is some deep unexplained structure here?
  • sometime there is a "runtime.pushCopySol" call which I can't find reference anywhere what it suppose to do.


I'm trying to do something similar to collision checking with my plugin so I have to wrap my head around these conditions. Any assistance or alternatives would be greatly helpful.
B
3
Posts: 5
Reputation: 337

Post » Thu May 03, 2012 11:00 am

These conditions have changed significantly in the next build to be a lot simpler, as part of re-working them to support OR blocks. I'd recommend you wait for r88 to be released (out shortly) and check the source again then. 'Is overlapping' is no longer a static condition in r88.

FWIW, static conditions don't do any picking - basically the runtime will run the function once instead of calling it for each instance, and it's the function's job to do all the necessary picking. It just needs to return true/false, and as per usual javascript if you return an array length or some other number it is true if it is nonzero otherwise false. However, it can be very tricky to get static conditions right, so I wouldn't recommend them. 'On collision' for example uses retriggering to run the event manually which is why it returns false.
Scirra Founder
B
204
S
134
G
43
Posts: 17,456
Reputation: 112,017

Post » Thu May 03, 2012 12:35 pm

Thanks for the timely reply :). So as I understand it, return true mean we run this event and return false mean we don't? So what does retriggering do? Does it run the condition all over again or just plain run the action?

I basically do a ray casting plugin that has condition very similar to 'OnCollision'. What do you suggest I use then (if not static condition)?
B
3
Posts: 5
Reputation: 337

Post » Thu May 03, 2012 12:50 pm

I doubt you want to use code anything like Sprite's On Collision condition. It's extremely specific to how Sprites work and collide. Can you tell me more about what condition you are trying to make?
Scirra Founder
B
204
S
134
G
43
Posts: 17,456
Reputation: 112,017

Post » Fri May 04, 2012 12:46 am

I'm missing a ray casting plugin that can act like a sentry being able to "see" another object from a distance. If it's just this I could just use a collision box but the catch is the sentry can't see through certain objects.

So what I do is I cast many rays from the eye of sentry and see if any ray can "see" the subject but is not blocked half way. The angle of view for each sentry can be tweaked as well as number of rays and the length of each rays.

What I end up with is usually a shape that could be enclosed in a bounding box. And for efficiency, I try to test collision with the bounding box first before I test intersection with each rays. That's why it's very similar to On Collision.
B
3
Posts: 5
Reputation: 337

Post » Sat May 05, 2012 10:33 am

Nice rewrite of 'is overlapping'. It seem to me that 'is overlapping' and 'on collision' is so very similar in purpose. Both test for overlap and pretty much pick the same set of instances. Maybe the difference lie in the flow of conditions in an event block?
B
3
Posts: 5
Reputation: 337


Return to Javascript SDK

Who is online

Users browsing this forum: No registered users and 0 guests