Skip to content

Commit

Permalink
Cleans up renderNote a bit
Browse files Browse the repository at this point in the history
  • Loading branch information
erodozer committed Jun 24, 2011
1 parent 788ef38 commit 6db8d97
Showing 1 changed file with 73 additions and 128 deletions.
201 changes: 73 additions & 128 deletions src/Instrument.py
Expand Up @@ -434,6 +434,13 @@ def loadNotes(self):
else:
engine.loadImgDrawing(self, "noteButtons", get("notes.png"))

size = (self.boardWidth/self.strings/2, self.boardWidth/self.strings/2)
self.noteVtx = np.array([[-size[0], .27, size[1]],
[size[0], .27, size[1]],
[-size[0], -.27, -size[1]],
[size[0], -.27, -size[1]]],
dtype=np.float32)

self.noteTexCoord = [[np.array([[i/float(self.strings), s/6.0],
[(i+1)/float(self.strings), s/6.0],
[i/float(self.strings), (s+1)/6.0],
Expand Down Expand Up @@ -954,69 +961,40 @@ def renderNote(self, length, sustain, color, tailOnly = False, isTappable = Fals
noteImage = self.noteButtons

tailOnly = True

if isOpen:
size = (self.boardWidth/1.9, (self.boardWidth/self.strings)/3.0)
texSize = (0,1)
if spNote == True:
if self.noteOpenAnimatedPower:
noteImage = self.noteDrumOpenAnimatedPower
texY = (self.noteSpinFrameIndex*.066667, (self.noteSpinFrameIndex - 1)*.066667)
else:
texY = (3.0*0.166667,4.0*0.166667)

elif self.starPowerActive == True: #death_au: drum sp active notes.
if self.noteOpenAnimatedPowerActive:
noteImage = self.noteDrumOpenAnimatedPowerActive
texY = (self.noteSpinFrameIndex*.066667, (self.noteSpinFrameIndex - 1)*.066667)
else:
texY = (5.0*0.166667,1.0)

else:
if self.noteOpenAnimated:
noteImage = self.noteDrumOpenAnimated
texY = (self.noteSpinFrameIndex*.066667, (self.noteSpinFrameIndex - 1)*.066667)
else:
texY = (1.0*0.166667,2.0*0.166667)

else:
size = (self.boardWidth/self.strings/2, self.boardWidth/self.strings/2)
if self.isDrum:
fret -= 1

y = 0
if spNote:
y += 2
elif self.starPowerActive:
y += 4
if isTappable:
y += 1
y = 0
if spNote:
y += 2
elif self.starPowerActive:
y += 4
if isTappable:
y += 1

if self.noteSpin:
texCoord = self.animatedNoteTexCoord[self.noteSpinFrameIndex][fret]
if isTappable:
if spNote:
noteImage = self.noteAnimatedPowerHOPO
elif self.starPowerActive:
noteImage = self.noteAnimatedPowerActiveHOPO
else:
noteImage = self.noteAnimatedHOPO
if self.noteSpin:
texCoord = self.animatedNoteTexCoord[self.noteSpinFrameIndex][fret]
if isTappable:
if spNote:
noteImage = self.noteAnimatedPowerHOPO
elif self.starPowerActive:
noteImage = self.noteAnimatedPowerActiveHOPO
else:
if spNote:
noteImage = self.noteAnimatedPower
elif self.starPowerActive:
noteImage = self.noteAnimatedPowerActive
else:
noteImage = self.noteAnimatedNormal
if not noteImage:
noteImage = self.noteButtons
texCoord = self.noteTexCoord[y][fret]
noteImage = self.noteAnimatedHOPO
else:
if spNote:
noteImage = self.noteAnimatedPower
elif self.starPowerActive:
noteImage = self.noteAnimatedPowerActive
else:
noteImage = self.noteAnimatedNormal
if not noteImage:
noteImage = self.noteButtons
texCoord = self.noteTexCoord[y][fret]
else:
noteImage = self.noteButtons
texCoord = self.noteTexCoord[y][fret]

self.engine.draw3Dtex(noteImage, vertex = (-size[0],size[1],size[0],-size[1]), texcoord = texCoord,
scale = (1,1,0), rot = (30,1,0,0), multiples = False, color = color, vertscale = .27)
self.engine.draw3Dtex(noteImage, vertex = self.noteVtx, texcoord = texCoord,
scale = (1,1,0), rot = (30,1,0,0), multiples = False, color = color)

else: #3d Notes
shaders.setVar("Material",color,"notes")
Expand All @@ -1027,23 +1005,9 @@ def renderNote(self, length, sustain, color, tailOnly = False, isTappable = Fals
else:
self.notepos = self.engine.theme.notepos
self.noterot = self.engine.theme.noterot

#mesh = outer ring (black)
#mesh_001 = main note (key color)
#mesh_002 = top (spot or hopo if no mesh_003)
#mesh_003 = hopo bump (hopo color)

if self.isDrum:
if fret == 0:
fret = 4 #fret 4 is angled, get fret 2 :)
#fret = 2 #compensating for this in drum.
elif fret == 4:
fret = 0

if spNote == True and self.starMesh is not None and isOpen == False:

if spNote == True and self.starMesh is not None:
meshObj = self.starMesh
elif isOpen == True and self.openMesh is not None:
meshObj = self.openMesh
else:
meshObj = self.noteMesh

Expand All @@ -1052,77 +1016,59 @@ def renderNote(self, length, sustain, color, tailOnly = False, isTappable = Fals
glDepthMask(1)
glShadeModel(GL_SMOOTH)

if spNote == True and self.threeDspin == True and isOpen == False:
if spNote and self.threeDspin:
glRotate(90 + self.time/3, 0, 1, 0)
if isOpen == False and spNote == False and self.noterotate == True:
elif not spNote and self.noterotate:
glRotatef(90, 0, 1, 0)
glRotatef(-90, 1, 0, 0)

if fret == 0: # green note/ drums open note
glRotate(self.noterot[0], 0, 0, 1), glTranslatef(0, self.notepos[0], 0)
elif fret == 1: # red note
glRotate(self.noterot[1], 0, 0, 1), glTranslatef(0, self.notepos[1], 0)
elif fret == 2: # yellow
glRotate(self.noterot[2], 0, 0, 1), glTranslatef(0, self.notepos[2], 0)
elif fret == 3:# blue note
glRotate(self.noterot[3], 0, 0, 1), glTranslatef(0, self.notepos[3], 0)
elif fret == 4:# orange note / green on drums
glRotate(self.noterot[4], 0, 0, 1), glTranslatef(0, self.notepos[4], 0)

if isOpen:
if self.opentexture_stara and spNote==False and self.starPowerActive:
self.noteTex = self.opentexture_stara

elif self.opentexture and spNote==False:
self.noteTex = self.opentexture

elif self.opentexture_star and spNote==True:
self.noteTex = self.opentexture_star

elif self.spActTex and isOpen == False and spNote == False and spAct and self.isDrum:
self.noteTex = self.spActTex

elif self.staratex == True and self.starPowerActive and spNote == False and isOpen == False:
self.noteTex = getattr(self,"staratex"+chr(97+fret))

elif self.notetex == True and spNote == False and isOpen == False:
self.noteTex = getattr(self,"notetex"+chr(97+fret))
if fret >= 0 and fret <= 4:
glRotate(self.noterot[fret], 0, 0, 1), glTranslatef(0, self.notepos[fret], 0)

if self.noteTex:

elif self.startex == True and spNote == True and isOpen == False:
self.noteTex = getattr(self,"startex"+chr(97+fret))
if self.startex and spNote:
self.noteTex = getattr(self,"startex"+chr(97+fret))

elif self.staratex and self.starPowerActive:
self.noteTex = getattr(self,"staratex"+chr(97+fret))

glColor3f(1,1,1)
glEnable(GL_TEXTURE_2D)
self.noteTex.texture.bind()
glMatrixMode(GL_TEXTURE)
glScalef(1, -1, 1)
glMatrixMode(GL_MODELVIEW)
glScalef(self.boardScaleX, self.boardScaleY, 1)
elif self.notetex:
self.noteTex = getattr(self,"notetex"+chr(97+fret))

if isTappable:
mesh = "Mesh_001"
else:
mesh = "Mesh"
glColor3f(1,1,1)
glEnable(GL_TEXTURE_2D)
self.noteTex.texture.bind()
glMatrixMode(GL_TEXTURE)
glScalef(1, -1, 1)
glMatrixMode(GL_MODELVIEW)
glScalef(self.boardScaleX, self.boardScaleY, 1)

meshObj.render(mesh)
if isTappable:
mesh = "Mesh_001"
else:
mesh = "Mesh"

if shaders.enable("notes"):
shaders.setVar("isTextured",True)
meshObj.render(mesh)
shaders.disable()

glMatrixMode(GL_TEXTURE)
glLoadIdentity()
glMatrixMode(GL_MODELVIEW)
glDisable(GL_TEXTURE_2D)
if shaders.enable("notes"):
shaders.setVar("isTextured",True)
meshObj.render(mesh)
shaders.disable()

glMatrixMode(GL_TEXTURE)
glLoadIdentity()
glMatrixMode(GL_MODELVIEW)
glDisable(GL_TEXTURE_2D)

else:
#mesh = outer ring (black)
#mesh_001 = main note (key color)
#mesh_002 = top (spot or hopo if no mesh_003)
#mesh_003 = hopo bump (hopo color)

if not self.noteTex:
#death_au: fixed 3D note colours
glColor4f(*color)
if isOpen == True and self.starPowerActive == False:
glColor4f(self.opencolor[0],self.opencolor[1],self.opencolor[2], 1)
if shaders.enable("notes"):
shaders.setVar("isTextured",False)
meshObj.render("Mesh_001")
Expand All @@ -1140,7 +1086,6 @@ def renderNote(self, length, sustain, color, tailOnly = False, isTappable = Fals
glColor3f(self.meshColor[0], self.meshColor[1], self.meshColor[2])
meshObj.render("Mesh")


glDepthMask(0)
glPopMatrix()
glDisable(GL_DEPTH_TEST)
Expand Down

0 comments on commit 6db8d97

Please sign in to comment.