grid 'n' pivot

I agree ditus. I did not mean for my question to turn into a debate or flameware regarding the merits of the SceneEditor.

Where it the code for this new version. Or is this just a preview?

and again stop! im new into programming and i will post that code when its done! im just working on it for few hours, so there just max 5% done!

Ok that is all I was asking. No need to get upset.

so a life sign from me :wink:

-> drag windows

dragICON.jpg

menuBAR.jpg

mouse.py

#dirk hochegger 2008
#mousewatcher activetimer
import direct.directbase.DirectStart 
from direct.showbase import DirectObject
from direct.task import Task 
import math

activeTIMEout = 2 

class MOUSE (DirectObject.DirectObject):
    def __init__(self):
        self.x = 0
        self.y = 0
        self.t = 0
        base.disableMouse()
        global keyMap
        keyMap = {"d":0}
        self.accept("mouse1", self.Keys, ["d",1])
        self.accept("mouse1-up", self.Keys, ["d",0])
        def moveCAM(task): 
            time = task.time / 4           
            if keyMap["d"]!=0:
                self.t = time                
                self.x = base.mouseWatcherNode.getMouseX()
                self.y = base.mouseWatcherNode.getMouseY()
                z=0  
            self.setNONEactive = time - self.t 
            self.active = str("on")
            if self.setNONEactive > activeTIMEout:
                self.active = str("off")
            return Task.cont     
        taskMgr.add(moveCAM, "camTask") 
        
        
        
    def Keys(self, key, value):
        keyMap[key] = value
    
    def getMx(self):
        return self.x
    def getMy(self):
        return self.y
   
    def getACTIVE(self):
        return self.active
#dirk hochegger 2008
#drag window
from direct.directtools.DirectGeometry import LineNodePath
from pandac.PandaModules import Point3,Vec3,Vec4
from direct.gui.OnscreenText import OnscreenText
from direct.gui.DirectGui import *
from pandac.PandaModules import *
import direct.directbase.DirectStart
from direct.showbase import DirectObject
from direct.gui.OnscreenImage import OnscreenImage 
from direct.gui.OnscreenText import OnscreenText 
from direct.gui.DirectGuiBase import DirectGuiBase
from direct.gui import DirectGuiGlobals as DGG
from pandac.PandaModules import PGMouseWatcherParameter
from mouse import MOUSE
import math



width = .3
height = .2
scale = height*10
textPos = width*10

