Fixing the Scene Editor for P3D1.1 and Python 2.4=> How T

Hello All , i’m currently fixing the Panda Scene Editor because it’s a key piece of my project.

Sorry i could not make it sooner, (had a hard time at job, doing 7am to 10pm every day or so far);

Step 1: Solve import issue

You have to check/ replace: “from pandac import”
by: "from pandac.PandaModules import
in the files: quad.py,seFileSaver,seForceGroupe.py,seParticles,seParticleEffect,seGeometry

Step 2: migrate to new Collision management

You have to replace : “base.cTrav.addCollider(node, self.CollisionHandler)”
by:“base.cTrav.addCollider( self.collisionDict[name], self.CollisionHandler)”
in the files : dataHolder.py

You have to replace : “base.cTrav.addCollider(self.Collisionnode, self.CollisionHandler)”
by:“base.cTrav.addCollider( self.collisionNodePath, self.CollisionHandler)”
in the files : seSelection.py

By the way, adding Nodepath to collision traverser is really nicer than the old way (my two cents)

Step 3: Solve saving issues

You have to check/ replace:
" if(AllScene.particleDict.has_key(parent)):"
by: " if(AllScene.particleDict.has_key(parentname)):"
in the files: seFileSaver

Nota: Why is sometimes "parent"sometimes “parentname” used in this section of code?

At this Step you should be able to save&Load a scene with Models & Collision Nodes .

Warning: Scene saved with Panda 1.0 are not directly compatible with Scene saved with Panda1… You have to modify scene.py like in Step 2 or you will loose your collisionNodes.

Thank you Manakel.
If you have the time, please write a batch file that uses the patch filesystem(build_patch,…) for patching the Scene Editor.
Or send me a zip file witch the old and the new files and I will do it

Thanks Martin

This still doesn’t fix everything for me.

It gets rid of the MouseWatcher, but now I get:


Traceback (most recent call last):
     File "SceneEditor.py", line 20, in ?
          from seFileSaver import *
     File "C:\Panda3D-1.1.0\SceneEditor\seFileSaver.py", line 15, in ?
          import seParticlePanel
     File "C:\Panda3D-1.1.0\SceneEditor\sePartcilePanel.py", line 14, in ?
          import seForceGroup
     File "C:\Panda3D-1.1.0\SceneEditor\seForceGroup.py", line 5, in ?
          from pandac import ForceNode
ImportError: cannot import name ForceNode

You forgot to replace the “from pandac” in seForceGroupe.py (see step 1).
After step 1 there should be no from pandac left in anyfile of the scene editor…

Another way to check is to make a “search” in the SceneEditor folder for any file that includes the “from pandac” text…

Manakel, you da man. Josh, that is a CVS candidate, right? :slight_smile:

I’m certainly going to include the scene editor fixes in 1.1.1

  • Josh

Hi,

Sorry for pointing this out , but isn’t one year a very long time for putting in minor fixes like these?

It’s been an year already since the solution was posted and even after 11+ months, there is no minor release with the fixes.

I think this is not a very good thing because, some of the fixes mentioned here are already out of date. For example in

Step 1: There is no file seForceGroupe.py there is no ‘e’ at the end now.

Step 2: The lines have been changes to self.(line 406)

Apart from those,i also get the following errors or warnings:(This is for info only)

Thanks.

I think you’ve miscalculated. The scene editor bugs were discovered more or less immediately after Panda3D 1.1.0 was released. But that was only 5 weeks ago.

Sorry for a wrong conclusion. I think i should be getting more sleep.

I took the joining date for the posting date.Anyways, thanks for replying to my post.

hi,
I changed quad.py in this way from pandac.PandaModules.MouseWatcher import * but I’m not sure if it’s right…
can u help me?

hello all,
have anybody solved the problems with sceneeditor yet?
i’ve tried all described above but i can’t get sceneeditor running.
help!

where are the expert?

cOtOc

What exactly doesn’t work?

i still get these errors after trying solving like describe above:
Traceback (most recent call last):
File “sceneeditor.py”, line 1689, in ?
editor = myLevelEditor(parent = tkroot)
File “sceneeditor.py”, line 123, in init
AppShell.init(self, parent)
File “c:\Panda3D-1.1.0\direct\src\tkwidgets\AppShell.py”, line 90, in init

self.appInit()

File “sceneeditor.py”, line 263, in appInit
self.seSession = SeSession()
File “C:\Panda3D-1.1.0\SceneEditor\seSession.py”, line 37, in init
self.drList = DisplayRegionList()
File “C:\Panda3D-1.1.0\SceneEditor\seSession.py”, line 901, in init
drc = DisplayRegionContext(cam)
File “C:\Panda3D-1.1.0\SceneEditor\seSession.py”, line 762, in init
self.iRay = SelectionRay(self.cam)
File “C:\Panda3D-1.1.0\SceneEditor\seSelection.py”, line 538, in init
SelectionQueue.init(self, parentNP)
File “C:\Panda3D-1.1.0\SceneEditor\seSelection.py”, line 406, in init
self.ct.addCollider(self.collisionNode, self)
TypeError: CollisionTraverser::add_collider() argument 1 must be NodePath, not C
ollisionNode

