nearEntities – Talk

From Bohemia Interactive Community
Jump to navigation Jump to search
No edit summary
m (Text replacement - " <!-- (DIS)?CONTINUE Notes -->" to "")
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Faulty example ==


<!-- CONTINUE Notes -->
<dl class="command_description">
<dl class="command_description">
<dt></dt>
<dd class="notedate">Posted on February 3, 2015 - 21:30 (UTC)</dd>
<dd class="notedate">Posted on February 3, 2015 - 21:30 (UTC)</dd>
<dt class="note">[[User:Pierre MGI|Pierre MGI]]</dt>
<dt class="note">[[User:Pierre MGI|Pierre MGI]]</dt>
<dd class="note">
<dd class="note">
This kind of functions remains FPS killer if you can't manage conditions in order to reduce operations for each entity or, to reduce the number of entities.
NearEntities returns many objects like "man" of course but also "animal", "logic" (and there are plenty of with Arsenal openings), "ammoBox_F", each weapon holder created when a unit dies....
One of the most demanding CPU/GPU resource is probably a DrawIcon3D treatment for these entities.
Unfortunately, this command reaches the club of the other ones like nearestObjects as FPS demanding command.
Don't stay with a simple radius condition (disk selecting entities).
 
Each time you can treat visible entities, as icons displaying, try to restrict this function to your screen.
For example: 
if (((worldToScreen (visiblePosition _x)) select 0 > (0 * safezoneW + safezoneX)) &&
((worldToScreen (visiblePosition _x)) select 0 <(1 * safezoneW + safezoneX))) then {...} foreach _pos nearEntities _radius
</dd>
</dd>
</dl>
</dl>
<!-- DISCONTINUE Notes -->
No idea what example is supposed to be but syntax is wrong [[User:Killzone Kid|Killzone Kid]] ([[User talk:Killzone Kid|talk]]) 18:05, 17 October 2015 (CEST)
No problemo. It works every day for me, as i display icons on each units. (where the code is supposed to be in {...}. I just remarked I get better FPS if i limit the drawIcon3D within the screen frame. No calculation for "out of range" (screen display limit) units. So, i think in that case nearEntities is optimized to the units appearing on screen (a sector rather than a 360° disk). I would like to know how a wrong syntax could work "onEachFrame", several hours a day. I admit my script could be not "optimized" but your remark is as short as a BIKI documentation. Thank you for taking time for a discuss.
::if (....) then {...} foreach _pos nearEntities _radius is invalid construct, sorry, there is nothing to discuss here ;) [[User:Killzone Kid|Killzone Kid]] ([[User talk:Killzone Kid|talk]]) 19:59, 19 October 2015 (CEST)
OK KK, you're right. My fault. Willing too much simplify my example if forgot the {  }. My script is far more complex than that, displaying icons on units, taking into account distances, visibility (lineIntersects) and even stances and types of units...
I admit that was weird to give a so garbled example. Thank you for having taken time for a kind answer.  So, on my mind, discussion was not only on what could be wrong as a typo, I never wrote my script worked if not! I just would like to seize this "talk" for catching your attention. what do you think about reducing the "area" of nearEntities with a "on screen" condition like (((worldToScreen (visiblePosition _x)) select 0 > (0 * safezoneW + safezoneX)) and
((worldToScreen (visiblePosition _x)) select 0 <(1 * safezoneW + safezoneX))) ? It seems for me less calculation as non displayed units are not in range of all the script. I guess the answer depends on so much parameter! but, according to your blog, and all your experience, perhaps, have you an idea of what could be efficient in this approach or not. I hope my English and my aim is understandable. All of that looking forward to script for Arma. Regards Pierre

Latest revision as of 01:53, 6 April 2021

Posted on February 3, 2015 - 21:30 (UTC)
Pierre MGI
NearEntities returns many objects like "man" of course but also "animal", "logic" (and there are plenty of with Arsenal openings), "ammoBox_F", each weapon holder created when a unit dies.... Unfortunately, this command reaches the club of the other ones like nearestObjects as FPS demanding command.