Script v1_7_1_0
- AI
- Animals
- Collections
- Contracts
- Debug
- Economy
- Elements
- EnvironmentalScore
- Errors
- Events
- GUI
- AnimalScreen
- AnimationElement
- BitmapElement
- BoxLayoutElement
- BreadcrumbsElement
- ButtonElement
- ButtonOverlay
- ChatWindow
- CheckedOptionElement
- ClearElement
- ColorPickButtonElement
- ConstructionScreen
- ContextActionDisplay
- ControlBarDisplay
- DialogElement
- DynamicFadedBitmapElement
- FillLevelsDisplay
- FlowLayoutElement
- FocusManager
- FrameElement
- FrameReferenceElement
- GameInfoDisplay
- GameInfoDisplayMobile
- GamePausedDisplay
- Gui
- GuiDataSource
- GuiElement
- GuiMixin
- GuiOverlay
- GuiProfile
- GuiSoundPlayer
- GuiTopDownCamera
- GuiTopDownCursor
- GuiUtils
- HUDDisplayElement
- HUDElement
- HUDFrameElement
- HUDPopupMessage
- HUDSliderElement
- HUDTextDisplay
- IndexChangeSubjectMixin
- IndexStateElement
- InfoDisplay
- InfoHUDBox
- InGameIcon
- IngameMap
- IngameMapElement
- InputGlyphElement
- InputGlyphElementUI
- InputHelpDisplay
- KeyValueInfoHUDBox
- ListElement
- ListItemElement
- MapOverlayGenerator
- MixerWagonHUDExtension
- MultiTextOptionElement
- MultiValueTween
- Overlay
- PagingElement
- PictureElement
- PlatformIconElement
- PlayerControlPadDisplay
- PlaySampleMixin
- RenderElement
- RoundStatusBar
- ScreenElement
- ScrollingLayoutElement
- SettingsModel
- SideNotification
- SideNotificationMobile
- SliderElement
- SpeakerDisplay
- SpeedMeterDisplay
- SpeedSliderDisplay
- StatusBar
- SteeringSliderDisplay
- TabbedMenu
- TabbedMenuFrameElement
- TabbedMenuWithDetails
- TableElement
- TableHeaderElement
- TerrainLayerElement
- TextBackdropElement
- TextElement
- TextInputElement
- ThreePartBitmapElement
- TimerElement
- ToggleButtonElement
- TopNotification
- Tween
- TweenSequence
- VariableWorkWidthHUDExten...
- VehicleHUDExtension
- VehicleSchemaDisplay
- VideoElement
- WardrobeScreen
- Handtools
- Hud
- I3d
- Input
- Jobs
- Maps
- Materials
- Misc
- Objects
- Parameters
- Placeables
- Placement
- Player
- Shop
- Sounds
- Specialization
- Specializations
- StateMachine
- Statistics
- Tasks
- Triggers
- Utils
- Vehicles
Engine v1_7_1_0
- AI
- Animation
- Camera
- Entity
- Fillplanes
- general
- General
- I3D
- Input
- Lighting
- Math
- Network
- Node
- NoteNode
- Overlays
- Particle System
- Physics
- Rendering
- Scenegraph
- Shape
- Sound
- Spline
- String
- Terrain Detail
- Text Rendering
- Tire Track
- VoiceChat
- XML
Foundation Reference
AnimationElement
DescriptionAnimated image display element. The animation is created by shifting UV texture coordinates per frame across a suitable texture. Used layers: "image" for the display image.Parent
BitmapElementXML Configuration Parameters
GuiElement#animationOffset | int [optional] Initial frame offset of the animation. |
GuiElement#animationFrames | int [optional] Number of frames to animate, defaults to 8. Base this on the display image. |
GuiElement#animationSpeed | int [optional] Time in milliseconds for each frame, defaults to 120ms. |
GuiElement#animationUVOffset | string [optional] Additional UV offset for this animation in the display image space. Format: "[u]px [v]px" |
Functions
copyAttributes
DescriptionDefinitioncopyAttributes()Code
102 | function AnimationElement:copyAttributes(src) |
103 | AnimationElement:superClass().copyAttributes(self, src) |
104 | |
105 | self.animationDefaultUVs = table.copy(src.animationDefaultUVs) |
106 | self.animationOffset = src.animationOffset |
107 | self.animationFrames = src.animationFrames |
108 | self.animationSpeed = src.animationSpeed |
109 | self.animationUVOffset = src.animationUVOffset |
110 | self.animationMode = src.animationMode |
111 | |
112 | self:setImageUVs(nil, unpack(self.animationDefaultUVs)) |
113 | |
114 | self:setAnimationData() |
115 | end |
loadFromXML
DescriptionDefinitionloadFromXML()Code
47 | function AnimationElement:loadFromXML(xmlFile, key) |
48 | AnimationElement:superClass().loadFromXML(self, xmlFile, key) |
49 | |
50 | self.animationOffset = Utils.getNoNil(getXMLInt(xmlFile, key.."#animationOffset"), self.animationOffset) |
51 | self.animationFrames = Utils.getNoNil(getXMLInt(xmlFile, key.."#animationFrames"), self.animationFrames) |
52 | self.animationSpeed = Utils.getNoNil(getXMLInt(xmlFile, key.."#animationSpeed"), self.animationSpeed) |
53 | |
54 | local animationUVOffset = getXMLString(xmlFile, key.."#animationUVOffset") |
55 | if animationUVOffset ~= nil then |
56 | animationUVOffset = GuiUtils.getNormalizedValues(animationUVOffset, self.imageSize) |
57 | self.animationUVOffset = animationUVOffset[1] |
58 | end |
59 | |
60 | local uvs = GuiOverlay.getOverlayUVs(self.overlay, self:getOverlayState()) |
61 | self.animationDefaultUVs = table.copy(uvs) |
62 | |
63 | local mode = getXMLString(xmlFile, key .. "#animationMode") |
64 | if mode ~= nil then |
65 | if mode:lower() == "uvshift" then |
66 | self.animationMode = AnimationElement.MODE.UV_SHIFT |
67 | else |
68 | self.animationMode = AnimationElement.MODE.ROTATE |
69 | end |
70 | end |
71 | |
72 | self:setAnimationData() |
73 | end |
loadProfile
DescriptionDefinitionloadProfile()Code
77 | function AnimationElement:loadProfile(profile, applyProfile) |
78 | AnimationElement:superClass().loadProfile(self, profile, applyProfile) |
79 | |
80 | self.animationOffset = profile:getNumber("animationOffset", self.animationOffset) |
81 | self.animationFrames = profile:getNumber("animationFrames", self.animationFrames) |
82 | self.animationSpeed = profile:getNumber("animationSpeed", self.animationSpeed) |
83 | |
84 | local animationUVOffset = profile:getValue("animationUVOffset") |
85 | if animationUVOffset ~= nil then |
86 | animationUVOffset = GuiUtils.getNormalizedValues(animationUVOffset, self.imageSize) |
87 | self.animationUVOffset = animationUVOffset[1] |
88 | end |
89 | |
90 | local mode = profile:getValue("animationMode") |
91 | if mode ~= nil then |
92 | if mode:lower() == "uvshift" then |
93 | self.animationMode = AnimationElement.MODE.UV_SHIFT |
94 | else |
95 | self.animationMode = AnimationElement.MODE.ROTATE |
96 | end |
97 | end |
98 | end |
new
DescriptionDefinitionnew()Code
28 | function AnimationElement.new(target, custom_mt) |
29 | local self = BitmapElement.new(target, custom_mt or AnimationElement_mt) |
30 | |
31 | self.animationMode = AnimationElement.MODE.UV_SHIFT |
32 | |
33 | self.animationOffset = -1 |
34 | self.animationFrames = 8 |
35 | self.animationTimer = 0 |
36 | self.animationSpeed = 120 |
37 | self.animationFrameSize = 0 |
38 | self.animationStartPos = 0 |
39 | self.animationUVOffset = 0 |
40 | self.animationRotation = 0 |
41 | |
42 | return self |
43 | end |
setAnimationData
DescriptionDefinitionsetAnimationData()Code
160 | function AnimationElement:setAnimationData() |
161 | if self.overlay ~= nil then |
162 | local uvs = GuiOverlay.getOverlayUVs(self.overlay, self:getOverlayState()) |
163 | self.animationFrameSize = ((uvs[5]-uvs[1]- self.animationUVOffset*(self.animationFrames-1)) / self.animationFrames) |
164 | self.animationStartPos = uvs[1] |
165 | self:updateAnimationUVs() |
166 | end |
167 | end |
update
DescriptionDefinitionupdate()Code
119 | function AnimationElement:update(dt) |
120 | AnimationElement:superClass().update(self, dt) |
121 | |
122 | if self.animationMode == AnimationElement.MODE.UV_SHIFT then |
123 | self.animationTimer = self.animationTimer - dt |
124 | if self.animationTimer < 0 then |
125 | self.animationTimer = self.animationSpeed |
126 | self.animationOffset = self.animationOffset + 1 |
127 | |
128 | if self.animationOffset > self.animationFrames - 1 then |
129 | self.animationOffset = 0 |
130 | end |
131 | |
132 | self:updateAnimationUVs() |
133 | end |
134 | elseif self.animationMode == AnimationElement.MODE.ROTATE then |
135 | self.animationRotation = self.animationRotation - 2 * math.pi * (dt / self.animationSpeed) |
136 | |
137 | self:updateRotation() |
138 | end |
139 | end |
updateAnimationUVs
DescriptionDefinitionupdateAnimationUVs()Code
143 | function AnimationElement:updateAnimationUVs() |
144 | if self.animationMode == AnimationElement.MODE.UV_SHIFT then |
145 | local frameOffset = self.animationStartPos + (self.animationFrameSize+self.animationUVOffset)*self.animationOffset |
146 | self:setImageUVs(nil, frameOffset, nil, frameOffset, nil, frameOffset+self.animationFrameSize, nil, frameOffset+self.animationFrameSize, nil) |
147 | end |
148 | end |
updateRotation
DescriptionUpdate overlay rotationDefinition
updateRotation()Code
152 | function AnimationElement:updateRotation() |
153 | local x = self.absSize[1] * self.pivot[1] |
154 | local y = self.absSize[2] * self.pivot[2] |
155 | GuiOverlay.setRotation(self.overlay, self.animationRotation, x, y) |
156 | end |