def createMotionTrails(self, parent, vertex_list = small_vertex_list, motion_color = default_motion_color):
     self.mtrail = PolyTrail(None, vertex_list, motion_color, 0.29999999999999999)
     self.mtrail.setUnmodifiedVertexColors(motion_color)
     self.mtrail.reparentTo(parent)
     self.mtrail.motion_trail.geom_node_path.setTwoSided(False)
     self.mtrail.setBlendModeOn()
     self.mtrail.setTimeWindow(0.29999999999999999)
     self.mtrail.beginTrail()
    def getTrailEffectsIval(self):
        if not self.trailEffectsIval:
            if self.trailTypeId is None:
                self.effectNode.setPos(self.velocity)
                self.trailEffectsIval = Wait(self.burstDelay)
                return self.trailEffectsIval

            self.trailEffectsIval = Parallel()
            self.trailEffectsIval.append(
                ProjectileInterval(self.effectsNode,
                                   startVel=self.velocity,
                                   duration=self.burstDelay,
                                   gravityMult=self.gravityMult))
            if self.trailTypeId is None:
                return self.trailEffectsIval

            theSoundInterval = SoundInterval(random.choice(self.trailSfx),
                                             node=self.effectsNode,
                                             cutOff=3000)
            self.trailEffectsIval.append(
                Func(self.setupSoundVolume, theSoundInterval))
            self.trailEffectsIval.append(theSoundInterval)
            if base.options.getSpecialEffectsSetting(
            ) == base.options.SpecialEffectsLow:
                if self.trailTypeId != FireworkTrailType.LongGlowSparkle:
                    self.trailTypeId = FireworkTrailType.Default

            if self.trailTypeId == FireworkTrailType.Default:
                glowEffect = Glow.getEffect()
                if glowEffect:
                    glowEffect.reparentTo(self.effectsNode)
                    glowEffect.setColorScale(Vec4(1, 1, 1, 1))
                    glowEffect.setScale(30.0)
                    self.trailEffects.append(glowEffect)
                    self.trailEffectsIval.append(Func(glowEffect.startLoop))

            elif self.trailTypeId == FireworkTrailType.Polygonal:
                r = 2.5
                mColor = Vec4(1, 1, 1, 1)
                vertex_list = [
                    Vec4(r, 0.0, r, 1.0),
                    Vec4(r, 0.0, -r, 1.0),
                    Vec4(-r, 0.0, -r, 1.0),
                    Vec4(-r, 0.0, r, 1.0),
                    Vec4(r, 0.0, r, 1.0)
                ]
                motion_color = [mColor, mColor, mColor, mColor, mColor]
                trailEffect = PolyTrail(None, vertex_list, motion_color, 0.5)
                trailEffect.setUnmodifiedVertexColors(motion_color)
                trailEffect.reparentTo(self.effectsNode)
                trailEffect.motion_trail.geom_node_path.setTwoSided(False)
                trailEffect.setBlendModeOn()
                trailEffect.setLightOff()
                self.trailEffects.append(trailEffect)
                self.trailEffectsIval.append(Func(trailEffect.beginTrail))
            elif self.trailTypeId == FireworkTrailType.Glow:
                trailEffect = GlowTrail.getEffect()
                if trailEffect:
                    trailEffect.reparentTo(self.effectsNode)
                    trailEffect.setEffectScale(self.scale * 0.75)
                    trailEffect.setEffectColor(Vec4(1, 1, 1, 1))
                    trailEffect.setLifespan(0.25)
                    self.trailEffects.append(trailEffect)
                    self.trailEffectsIval.append(Func(trailEffect.startLoop))

            elif self.trailTypeId == FireworkTrailType.Sparkle:
                trailEffect = SparksTrail.getEffect()
                if trailEffect:
                    trailEffect.reparentTo(self.effectsNode)
                    trailEffect.setEffectScale(self.scale)
                    trailEffect.setEffectColor(Vec4(1, 1, 1, 1))
                    self.trailEffects.append(trailEffect)
                    self.trailEffectsIval.append(Func(trailEffect.startLoop))

            elif self.trailTypeId == FireworkTrailType.GlowSparkle:
                glowEffect = Glow.getEffect()
                if glowEffect:
                    glowEffect.reparentTo(self.effectsNode)
                    glowEffect.setColorScale(Vec4(1, 1, 1, 1))
                    glowEffect.setScale(50.0)
                    self.trailEffects.append(glowEffect)
                    self.trailEffectsIval.append(Func(glowEffect.startLoop))

                trailEffect = SparksTrail.getEffect()
                if trailEffect:
                    trailEffect.reparentTo(self.effectsNode)
                    trailEffect.setEffectScale(self.scale)
                    trailEffect.setEffectColor(Vec4(1, 1, 1, 1))
                    self.trailEffects.append(trailEffect)
                    self.trailEffectsIval.append(Func(trailEffect.startLoop))

            elif self.trailTypeId == FireworkTrailType.LongSparkle:
                trailEffect = SparksTrailLong.getEffect()
                if trailEffect:
                    trailEffect.reparentTo(self.effectsNode)
                    trailEffect.setEffectScale(self.scale)
                    trailEffect.setEffectColor(Vec4(1, 1, 1, 1))
                    trailEffect.setLifespan(4.0)
                    self.trailEffects.append(trailEffect)
                    self.trailEffectsIval.append(Func(trailEffect.startLoop))

            elif self.trailTypeId == FireworkTrailType.LongGlowSparkle:
                trailEffect = SparksTrailLong.getEffect()
                if trailEffect:
                    trailEffect.reparentTo(self.effectsNode)
                    trailEffect.setEffectScale(self.scale)
                    trailEffect.setEffectColor(self.secondaryColor)
                    trailEffect.setLifespan(3.5)
                    self.trailEffects.append(trailEffect)
                    self.trailEffectsIval.append(Func(trailEffect.startLoop))

                if base.options.getSpecialEffectsSetting(
                ) >= base.options.SpecialEffectsMedium:
                    trailEffect = GlowTrail.getEffect()
                    if trailEffect:
                        trailEffect.reparentTo(self.effectsNode)
                        trailEffect.setEffectScale(self.scale)
                        trailEffect.setEffectColor(self.primaryColor)
                        trailEffect.setLifespan(1.0)
                        self.trailEffects.append(trailEffect)
                        self.trailEffectsIval.append(
                            Func(trailEffect.startLoop))

        return self.trailEffectsIval