st4ck_ |
07:08 |
f
|
taxilian |
09:08 |
st4ck_: read your explanation and I'm afraid I'm not following what you're trying to do. if you have infinite loops anywhere on a page it's going to cause a problem
|
st4ck_ |
09:08 |
taxilian: i'am trying to draw 2D radar, this drawing player on the radar, player position are readed from the plugin with ReadProcessMemory ! so i have to update soons as possible the player position.
|
taxilian |
09:08 |
okay, so the first thing to consider: you realize that you can never update more than every 13ms? (60 hz)
|
st4ck_ |
09:08 |
taxilian: yes 13ms is sufficient
|
taxilian |
09:08 |
so you never, ever want to actually do an unending loop
use some sort of timer instead
that every 1/60th of a second (actually I'd do 1/30th if it were me) checks the data and renders it
|
st4ck_ |
09:08 |
taxilian: player position is readed from another process that's why i need ReadProcessMemory and the plugin.
taxilian: yes it's work for me but plugin uc usage is going to up.
|
taxilian |
09:08 |
uc?
what exactly is uc?
|
st4ck_ |
09:08 |
pluging processor usage
|
taxilian |
09:08 |
okay, so for future reference call that "cpu usage" or "cpu utilization"
are you drawing in javascript or with the plugin?
|
st4ck_ |
09:08 |
javascript
|
taxilian |
09:08 |
okay, so first make it asynchronous, since you're doing IPC with it
you could do it a couple of ways
you could start a thread and have it just fire a javascript event every 1/30th of a second or so
or you could start a new thread each time you request an update and have it call the callback function when it gets the result
if your cpu utilization is going through the roof it's most likely because you're doing a loop with no delay
|
st4ck_ |
09:08 |
In javascript code the loop is made with requestAnimFrame. and i set timeout, acctualy (1000/60).
|
taxilian |
09:08 |
and the plugin requests the data only in response to that?
|
st4ck_ |
09:08 |
yes
|
taxilian |
09:08 |
then it may just mean that it's cpu intensive enough that 60 fps is that hard on the cpu
or you may be doing something somewhere that you don't realize
|
st4ck_ |
09:08 |
Okay, maybe because in one loop, i made 4 method call from plugin, 1 per data, maybe better to return all data in one method.
and i loop 64 time, i have 64 players.
|
taxilian |
09:08 |
hmm. could be. so a couple of things to know:
1) there is a performance hit every time you make a call to or from the plugin, because it's cross process. This means that calling the plugin once and getting a large string is faster than calling it 4 times and getting 1/4 of that string each time
2) when you return a FB::VariantList or FB::VariantMap to become a javascript array or object it has some serious performance implications because it has to call back into javascript once to create the object and then again for each item that gets stored in the array or object
so if you're returning a large amount of data it's always faster to return it as a string
|
st4ck_ |
09:08 |
my datas are : 1) my view angle[float], 2) my position [vec3{x,y,z}] , 3) player position [vec3{x,y,z}] 4) my teamID[int] 5) player teamID[int].
does is considered large ?
|
taxilian |
09:08 |
at 60 * 64 per second? yes, you'd be much better sending that to the browser as a json data structure
json string, I mean
|
st4ck_ |
09:08 |
Okay thanks
|
taxilian |
09:08 |
see http://www.firebreath.org/display/documentation/Performance+Considerations
|
st4ck_ |
09:08 |
Realy appreciate your help !
|
taxilian |
09:08 |
good luck
|
pat__ |
14:08 |
I am trying to run the BasicMediaPlayer example on Mac (OSX 10.7.5). I was able to build it, but both Safari and Chrome did not pick it up. The FBTestPlugin and the empty project I created worked. Any ideas?
I tried both the 1.7 branch and the latest from GitHub
|
taxilian |
14:08 |
not offhand; basicmediaplayer on mac is just a rendering example
|
pat__ |
14:08 |
not sure I understand. The browser was not able to find the plugin.
|
taxilian |
14:08 |
yes, I gathered that. I don't know offhand why that would be
unless perhaps it didn't really build
it isn't maintained very well
basicmediaplayer, that is
|
pat__ |
14:08 |
yes, the example packaged
I need to learn how to render to Mac window and that is the example I need working
|
taxilian |
14:08 |
first thing I'd do is make sure the binary is where you think it is
and that it's the right type (32 bit, at least)
|
pat__ |
14:08 |
yes, I did a file on the symblic link. It shows both architectures
|
taxilian |
14:08 |
which symbolic link is that?
|
pat__ |
14:08 |
FireBreath BasicMediaPlayer Plugin.plugin
then cd into it
under Internet plug-in directory
|
taxilian |
14:08 |
you might try copying instead of symlinking the .plugin directory
also don't rename it, just to verify
|
pat__ |
14:08 |
I have tried it already. But I will do it again just to make sure.
|
taxilian |
14:08 |
unfortunately, other than that I have no ideas
it's been a long time since I last tried to build that project
|
pat__ |
14:08 |
also, I installed the other two plugin the same way. So I doubt it is the problem.
No, copying it didn't help.
|
taxilian |
14:08 |
no idea :-/
|
pat__ |
14:08 |
I have some more questions. In that BasicMediaPlayer example, there is a subclass of BasicMediaPlayerPlugin for Mac. Is this autogenerated with the scrips?
|
taxilian |
14:08 |
it is not
but it is the way that I generally recommend doing anything platform specific
|
pat__ |
14:08 |
so what is the work flow to add those files in the project? I watched the videos and it told me not to add them in the xcode project directly. Does the prepmac script add it in?
|
taxilian |
14:08 |
prepmac uses camek
cmake
so CMakeLists.txt contains the cmake configuration for all platforms; where it does include_platform() it includes the Mac/projectDef.cmake (or Win/projectDef.cmake, etc) file
so the projectDef.cmake files have project specific stuff for those platforms
|
pat__ |
14:08 |
k, thx
|