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
-> 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.
thats true, the rest of the code is not public at the moment 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.