EntityDistanceSmaller
Übersicht

![]() |
Silver_KneeBetreff: EntityDistanceSmaller |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sinnvoll für alle die, die folgendes Prüfen:
Code: [AUSKLAPPEN] If EntityDistance(me,you)<dist Then....
Dies kann man mit folgender Funktion verschnellern: Code: [AUSKLAPPEN] Function EntityDistanceSmaller(entity,away,dist#)
x1=EntityX(entity,1) x2=EntityX(away,1) y1=EntityY(entity,1) y2=EntityY(away,1) z1=EntityZ(entity,1) z2=EntityZ(away,1) If Abs(x1-x2)<=dist And Abs(y1-y2)<=dist And Abs(z1-z2)<=dist Return ((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2))+((z1-z2)*(z1-z2))<dist*dist Else Return 0 EndIf End Function Es hieße dann: Code: [AUSKLAPPEN] If EntityDistanceSmaller(me,you,dist) Then ....
Der Code Dürfte schneller sein, da keine Wurzel gezogen wird und Multipliziert auch nur wenn nötig. |
||
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube, du unterschätzt die Geschwindikeit der BB-Befehle etwas.
Laut folgendem Code sogar um einiges: Code: [AUSKLAPPEN] Graphics3D 640, 480, 32, 2
Local piv1, piv2, i, count, ms, x piv1 = CreatePivot() piv2 = CreatePivot() count = 1000000 Delay 100 ms = MilliSecs() For i = 1 To count PositionEntity piv1, i, i, i PositionEntity piv2, -i, -i , -i x = EntityDistance(piv1, piv2) < 100 Next Print MilliSecs() - ms Delay 100 ms = MilliSecs() For i = 1 To count PositionEntity piv1, i, i, i PositionEntity piv2, -i, -i , -i x = EntityDistanceSmaller(piv1, piv2, 100) Next Print MilliSecs() - ms WaitKey Function EntityDistanceSmaller(entity,away,dist#) x1=EntityX(entity,1) x2=EntityX(away,1) y1=EntityY(entity,1) y2=EntityY(away,1) z1=EntityZ(entity,1) z2=EntityZ(away,1) If Abs(x1-x2)<=dist And Abs(y1-y2)<=dist And Abs(z1-z2)<=dist Return ((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2))+((z1-z2)*(z1-z2))<dist*dist Else Return 0 EndIf End Function Abgesehen davon, dass die PositionEntity-Funktion eine ganze Menge Zeit in Anspruch nimmt, wird deutlich klar, dass deine Funktion - mit Verlaub - überflüssig ist(selbst dann, wenn bei den meisten Abfragen nicht multipliziert wird.). |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm wie kommt das... ich dachte dass EntityDistance mit wurzeln und ähnlichem arbeitet... aber selbst wenn ich ABS rausnehme ist EntityDistance Schneller... es scheint dass das umrechnen von normalen in Globale koordinaten und das Abrufen alleine schon Langsamer als EntityyDistance ist.... macht doch eigendlich keinen sinn .... | ||
![]() |
aMulSieger des Minimalist Compo 01/13 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das langsamste an den Funktionen ist in der Regel der Funktionsaufruf selbst, so wie ich das verstehe.
Und in deiner Funktion werden ja sogar noch eine ganze Reihe weiterer Funktionen aufgerufen. Der Mathe-Kram ist so schnell, dass man den schon fast vernachlässigen kann. |
||
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans! Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst davon ausgehen dass die Matheoperationen in den BB-Befehlen auf Speed optimiert wurden, aller Wahrscheinlichkeit nach wird für solche Spässe inline-ASM von Sibly verwendet worden sein. Die Funktionsaufrufe deinerseits verursachen da wesentlich mehr Stau ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group