Browser plugin nearing completion

Subsitute “font = None” for the conflicting line in the sample program.

Hm, David, do you think it would be a good idea to create another add-on package that contains the default models + fonts?

I used the default font as david recommended, and it got me past that error.
font = TextNode.getDefaultFont()

Just wondering, was the MSVS thing fixed yet? packp3d is still looking for it.

Default: do the environment variables settings drwr mentioned a few posts earlier. If you don’t see them there just add them.

I switched to using a sample being used in the plugins demo to eliminate any outliers.

I also changed to using ‘fonts = None’. Here’s the log so far:

C:\Panda3D-1.6.2>panda3d packp3d.p3d -S mycert.pem -o razTest.p3d -d C:/Panda3D-
1.6.2/samples/Carousel
There are some missing modules: ['TkGlobal', 'WxGlobal', 'libheapq', 'libp3direc
t', 'libp3heapq']
:loader: loading file type module: pandaegg
:egg2pg: Reading /c/Panda3D-1.6.2/samples/Carousel/models/carousel_base.egg.pz
:gobj: Loading texture /c/Panda3D-1.6.2/samples/Carousel/models/carousel_base.jp
g
:egg2pg: Flattened 1 nodes.
:egg2pg: Reading /c/Panda3D-1.6.2/samples/Carousel/models/carousel_lights.egg.pz

:egg2pg: Flattened 1 nodes.
:egg2pg: Reading /c/Panda3D-1.6.2/samples/Carousel/models/carousel_panda.egg.pz
:gobj: Loading texture /c/Panda3D-1.6.2/samples/Carousel/models/carousel_panda.j
pg
:egg2pg: Flattened 1 nodes.
:egg2pg: Reading /c/Panda3D-1.6.2/samples/Carousel/models/env.egg.pz
:gobj: Loading texture /c/Panda3D-1.6.2/samples/Carousel/models/env_sky.jpg
:gobj: Implicitly rescaling env_sky.jpg from 1200 by 900 to 1024 by 512
:gobj: Loading texture /c/Panda3D-1.6.2/samples/Carousel/models/env_ground.jpg
:egg2pg: Flattened 1 nodes.
Generating razTest.p3d

C:\Panda3D-1.6.2>panda3d razTest.p3d
DirectStart: Starting the game.
:display: loading display module: libpandagl.dll
:display: loading display module: libpandadx9.dll
:display: loading display module: libpandadx8.dll
:display: loading display module: libtinydisplay.dll
Known pipe types:
  wglGraphicsPipe
  wdxGraphicsPipe9
  wdxGraphicsPipe8
  TinyWinGraphicsPipe
  TinyOffscreenGraphicsPipe
(all display modules loaded.)
:display:windisplay: OS version: 5.1.2.2600
:display:windisplay:   Service Pack 3
:display:windisplay: max Mhz 3391000000, current Mhz 3391000000
:ShowBase: Default graphics pipe is wglGraphicsPipe (OpenGL).
:display: Unable to set window properties: !undecorated
:ShowBase: Successfully opened window of type wglGraphicsWindow (OpenGL)
:audio: NullAudioManager
:audio: NullAudioManager
:ShowBase: __dev__ == 0
:pnmtext: Loaded font Nimbus Sans L Regular Condensed
:loader: Reading /mf/models/carousel_base.bam
:gobj: Loading texture /mf/models/carousel_base.jpg
:loader: Reading /mf/models/carousel_lights.bam
:gobj: Loading texture /mf/models/carousel_lights_off.jpg
:gobj: Loading texture /mf/models/carousel_lights_on.jpg
:loader: Reading /mf/models/carousel_panda.bam
:gobj: Loading texture /mf/models/carousel_panda.jpg
:loader: Reading /mf/models/env.bam
:gobj: Loading texture /mf/models/env_ground.jpg
:gobj: Loading texture /mf/models/env_sky.jpg
:gobj: Implicitly rescaling env_sky.jpg from 1200 by 900 to 1024 by 512
:pgraph(warning): Using deprecated LightAttrib interface.
:pgraph(warning): Using deprecated LightAttrib interface.
Traceback (most recent call last):
  File "C:\cygwin\home\drose\player_pub\direct\src\showbase\Messenger.py", line
352, in __taskChainDispatch
  File "C:\cygwin\home\drose\player_pub\direct\src\showbase\Messenger.py", line
410, in __dispatch
  File "C:\cygwin\home\drose\player_pub\direct\src\p3d\AppRunner.py", line 474,
in __startIfReady
  File "VFSImporter", line 153, in load_module
  File "C:\Panda3D-1.6.2\samples\Carousel\Tut-Carousel.py", line 196, in ?
    w = World()
  File "C:\Panda3D-1.6.2\samples\Carousel\Tut-Carousel.py", line 45, in __init__

    self.setupLights()                 #Add some basic lighting
  File "C:\Panda3D-1.6.2\samples\Carousel\Tut-Carousel.py", line 113, in setupLi
ghts
    render.attachNewNode( directionalLight.upcastToPandaNode() )
AttributeError: 'libpanda.DirectionalLight' object has no attribute 'upcastToPan
daNode'
:task(error): Exception occurred in PythonTask Messenger-default
Traceback (most recent call last):
  File "C:\cygwin\home\drose\player_pub\direct\src\p3d\AppRunner.py", line 392,
in run
  File "C:\cygwin\home\drose\player_pub\direct\src\task\Task.py", line 482, in r
un
  File "C:\cygwin\home\drose\player_pub\direct\src\task\Task.py", line 440, in s
tep
  File "C:\cygwin\home\drose\player_pub\direct\src\showbase\Messenger.py", line
352, in __taskChainDispatch
  File "C:\cygwin\home\drose\player_pub\direct\src\showbase\Messenger.py", line
410, in __dispatch
  File "C:\cygwin\home\drose\player_pub\direct\src\p3d\AppRunner.py", line 474,
in __startIfReady
  File "VFSImporter", line 153, in load_module
  File "C:\Panda3D-1.6.2\samples\Carousel\Tut-Carousel.py", line 196, in ?
    w = World()
  File "C:\Panda3D-1.6.2\samples\Carousel\Tut-Carousel.py", line 45, in __init__

    self.setupLights()                 #Add some basic lighting
  File "C:\Panda3D-1.6.2\samples\Carousel\Tut-Carousel.py", line 113, in setupLi
ghts
    render.attachNewNode( directionalLight.upcastToPandaNode() )
AttributeError: 'libpanda.DirectionalLight' object has no attribute 'upcastToPan
daNode'
:display: Closing wglGraphicsWindow
Failure on startup.

C:\Panda3D-1.6.2>

Remove all instances of .upcastToPandaNode() in the file. It’s been deprecated for a long time now and finally removed.

Right, I understand what’s happening now. This is the plugin code aggressively falling back to find a working configuration after a failure. The error message spamming is unintentional; I’ll see if I can clean that up.

Is your laptop a PPC, or a different OS, or otherwise somehow substantially different from your desktop? It’s not immediately clear why it’s failing. Can you post the exact output from the failure message?

It’s a good point. Eventually, I will add support to limit the size of this folder; at the moment, it can just keep growing as needed, without any real limit. But still, the size will be in the hundreds of MB, and it doesn’t need to be a hidden folder. Perhaps we should rename it to ~/Panda3D instead. Incidentally, you can completely delete this directory at any time without adversely affecting the plugin; it just means you’ll have to redownload stuff the next time you run (and maybe re-approve some certificates).

Yes, I agree this is a good idea. I haven’t done it yet because I’m not really sure how to find this default model directory for a makepanda build. Is it in a standard place?

David

SWEET GOODNESS IT WORKS!!

It’s… so… BEAUTIFUL ;~; high five!

Not-so-standard, it’s built_cmu/models, but only if the distributor is “cmu” and no custom output dir is specified. Maybe it would be a good idea here to set an environment variable or so?

Hmm, maybe we can just add code to panda3d.pdef to look for this model directory along the model-path, based on the presence of some specific filename within it.

David

Both are intel macs running 1.5. The main difference is my mac mini has a crap graphics card (intel gma 950), so I run stuff on my mac book pro usually. I have perviously run the plugin on my mac book before successfully, though it was a much older version (I also ran that version on my desktop as well).

Here is the full output from my mac book:
http://dpaste.com/109911/

I installed the plugin, and I tried some of the samples. I get a white area, nothing. Nothing launches as does when it works correctly.
ddrose.com/~drose/plugin/scripty.html
That reports the same information for both, but the panda part does not show up on my mac book.

Perhaps some of it should live in cache or library. Anyway, any tool that leaves such large invisibles should come with a tool to clean up after itself. Being a prerelease though, I don’t expect such things to be done yet.

Edit:
On my mac book:
From the script page’s sys log button.
dpaste.com/109918/
Game log says “undefined”
Would you also like the text from those buttons on my working copy?

Edit2:I removed my .panda3d folder, and tried run one of the plugin examples again. It downloaded, authorized, and seems to be working.

Edit3: Only the web plugin is working. Trying to use panda3d to open packp3d.p3d (or any other .p3d aparently) still gets that error pf not being able to launch the core api. The dylib its looking for does exist in that spot though.

Edit4: Also, I have never gotten ddrose.com/~drose/plugin/fbounce.html to work for me using safari. In firefox (on my desktop where the plugin actually works), the objects can pass between them one way, but not back (they disappear). In the flash demo, it works fully in firefox, but in safari the objects disappear instead of making it from flash back to panda.

Hm, not so sure about that, for Linux, for a few reasons:
(1) No one ever needs to access it, thats the point of the leading dot.
(2) It’s against the standards. Apps that store stuff in the home directory without a dot prefixed are very rare.
(3) Application directories on unix systems are usually lowercased.
(4) People generally want their home directory not to be full with app-specific stuff (except if its hidden of course)

We could perhaps make a “rightclick->clear cache” (or somewhere else) in the plugin to allow people to clear the cache entirely, for the people that aren’t smart enough to enable hidden files in their file browser.

why don’t you place the cache in /tmp ?
i mean that’s the place for temporary stuff. i don’t want my home dir full of one-time-usage stuff. call me individual, but i also sweep all my browser cache, cookies and also flash-cookies.

another thing is that the home dir isn’t erased after deinstallation of the program which created it (or at least i haven’t yet seen a package manager that does that), so after a user uninstalls his plugin, he still has to deal with megabytes of old, cached garbage.
Or how about splitting the cache into panda- and game content? i guess the panda components will be used more often than specific game assets (just think of all the flash games people play one time and never more).

in case i couldn’t persuade you, place it into ~/.pada3d please, as pro-rsoft requested or alternatively into ~/.cache/panda3d and ~/.config/panda3d

The problem with /tmp/ is that it’s cleared when you reboot. It’s temporary while the Panda3D cache is pretty permanent. It’s not one-time-usage at all, as the entire Panda3D runtime build is installed into ~/.panda3d/ - this greatly speeds up future usage of the plugin. (The first time you use the plugin, you see the long wait bar, remember?) So in general, you might even end up keeping that directory forever. Even on a Panda3D version update it is merely patched rather than entirely overwritten.

Many package managers offer two ways of uninstallation: without clearing the config stuff (the default usually) and an option to also remove the configuration.

Game content isn’t cached but read directly from the p3d file AFAIK - it’s just Panda, and maybe some logfiles and certificates.

That could work too. That’s maybe more consistent with how we do it on Mac now, in ~/Library/Caches/Panda3D/.

a usual place for chache stuff is /var/cache or somewhere else under /var, however on install you’d need to have admin access to create a directory and chown. othervise i’d tend to use “.panda3d”

edit: since the last update to v7, it doesnt reconize anymore that the plugin is already installed on the entry page (ddrose.com/~drose/plugin/install_plugin.html). this is under osx 10.6.

edit2: i’ve never encountered a package the deleted user configurations (files in ~) under linux. i would higly discourage deleting stuff in the user folder, even if it’s unlikely that a user stores stuff in the .panda3d dir by himself, it’s still possible, if you want to delete things in the .panda3d dir, it would need to be individual files (the exact files that have been installed) and not the complete folder.

That’s not the most important problem - the worst thing is that people would be able to corrupt other people’s plugin cache (and maybe inject malicious code somehow)

My Fedora installation now puts things under ~/Desktop, ~/Download, and so on, where a long time ago these were more like ~/.desktop and ~/.download. Looks like ubuntu is doing a similar thing. So, there is at least some movement towards more visible home-directory storage of stuff.

The placement of the Panda3D directory has three requirements:
(1) We don’t need to make the user see it every day. It should be tucked away somewhere.
(2) We don’t need to make it hard for the user to find it. He should know that it exists, and know where to find it when he goes looking for it.
(3) We should follow existing standards wherever possible.

Taken together, those three do seem to advocate for ~/.panda3d on Linux. There is a long tradition of Unix applications storing stuff in a hidden directory under your home directory. Anyone who has been using Linux for more than a week has a good chance of understanding this. I’ll change it back to ~/.panda3d.

Does it say you have version 0.9.2c installed, or does it still report 0.9.1c? Have you re-downloaded and installed the latest plugin? And, gosh, it was working on Snow Leopard? I’d thought it wasn’t working there at all.

David

Can you post the log files for me? Let’s do it this way:

rm -rf /tmp/tlog
panda3d -l /tmp/tlog packp3d.p3d

then post (or email to me) the logfiles that appear in /tmp/tlog.

I’ve had that problem with the flash demo in Safari too. It seems to be some unique JavaScript quirk of Safari, and I haven’t researched it more fully yet. The fbounce demo (“Dual-Panda demo”) has always worked for me, though. When it fails, is it failing always on the left-to-right traversal, or always on the right-to-left traversal, or always when an object returns back to the original window that created it?

David

The Panda plugin itself aggressively maintains the ~/.panda3d directory and will automatically delete (some) things that the user puts in it. It’s not a place for user storage, it’s a place for the plugin to store its managed content. It seems perfectly appropriate to me to delete it wholesale upon uninstallation.

David

Hey, I got somewhat excited about this prerelease of the browser plugin. However, I can’t seem to get things working.

I am using Firefox 3.5.5pre on 32-bit Ubuntu 9.10. I also tried using Firefox 3.5.3 as in Canonical’s Ubuntu repository.

First I went to ~/.mozilla/ and had to create the subdirectory ~/.mozilla/plugins. Then I placed the plugin file into there, restarted the browser, and tried to return to the index page as instructed on the install page. I was immediately redirected back to the install page as though it didn’t load. Using about:plugins, I confirmed that indeed it had not loaded any such plugin.

So I tried ~/.mozilla/firefox//plugins and different root directories; /usr/lib/mozilla/plugins, /usr/lib/firefox3/plugins, /usr/lib/firefox3.5.5pre/plugins (which was just a symbolic link to /usr/lib/firefox-addons/plugins). With a browser restart after each attempt, results were the same each time. Finally, in a sad state of baffle, I stuck it in every single one of the above, and still I got the same result.

Have I missed some significant step? What could I be doing incorrectly?

I moved my p3d into another folder and it shows up blank when I drag it into the browser (I just get the Panda3D logo and no play button). However when I double click it, it displays the demo I packed.

Although, it’s fine if I drag it into the browser from the directory I built it in (the sample was built in C:\Panda3D-1.6.2\ from the samples folder)

Did I forget to take note of something?