nearEntities – Talk

From Bohemia Interactive Community
Jump to navigation Jump to search
No edit summary
No edit summary
Line 20: Line 20:


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.
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)

Revision as of 18:56, 19 October 2015

Faulty example

Posted on February 3, 2015 - 21:30 (UTC)
Pierre MGI
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. One of the most demanding CPU/GPU resource is probably a DrawIcon3D treatment for these entities. 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

No idea what example is supposed to be but syntax is wrong 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:

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; }; 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. Killzone Kid (talk) 19:56, 19 October 2015 (CEST)