m=MOUSE()
dx = m.getMx() 
dy = m.getMy()        
class menuGEO(DirectObject.DirectObject):
    def __init__(self):  
        text = TextNode('node name')

        

        self.BX = .4  
        self.BY = .6  
                
        self.BX1 = self.BX-width
        self.BY1 = self.BY-height
                
        self.L = self.BY -.08
        self.L1= self.BY1 +.04 
        self.LX1= self.BY1 +.68 
        

        self.BOX = LineNodePath(render2d,'menuBOX',4,Vec4(.2,.2,.2,0))   
        self.BOX.drawLines([[(0,0,0),(0,0,0)]])
        

        self.BOX1 = LineNodePath(render2d,'menuBOX1',2,Vec4(.2,.2,.2,0))      
        self.BOX1.drawLines([[(0,0,0),(0,0,0)]])
        

        self.BOX2= LineNodePath(render2d,'menuBOX2',2,Vec4(.2,.2,.2,0))      
        self.BOX2.drawLines([[(0,0,0),(0,0,0)]]) 
        


        self.dragBAR = OnscreenImage()
        self.dragPOINT = OnscreenImage()
        

        self.dragINFO = 0 
        self.klick = 0  
        
        self.dragPOINT = OnscreenImage(image = 'dragICON.jpg')
        self.dragPOINT.setPos((self.BX *1.8)-scale/15, 0,self.BY-.04)      
        self.dragPOINT.setScale(0,0,0)

        self.dragBAR = DirectButton(image = 'menuBAR.jpg',command = self.drag1,
                                           scale = (scale/16,.5,.035),relief = None)
        self.dragBAR.setPos(0, 0,0)

        
        self.hide = DirectButton(text = 'hide',command = self.hideALL,
                                           scale = (.035,.5,.035),relief = None)
        self.hide.setPos(1,1,1)
        for ii in ('text1','text2'): 
            self.hide._DirectGuiBase__componentInfo[ii][0].setColor(0.2, 1.0, 0.2, .6) 
               
        text = TextNode('node name') 
        text.setText("locked") 
        self.lockTEXT = aspect2d.attachNewNode(text) 
        self.lockTEXT.setScale(0.04) 
        self.lockTEXT.setPos(0,0, 0)
        self.lockTEXT.setColor(0,0,0,0)
        
        text1 = TextNode('node name') 
        text1.setText("TITEL") 
        self.titelTEXT = aspect2d.attachNewNode(text1) 
        self.titelTEXT.setScale(0.04) 
        self.titelTEXT.setPos(0,0, 0)
        self.titelTEXT.setColor(.8,.8,.8,.8)
       
        self.close = DirectButton(text = "close",command = self.close,
                                           scale = (.03,.03,.03),relief = None)
        for ii in ('text1','text2'): 
            self.close._DirectGuiBase__componentInfo[ii][0].setColor(0.2, 1.0, 0.2, .6)
        self.close.setX(5)
        

        
        
            
        def mouseDIS(task):
                #dis to dragPOINT
                
                mouseX = m.getMx()
                mouseY = m.getMy()
                mouseZ = 0
                    
                mouseVEC = Vec3(mouseX,0,mouseY)
                    
                dis = mouseVEC - self.dragPOINT.getPos()
                disL = dis.length()
                    
                print disL
                
                return task.cont
        taskMgr.add(mouseDIS,"mouseTask") 

       
    def drag1(self):
        
        def drag(task):
            
            
            
            t=task.time/4

            if self.dragINFO == 1:
                
                
                
                
                   
                self.remove()
                
                dx = m.getMx() 
                dy = m.getMy()
                #print dx   
                self.BX = dx
                self.BY = dy
                        
                self.BX1 = self.BX-height
                self.BY1 = self.BY-width
                        
                self.L = self.BY -.08
                self.L1= self.BY1 +.04 
                self.LX1= self.BY1 +.68 


                self.BOX = LineNodePath(render2d,'menuBOX',4,Vec4(.2,.2,.2,0))     
                self.BOX.drawLines([[(self.BX,0,self.BY),(self.BX,0,self.BY1)],[(self.BX,0,self.BY1),
                                (self.BX1,0,self.BY1)],[(self.BX1,0,self.BY1),(self.BX1,0,self.BY)],
                                [(self.BX1,0,self.BY),(self.BX,0,self.BY)]])
                    

                self.BOX1 = LineNodePath(render2d,'menuBOX1',4,Vec4(.2,.2,.2,0))     
                self.BOX1.drawLines([[(self.BX,0,self.L),(self.BX1,0,self.L)]])
                

                self.BOX2 = LineNodePath(render2d,'menuBOX1',2,Vec4(.2,.2,.2,0))     
                self.BOX2.drawLines([[(self.BX,0,self.L1),(self.BX1,0,self.L1)]])
                
                
                self.dragPOINT.setColor(.5,.5,.5,.5)
                self.dragPOINT.setPos((self.BX *1.3333)-scale/50, 0,self.BY-.04)
                self.dragPOINT.setScale((scale/45)-.005,.5,.035)

                self.dragBAR.setColor(.5,.5,.5,.5)
                self.dragBAR.setPos((self.BX *1.3333)-scale/11.5, 0,self.BY-.04)
                self.dragBAR.setScale((scale/21)-.005,.5,.035)
                
                self.hide.setPos((self.BX *1.3333)-scale/15, 0,self.BY-.112)

                self.close.setPos((self.BX *1.3333)-.04, 0,self.BY-(textPos/10)+.01) 
                

                self.lockTEXT.setPos((self.BX *1.3333)-scale/7.6,0,self.BY-(textPos/10)+.01)
                self.lockTEXT.setColor(0,0,0,1)
                
                self.titelTEXT.setPos((self.BX *1.3333)-scale/7.8,0,self.BY-.06)
                self.titelTEXT.setColor(1,1,1,1.2*math.cos(t*20))                
                
                self.BOX.create() 
                self.BOX1.create()
                self.BOX2.create()
                
                

            else:
                self.lockTEXT.setColor(.4,0,0,.8)
                self.dragBAR.setColor(.8,.8,.8,.8)
                self.titelTEXT.setColor(0,0,0,.8)
            ##
            active = m.getACTIVE()
            if active == 'off':
                self.lockTEXT.setColor(.4,0,0,.8)
                self.dragBAR.setColor(.8,.8,.8,.8)
                return task.done
            if self.klick == 1:
                return task.done
            return task.cont
        taskMgr.add(drag,"dragTask")
        
       # print "..." 

        print "dragINFO->",self.dragINFO
        if self.dragINFO ==1:
            self.dragINFO = 0
        else:
            self.dragINFO = 1
    
        ##
        
            
        
    def close(self):
        self.removeALL()
        #print "close"  
          
    def remove(self):
        self.BOX.remove()
        self.BOX1.remove()
        self.BOX2.remove()

        
    def removeALL(self):
        self.BOX.hide()
        self. BOX1.hide()
        self.BOX2.hide()

        self.dragBAR.hide()
        self.close.hide()
        self.lockTEXT.hide()
       # self.titelTEXT.hide()
        ##

    def hideALL(self):
        if self.klick ==1:            
            self.klick = 0
            self.hide.remove()
            self.SHOWanim()
            self.hide = DirectButton(text = 'hide',command = self.hideALL,
                                           scale = (.035,.5,.035),relief = None)
            self.hide.setPos((self.BX *1.3333)-scale/15, 0,self.BY-.112)
            for ii in ('text1','text2'): 
                self.hide._DirectGuiBase__componentInfo[ii][0].setColor(0.2, 1.0, 0.2, .6)
            self.BOX.show()
            self.BOX1.show()
            self.BOX2.show()
            self.dragBAR.show()
            self.close.show()
            self.lockTEXT.show()

            
            
            

        else:
            self.hide.remove()
            self.HIDEanim()
            self.hide = DirectButton(text = 'show',command = self.hideALL,
                                           scale = (.035,.5,.035),relief = None)
            self.hide.setPos((self.BX *1.3333)-scale/15, 0,self.BY-.112)
            for ii in ('text1','text2'): 
                self.hide._DirectGuiBase__componentInfo[ii][0].setColor(0.2, 1.0, 0.2, .6)
            self.BOX.hide()
            self.BOX1.hide()
            self.BOX2.hide()
            self.dragBAR.hide()
            self.close.hide()
            self.lockTEXT.hide()
            self.klick = 1
            
    def HIDEanim(self):
        
        def animHIDE(task):
            self.remove()
            
            if self.klick == 1:
                t = task.time/ math.sin(20)

                            
                self.BX1 = self.BX-height
                self.BY1 = self.BY-width+math.sin(t)
                 
                 
                            
                self.L = self.BY -.08
                self.L1= self.BY1 +.04 
                self.LX1= self.BY1 +.68 
    
                self.dis = self.L - self.BY1
    
                self.BOX = LineNodePath(render2d,'menuBOX',4,Vec4(.2,.2,.2,0))     
                self.BOX.drawLines([[(self.BX,0,self.BY),(self.BX,0,self.BY1)],[(self.BX,0,self.BY1),
                                    (self.BX1,0,self.BY1)],[(self.BX1,0,self.BY1),(self.BX1,0,self.BY)],
                                    [(self.BX1,0,self.BY),(self.BX,0,self.BY)]])
                        
    
                self.BOX1 = LineNodePath(render2d,'menuBOX1',4,Vec4(.2,.2,.2,0))     
                self.BOX1.drawLines([[(self.BX,0,self.L),(self.BX1,0,self.L)]])
                    
    
                self.BOX2 = LineNodePath(render2d,'menuBOX1',2,Vec4(.2,.2,.2,0))     
                self.BOX2.drawLines([[(self.BX,0,self.L1),(self.BX1,0,self.L1)]])
                    
                
    
                    
                    
                self.BOX.create() 
                self.BOX1.create()
                self.BOX2.create()
                
                if self.dis < .1:
                    return task.done 
            
            return task.cont
        taskMgr.add(animHIDE,"hideTask")
 
    def SHOWanim(self):
        
        def animSHOW(task):
            
            if self.klick == 0:
                self.remove()
                            
                self.BX1 = self.BX-height
                self.BY1 = self.BY-width
                 
                 
                            
                self.L = self.BY -.08
                self.L1= self.BY1 +.04 
                self.LX1= self.BY1 +.68 
    
                self.dis = self.L - self.BY1
    
                self.BOX = LineNodePath(render2d,'menuBOX',4,Vec4(.2,.2,.2,0))     
                self.BOX.drawLines([[(self.BX,0,self.BY),(self.BX,0,self.BY1)],[(self.BX,0,self.BY1),
                                    (self.BX1,0,self.BY1)],[(self.BX1,0,self.BY1),(self.BX1,0,self.BY)],
                                    [(self.BX1,0,self.BY),(self.BX,0,self.BY)]])
                        
    
                self.BOX1 = LineNodePath(render2d,'menuBOX1',4,Vec4(.2,.2,.2,0))     
                self.BOX1.drawLines([[(self.BX,0,self.L),(self.BX1,0,self.L)]])
                    
    
                self.BOX2 = LineNodePath(render2d,'menuBOX1',2,Vec4(.2,.2,.2,0))     
                self.BOX2.drawLines([[(self.BX,0,self.L1),(self.BX1,0,self.L1)]])

                self.BOX.create() 
                self.BOX1.create()
                self.BOX2.create()
                
                if self.dis > (width/2)*.9:
                    return task.done 
            
            return task.cont
        taskMgr.add(animSHOW,"showTask")    
    

mg = menuGEO()
run()

greetz dirk

Thanks for the grid, it’s helping me quickly prototype the modules I need for a grid based game.

I MUST be doing something wrongly. Becasue I have copied and pasted all your post >py files. I have corrected the names so that the upper case/lower case is correct in the names and sill all I get is the grid on a grey background. No buttons,not arrows nothing.

:smiley: thats true, the rest of the code is not public at the moment :wink: when the tool is ready i will upload the code here…

Ok thanks ditus. I thought I had done something wrong when sintalling the code.