示例#1
0
文件: Emitter.py 项目: matdan/venice
 def updateAngle(self, masterOrSlave):
     if not masterOrSlave == self.state:
         return
     
     if self.state:
         if self.target:
             self.setAngle(self.angleToTarget(self.installation.getTarget(self.target)))
         elif self.tertiaryTarget:
             distance = self.targetXDistance(self.tertiaryTarget)
             maxAngle = abs(self.angleToTarget( [ float(self.range[1]),0, 1200 ] ))
             if distance > 0:
                 relevantRange = self.range[1]
                 outOfRange = distance - (int(relevantRange) - int(self.phyLocation[0]))
                 self.setAngle(vm.mapToDomain(outOfRange, 0, float(abs(relevantRange-float(self.extRangeX[1]))), maxAngle, 0))
             elif distance < 0:
                 relevantRange = self.range[0]
                 outOfRange = int(self.phyLocation[0]) - int(relevantRange) + distance
                 self.setAngle( vm.mapToDomain(outOfRange, 0, -1 * float(abs(relevantRange-float(self.extRangeX[0]))), -1 * float(maxAngle), 0) )
             else:
                 raise Exception("Evil's afoot!")
             
             
     elif not self.state:
         i = 0
         comComb = 0
         for command in self.commands:
             comComb += command
             i += 1
         if i == 0:
             self.setAngle(0)
         else:
             self.setAngle(comComb/i)
示例#2
0
 def updateAngle(self, masterOrSlave):
     if not masterOrSlave == self.state:
         return
     
     if self.state:
         if self.target:
             self.setAngle(self.angleToTarget(self.installation.getTarget(self.target)))
         elif self.secondaryTarget:
             distance = self.targetXDistance(self.secondaryTarget)
             #if self.arrLocation[0] == '0' and self.arrLocation[1] == '4':
             #print distance
             #print "distance " + str(distance)
             #maxAngle = abs(self.angleToTarget( [ float(self.range[1])-float(self.phyLocation[0]),0, 1200 ] ))
             maxAngle = abs(self.angleToTarget( [ float(self.range[1]),0, 1200 ] ))
             #print "maxAngle = " + str(vm.radToDeg(maxAngle))
             if distance > 0:
                 relevantRange = self.range[1]
                 outOfRange = distance - (int(relevantRange) - int(self.phyLocation[0]))
                 #print outOfRange
                 #print vm.mapToDomain(outOfRange, 0, float(abs(relevantRange-float(self.phyLocation[0]))), maxAngle, 0)
                 self.setAngle(vm.mapToDomain(outOfRange, 0, float(abs(relevantRange-float(self.phyLocation[0]))), maxAngle, 0))
             elif distance < 0:
                 relevantRange = self.range[0]
                 outOfRange = int(self.phyLocation[0]) - int(relevantRange) + distance
                 #print "oor " + str(outOfRange)
                 #print "reR ", relevantRange
                 #print self.phyLocation
                 self.setAngle( vm.mapToDomain(outOfRange, 0, -1 * float(abs(relevantRange-float(self.phyLocation[0]))), -1 * float(maxAngle), 0) )
             else:
                 raise Exception("Evil's afoot!")
             
             
     elif not self.state:
         i = 0
         comComb = 0
         for command in self.commands:
             comComb += command
             i += 1
         if i == 0:
             self.setAngle(0)
         else:
             self.setAngle(comComb/i)