cOtOc

Read thispost or use the search function. Look for Codemigration 1.0.5 to 1.1.0
This looks like an 1.0.5 - 1.1.0 Error

thanks martin, oder danke
alles läuft.

cOtOc

hi ppl
here I am joining this crew of sighs
Looks like, besides the heroic Manakel’s efforts, sceneEditor 1.1.0 is far from being of any use, at last from the the FC4 point of view i mean. I apologize to not been able to help in any other way than point this thig out.
I’ll try better luck with the windows version even if I hate it but Panda 3D has catch me up so hard that I wanna absolutely give it a try.

Here are the changes I made in order to get it to run. I’m new to the editor so I don’t know if it all functions properly. It just runs:

quad.py
Line 13:
< from pandac.MouseWatcher import *

from pandac.PandaModules import MouseWatcher

seForceGroup.py:
Line 5:
< from pandac import ForceNode

from pandac.PandaModules import ForceNode

seParticles.py:
Lines 1 - 25 become:
from pandac.PandaModules import *
from direct.particles.ParticleManagerGlobal import *
from direct.showbase.PhysicsManagerGlobal import *

from pandac.PandaModules import ParticleSystem
from pandac.PandaModules import BaseParticleFactory
from pandac.PandaModules import PointParticleFactory
from pandac.PandaModules import ZSpinParticleFactory
#import OrientedParticleFactory
from pandac.PandaModules import BaseParticleRenderer
from pandac.PandaModules import PointParticleRenderer
from pandac.PandaModules import LineParticleRenderer
from pandac.PandaModules import GeomParticleRenderer
from pandac.PandaModules import SparkleParticleRenderer
from pandac.PandaModules import SpriteParticleRenderer
from pandac.PandaModules import BaseParticleEmitter
from pandac.PandaModules import BoxEmitter
from pandac.PandaModules import DiscEmitter
from pandac.PandaModules import LineEmitter
from pandac.PandaModules import PointEmitter
from pandac.PandaModules import RectangleEmitter
from pandac.PandaModules import RingEmitter
from pandac.PandaModules import SphereSurfaceEmitter
from pandac.PandaModules import SphereVolumeEmitter
from pandac.PandaModules import TangentRingEmitter
[stop at import string]

seSelection.py
Line 406:
< self.ct.addCollider(self.collisionNode, self)

self.ct.addCollider(self.collisionNodePath, self)

I reinstalled panda3d and reapplied these changes. It works. Could someone who’s familiar with the editor make sure that I’m not introducing any bugs?

Just FYI I’ve found exactly the same issues also in 1.1.0 on windows so, while it means that panda guys managed a good porting, this also means that i’m stuck to start. Damn! :smiling_imp: Got to go inside the code and fix up this stuff! ASA I got some spare time I’ll dive in seriously to get rid of it, I promise.

When I press the particles button, I get an error message.
From the models directory I copied smiley.egg and named it sphere.egg.

This seems to have fixed the problem. (Smiley loads!)

A second problem appears.

Traceback (innermost last):
  File "F:\Panda3D-1.1.0\Pmw\Pmw_1_2\lib\PmwBase.py", line 1747, in __call__
    return apply(self.func, args)
  File "sceneEditor.py", line 337, in <lambda>
    button = Button(buttonFrame, image = element, command=lambda n=i : self.buttonPushed(n))
  File "sceneEditor.py", line 378, in buttonPushed
    self.openParticlePanel()
  File "sceneEditor.py", line 1190, in openParticlePanel
    self.particlePanel=seParticlePanel.ParticlePanel()
  File "F:\Panda3D-1.1.0\SceneEditorFIXED\seParticlePanel.py", line 62, in __init__
    AppShell.__init__(self)
  File "F:\Panda3D-1.1.0\direct\src\tkwidgets\AppShell.py", line 92, in __init__
    self.__createInterface()
  File "F:\Panda3D-1.1.0\direct\src\tkwidgets\AppShell.py", line 114, in __createInterface
    self.createInterface()
  File "F:\Panda3D-1.1.0\SceneEditorFIXED\seParticlePanel.py", line 586, in createInterface
    self.rendererSpriteSourceType.set(SpriteParticleRenderer.STTexture)
AttributeError: type object 'libpandaphysics.SpriteParticleRenderer' has no attribute 'STTexture'

Does there exist a Panda 1.1.0 equivalent SpriteParticleRenderer.STTexture?

Thank you very much.

AIM