/* * Author: Needles * https://steamcommunity.com/profiles/76561198026257137/ */ printl("*** ANIMATED_SPRITE"); ::AnimatedSprite <- {}; ::AnimatedSprite.animatedSpriteMap <- {}; ::AnimatedSprite.AnimatedSpriteData <- class { materialPath = null; frameMap = null; keyList = null; constructor(_materialPath, _frameMap) { materialPath = _materialPath; frameMap = _frameMap; keyList = []; foreach (k, _ in frameMap) { keyList.append(k); } } function GetFrameIndex(index) { return frameMap[keyList[index]]; } function GetNamedFrameIndex(name) { return frameMap[name]; } function GetLength() { return keyList.len(); } } function AnimatedSprite::AddAnimatedSprite(materialPath, frameMap) { if (materialPath in ::AnimatedSprite.animatedSpriteMap) { ::Debug.Print("*** ANIMATED_SPRITE - Failed to add animated sprite data. An animated sprite data already exists for the material " + materialPath); return ::AnimatedSprite.animatedSpriteMap[materialPath]; } ::AnimatedSprite.animatedSpriteMap[materialPath] <- ::AnimatedSprite.AnimatedSpriteData(materialPath, frameMap); ::Debug.Print("*** ANIMATED_SPRITE - Added animation data for material " + materialPath); return ::AnimatedSprite.animatedSpriteMap[materialPath]; } function AnimatedSprite::GetAnimationData(materialPath) { if (!(materialPath in ::AnimatedSprite.animatedSpriteMap)) { ::Debug.Print("*** ANIMATED_SPRITE - Failed to get animated sprite data. No animated sprite data exists for material " + materialPath); return null; } return ::AnimatedSprite.animatedSpriteMap[materialPath]; } function AnimatedSprite::PrecacheMaterials() { foreach(materialPath, _ in ::AnimatedSprite.animatedSpriteMap) { PrecacheModel(materialPath); } }