import math
  
#============================================
class BasicCache( ):
    # the constructor
    def __init__( self ):
        self.data = [ ]
        # Super classes will assign test to this item
        self.dataStr = ''
        # Ditto for the path to where the dataStr will
        # be written
        self.dataPath = ''
    
    #--> reinitializes the variables so future runs are not corrupted
    def reset(self):
        self.data = [ ]
        self.dataStr = ''
    
    #-->adds all particles together
    def add( self, xyz ):
        self.data.append(xyz)
    
    #-->adds particles and their positions
    #-->individually so that each curve
    #-->follows one particle's path
    def addIndiv(self, index, pos):
        if len(self.data) > index:
            xyz = pos[0:3]
            self.data[index].append(xyz[0])
            self.data[index].append(xyz[1])
            self.data[index].append(xyz[2])
        else:
            self.data.append(pos[0:3])
    
    def get( self ):
        return self.data
    
    #-->specific to individual particle code
    def getIndiv(self, index):
        return self.data[index]
        
    def length(self):
        return len(self.data)
    
    
    #-->sets the data path to the current
    #-->project and scene
    def setDataPath(self, fullpath):
        self.dataPath = fullpath
        print("set path = %s" % self.dataPath)
    
    #-->prints a file based on the information
    #-->gathered from the particle cache    
    def writeToFile(self):
        print("write path = %s" % self.dataPath)
        fileid = open(self.dataPath, 'w')
        fileid.write(self.dataStr)
        fileid.close()
        return self.dataPath