Yeah, best thing is to think something through before you do it. This way, you won't have to repeat / correct the process more times than necessary. A good base / foundation / structure is paramount for a well made skin, since it won't need rewriting only slight adjutments, and it's easier to build and add on top of a healthy base.LuciferVisuals wrote: ↑May 6th, 2023, 11:41 am Ill look into your suggestion, I wanted to broaden my idea base anyway, I know I have just scratched the Surface.
Yes, the update dividers always slow things down, because the skin update is basically the equivalent of the fastest update happening in your skin (a minimum update used as reference, if you like). Update dividers are just integer multipliers to that. Negative ones will cause that section to only update at refresh / load time, so only once at the beginning (a good way to conserve resources for stuff that don't change while the skin is active, or change only on demand via bangs). Setting Disabled to 1 on a measure will never update it, not even at load time (a good way to start from numerical 0 in Calc measures, for example), until enabled.LuciferVisuals wrote: ↑May 6th, 2023, 11:41 am OH quick question, I said I did a new iris animation, optically much better, I wanted it to run a bit faster, its o.k. but would look better if it ran faster. I got the update down to Update=25, Unless I'm doing it wrong, inserting an UpdateDivider just slows it down, I tried decimal like UpdateDivider=.1 , and .01 but that did not appear to make any difference, and from my understanding any Negative number will stop it updating. Anything I can do to speed it up a bit?
If you want a faster animation, you can do it either by lowering the skin update (i.e. the one in the [Rainmeter] section) up until the absolute minimum which is 16 ms, or you can use ActionTimer measures that can repeat things using an even lower interval than 16 ms, via correspondingly setting the wait time in their ActionList... options - copy paste the simple code in the example at the bottom of that page to understand better, test it and then change the W variable to, say, 50, and see how you can slow it down and consequently, make things run faster.
Or, if you like to see how that example can apply to an animation like you have, this skin code here can be transformed into this:
Code: Select all
[Variables]
Increment=1
Frames=8
Wait=25
[Rainmeter]
Update=1000
AccurateText=1
DynamicWindowSize=1
---Measures---
[Frame]
Measure=Calc
Formula=(Clamp(Frame+#Increment#,1,#Frames#))
UpdateDivider=-1
DynamicVariables=1
[Play]
Measure=Plugin
Plugin=ActionTimer
ActionList1=Init | Wait #Wait# | Repeat Step,#Wait#,#Frames#
Init=[!UpdateMeasure Play][!UpdateMeter IrisFrame][!Redraw]
Step=[!UpdateMeasure Frame][!UpdateMeasure Play][!UpdateMeter IrisFrame][!Redraw]
UpdateDivider=-1
DynamicVariables=1
---Meters---
[IrisFrame]
Meter=Image
W=300
H=169
MeasureName=Frame
ImageName=#@#%1.jpg
UpdateDivider=-1
[CloseIris]
Meter=String
X=75
Y=170
W=150
SolidColor=255,0,0,255
StringAlign=Center
Padding=0,10,0,10
AntiAlias=1
Text=Close Iris
LeftMouseUpAction=[!CommandMeasure Play "Stop 1"][!SetVariable Increment 1][!CommandMeasure Play "Execute 1"]
UpdateDivider=-1
DynamicVariables=1
[OpenIris]
Meter=String
X=225
Y=170
W=150
SolidColor=0,0,255,255
StringAlign=Center
Padding=0,10,0,10
AntiAlias=1
Text=Open Iris
LeftMouseUpAction=[!CommandMeasure Play "Stop 1"][!SetVariable Increment -1][!CommandMeasure Play "Execute 1"]
UpdateDivider=-1
DynamicVariables=1
but in this case you can lower the Wait variable below 16 ms to make it run even faster. Meanwhile, when not animating, the skin will continue to be updated once every 1 second (well, actually, since everything in it has a -1 update divider, those won't be updating except at load time), saving resources. When animating, it will, of course, update things and redraw stuff once every #Wait# ms as necessary, because of the bangs / actions executed by the ActionTimer measure.
Note: You can't have formulas in the ActionList... options from an ActionTimer measure, so be sure to do your computing for whatever variables you might use there beforehand, so that those variables will yield a plain numerical value by the time they're used in those options.