Difference between revisions of "Talk:nearEntities"

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - " <!-- (DIS)?CONTINUE Notes -->" to "")
 
(10 intermediate revisions by 3 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.
 
::Well fatigue seems to be disabled for good anyway, but looking at your script:
 
<code>0= [] spawn {
 
{
 
while {alive _x} do {
 
scopename "fatigued";
 
sleep 0.5;
 
waituntil {
 
sleep 0.5;
 
getFatigue _x > 0.4
 
};
 
_x setFatigue 0.4
 
};
 
breakTo "fatigued"
 
} forEach units my_group;
 
};</code>
 
It should get stuck on the first member of the group until he is dead or tired, then [[breakTo]] will not break back to while loop, it will just terminate everything. I don't know why you are saying it is working fine, because clearly it is not. [[User:Killzone Kid|Killzone Kid]] ([[User talk:Killzone Kid|talk]]) 19:56, 19 October 2015 (CEST)
 

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.