array list problems

i changed form the distance measuring to a collision recall…

thx for all the help :slight_smile:

# weapons drh 2008

import direct.directbase.DirectStart
from direct.showbase import DirectObject
from pandac.PandaModules import Vec3,Vec4,BitMask32
from direct.task.Task import Task
from direct.interval.IntervalGlobal import * 
from pandac.PandaModules import * 
import modelLOADER

count = 100
BULLETScount = 500

COLORintervalTIME = 30
cTrav1 = CollisionTraverser()

class WEAPON(DirectObject.DirectObject):
    def __init__(self):

        print "weapons loaded"
       
        
        base.setBackgroundColor(0, 0, 0)
        self.keyMap = {"d":0,"h":0}
    
        self.accept("mouse1", self.Keys, ["d",1])
        self.accept("mouse1-up", self.Keys, ["d",0])
    
        taskMgr.add(self.fire,"fireTask")

    def Keys(self, key, value):
        self.keyMap[key] = value

    
    def fire(self, task):
            
            
               
             

            for i in range(count):
                
                
  
                if self.keyMap["d"]:
                    
                    proj = [None for ii in range(count)] 
                    
                    proj[ii] = loader.loadModel("projectil")     
                    proj[ii].reparentTo(render)
                    proj[ii].setScale(.2,.2,.2)
                    
                    ###
                    ###COLLISION 
                    ###
                    modelLOADER.environ.setCollideMask(BitMask32.bit(0))
                    modelLOADER.enemys[i].setCollideMask(BitMask32.bit(1))
                                    
                    projENEMYRay = CollisionRay()
                    projENEMYRay.setOrigin(0,0,100)
                    projENEMYRay.setDirection(0,0,-1)
                                                            
                    projENEMYCol = CollisionNode('projRay')
                    projENEMYCol.addSolid(projENEMYRay)
                    projENEMYCol.setFromCollideMask(BitMask32.bit(1))
                    projENEMYCol.setIntoCollideMask(BitMask32.allOff())
    
                    projENEMYColNp = proj[ii].attachNewNode(projENEMYCol)
                    projENEMYQueue = CollisionHandlerQueue()
                    cTrav1.addCollider(projENEMYColNp, projENEMYQueue)

                    cTrav1.showCollisions(render)
                    projENEMYColNp.show()
                    
                    ###
                    
                    self.proj1 = loader.loadModel("projectil")      
                    self.proj1.reparentTo(render)
                    self.proj1.setScale(.2,.2,.2)
   
                    playerH = modelLOADER.player.getH()
                    playerP = modelLOADER.player.getP()

                    X =modelLOADER.player.getX()-.15
                    Y =modelLOADER.player.getY()
                    Z =modelLOADER.player.getZ()-0.6
                        
                    X1 =modelLOADER.player.getX()+.15
                    Y1 =modelLOADER.player.getY()
                    Z1 =modelLOADER.player.getZ()-0.6
                    
                    self.direction1 = modelLOADER.player.getHpr()
                        
                    proj[ii].setPos(X,Y,Z)                
                    proj[ii].setHpr(self.direction1)
                    
                    self.proj1.setPos(X1,Y1,Z1)
                    self.proj1.setHpr(self.direction1)
            
                    fireX = LerpPosInterval(proj[ii], BULLETScount,Point3(0,-100,0), other = proj[ii])
                    fireX.start()
                    fireX2 = LerpPosInterval(self.proj1, BULLETScount,Point3(0,-100,0), other = self.proj1)
                    fireX2.start()
                    fireX1 = LerpColorInterval(proj[ii], COLORintervalTIME, Vec4(0,0,1,1), Vec4(1,.5,0,1))
                    fireX1.start()
                    fireX3 = LerpColorInterval(self.proj1, COLORintervalTIME, Vec4(0,0,1,1), Vec4(1,.5,0,1))
                    fireX3.start()
                    
                    def COLLISION(task):
                        for i in range(projENEMYQueue.getNumEntries()): 
                            entry = projENEMYQueue.getEntry(i) 
                            point = entry.getSurfacePoint(entry.getIntoNodePath())
                            #point1 = entry.getSurfacePoint(getFromNodePath())
                            
                            
                            
                            #modelLOADER.enemys[i].remove()
 
                            print entry
                            print point
                            #print point1
                        
                        return Task.cont
                    taskMgr.add(COLLISION,"collisionTask")  
  
                return Task.cont

we = WEAPON()