def PlayHighlightAnimation(self): cs = trinity.TriCurveSet() expandCurve = trinity.Tr2ScalarCurve() expandCurve.interpolation = trinity.TR2CURVE_HERMITE expandCurve.length = 0.3 expandCurve.startValue = 0.0 expandCurve.endValue = 100.0 cs.curves.append(expandCurve) trinity.CreateBinding(cs, expandCurve, 'currentValue', self.sr.label.GetRenderObject(), 'glowExpand') alphaCurve = trinity.Tr2ScalarCurve() alphaCurve.interpolation = trinity.TR2CURVE_HERMITE alphaCurve.length = 0.3 alphaCurve.startValue = 1.0 alphaCurve.endValue = 0.0 cs.curves.append(alphaCurve) trinity.CreateBinding(cs, alphaCurve, 'currentValue', self.sr.label.GetRenderObject(), 'glowColor.a') depthCurve = trinity.Tr2ScalarCurve() depthCurve.interpolation = trinity.TR2CURVE_HERMITE depthCurve.length = 0.3 depthCurve.startValue = 0 depthCurve.endValue = -0.25 cs.curves.append(depthCurve) trinity.CreateBinding(cs, depthCurve, 'currentValue', self.GetRenderObject(), 'depthMin') trinity.CreateBinding(cs, depthCurve, 'currentValue', self.GetRenderObject(), 'depthMax') cs.Play() cs.StopAfter(cs.GetMaxCurveDuration()) trinity.device.curveSets.append(cs) self.animation = cs
def FlipFlop(self, sprite, duration = 1.0, startValue = 0.0, endValue = 1.0, loops = 5): curve = trinity.Tr2ScalarCurve() curve.length = duration curve.interpolation = trinity.TR2CURVE_LINEAR curve.startValue = startValue curve.AddKey(0.01 * duration, endValue) curve.AddKey(0.5 * duration, endValue) curve.AddKey(0.51 * duration, startValue) curve.endValue = startValue return uicore.animations.Play(curve, sprite, 'opacity', loops, None, False)
def _SetupDynamicLight(self, curveSet): angle = random.random() * 2 * pi light = trinity.Tr2PointLight() light.color = geo2.Vec3Lerp(DYNAMIC_WARP_LIGHT_COLOR, (1, 1, 1, 1), random.random()) light.radius = 0.7 light.position = (sin(angle) * 1.5, cos(angle) * 1.5, 2) curve = trinity.Tr2ScalarCurve() curve.AddKey(0, 2) curve.AddKey(8.0 / 20.0, -6) curve.Sort() curve.timeOffset = curveSet.scaledTime curveSet.curves.append(curve) binding = trinity.CreateBinding(curveSet, curve, 'currentValue', light, 'position.z') return (light, curve, binding)
def PlayUnhighlightAnimation(self): cs = trinity.TriCurveSet() depthCurve = trinity.Tr2ScalarCurve() depthCurve.interpolation = trinity.TR2CURVE_HERMITE depthCurve.length = 0.3 depthCurve.startValue = -0.25 depthCurve.endValue = 0 cs.curves.append(depthCurve) trinity.CreateBinding(cs, depthCurve, 'currentValue', self.GetRenderObject(), 'depthMin') trinity.CreateBinding(cs, depthCurve, 'currentValue', self.GetRenderObject(), 'depthMax') cs.Play() cs.StopAfter(cs.GetMaxCurveDuration()) trinity.device.curveSets.append(cs) self.animation = cs
def GetScalar(self, startValue, endValue, duration, curveType=uiconst.ANIM_SMOOTH, timeOffset=0.0): if curveType is uiconst.ANIM_RANDOM: curve = trinity.Tr2ScalarExprCurve() else: curve = trinity.Tr2ScalarCurve() if not isinstance(curveType, (list, tuple)): curve.startValue = startValue curve.endValue = endValue curve.length = duration curve.timeOffset = timeOffset if curveType not in (uiconst.ANIM_LINEAR, uiconst.ANIM_RANDOM ) and not isinstance(curveType, (list, tuple)): curve.interpolation = trinity.TR2CURVE_HERMITE if isinstance(curveType, (list, tuple)): points = curveType for keyTime, keyValue in points: key = keyTime * duration curve.AddKey(key, keyValue) elif curveType in uiconst.ANIM_OVERSHOT_TYPES: amount = self.GetOvershotAmount(curveType) keyTime = OVERSHOT_TIME * duration keyVal = endValue + amount * (endValue - startValue) curve.AddKey(keyTime, keyVal) elif curveType is uiconst.ANIM_WAVE: curve.AddKey(0.5 * duration, endValue) curve.endValue = startValue elif curveType is uiconst.ANIM_RANDOM: curve.expr = 'input1 + input2 * perlin(value, %s, 3.0, 4)' % duration curve.input1 = startValue curve.input2 = endValue curve.startValue = curve.endValue = startValue + (endValue - startValue) / 2 curve.AddKey(25, endValue) curve.length = 50.0 elif curveType is uiconst.ANIM_BOUNCE: curve.interpolation = trinity.TR2CURVE_HERMITE curve.startValue = startValue curve.AddKey(0.5 * duration, endValue) curve.endValue = startValue return curve
def CreateScalarCurve(destObject, sourceAttr, destAttr, curveSet, length=1.0, startValue=0.0, endValue=0.0, cycle=False, startTangent=0.0, endTangent=0.0): curve = trinity.Tr2ScalarCurve() curve.length = length curve.cycle = cycle curve.startValue = startValue curve.endValue = endValue curve.interpolation = 2 curve.startTangent = startTangent curve.endTangent = endTangent curveSet.curves.append(curve) binding = AddBinding(curve, sourceAttr, destObject, destAttr, curveSet) return (curve, binding)
def SetupSharedBlinkingCurve(self, cuverSetName, fromCurveValue, toCurveValue, duration, *args): curveSet = getattr(uicore, cuverSetName, None) if curveSet: curve = curveSet.curves[0] else: curveSet = trinity.TriCurveSet() setattr(uicore, cuverSetName, curveSet) setattr(curveSet, 'name', cuverSetName) trinity.device.curveSets.append(curveSet) curveSet.Play() curve = trinity.Tr2ScalarCurve() curve.name = 'blinking_curve' curve.length = duration curve.startValue = fromCurveValue curve.endValue = fromCurveValue curve.AddKey(duration / 2.0, toCurveValue) curve.cycle = True curve.interpolation = trinity.TR2CURVE_LINEAR curveSet.curves.append(curve) if getattr(self, 'blinkBinding', None) is not None: curveSet.bindings.remove(self.blinkBinding) self.blinkBinding = trinity.CreatePythonBinding(curveSet, curve, 'currentValue', self, 'opacity')
def CreateEaseOutCurve(length): curve = trinity.Tr2ScalarCurve() curve.AddKey(0, 1) curve.AddKey(length, 0) curve.interpolation = trinity.TR2CURVE_HERMITE return curve