Etterna 0.74.4
Loading...
Searching...
No Matches
LuaExpressionTransform.h
1/* LuaExpressionTransform - */
2
3#ifndef LuaExpressionTransform_H
4#define LuaExpressionTransform_H
5
6#include "Etterna/Actor/Base/Actor.h"
7#include "LuaReference.h"
8#include <map>
9
16{
17 public:
20
21 void SetFromReference(const LuaReference& ref);
22 void SetNumSubdivisions(int iNumSubdivisions)
23 {
24 ASSERT(iNumSubdivisions > 0);
25 m_iNumSubdivisions = iNumSubdivisions;
26 }
27
28 void TransformItemCached(Actor& a,
29 float fPositionOffsetFromCenter,
30 int iItemIndex,
31 int iNumItems);
32 void TransformItemDirect(Actor& a,
33 float fPositionOffsetFromCenter,
34 int iItemIndex,
35 int iNumItems) const;
36 auto GetTransformCached(float fPositionOffsetFromCenter,
37 int iItemIndex,
38 int iNumItems) const -> const Actor::TweenState&;
39 void ClearCache() { m_mapPositionToTweenStateCache.clear(); }
40
41 protected:
43 m_exprTransformFunction; // params: self,offset,itemIndex,numItems
44 int m_iNumSubdivisions; // 1 == one evaluation per position
46 {
47 float fPositionOffsetFromCenter;
48 int iItemIndex;
49
50 auto operator<(const PositionOffsetAndItemIndex& other) const -> bool
51 {
52 if (fPositionOffsetFromCenter != other.fPositionOffsetFromCenter) {
53 return fPositionOffsetFromCenter <
54 other.fPositionOffsetFromCenter;
55 }
56 return iItemIndex < other.iItemIndex;
57 }
58 };
59 mutable std::map<PositionOffsetAndItemIndex, Actor::TweenState>
60 m_mapPositionToTweenStateCache;
61};
62
63#endif
Base class for all objects that appear on the screen.
Definition Actor.h:77
Handle transforming a list of items.
Definition LuaExpressionTransform.h:16
A self-cleaning Lua reference.
Definition LuaReference.h:10
The present state for the Tween.
Definition Actor.h:140
Definition LuaExpressionTransform.h:46