Etterna 0.74.4
Loading...
Searching...
No Matches
ActorScroller.h
1#ifndef ActorScroller_H
2#define ActorScroller_H
3
4#include "ActorFrame.h"
5#include "Quad.h"
6class XNode;
7#include "Etterna/Models/Lua/LuaExpressionTransform.h"
10{
11 public:
13
14 void SetTransformFromReference(const LuaReference& ref);
15 void SetTransformFromExpression(const std::string& sTransformFunction);
16 void SetTransformFromWidth(float fItemWidth);
17 void SetTransformFromHeight(float fItemHeight);
18
19 void Load2();
20
21 void EnableMask(float fWidth, float fHeight);
22 void DisableMask();
23
24 void UpdateInternal(float fDelta) override;
25 void DrawPrimitives()
26 override; // handles drawing and doesn't call ActorFrame::DrawPrimitives
27
28 void PositionItems();
29
30 void LoadFromNode(const XNode* pNode) override;
31 ActorScroller* Copy() const override;
32
33 void SetLoop(bool bLoop) { m_bLoop = bLoop; }
34 void SetWrap(bool bWrap) { m_bWrap = bWrap; }
35 void SetNumItemsToDraw(float fNumItemsToDraw)
36 {
37 m_fNumItemsToDraw = fNumItemsToDraw;
38 }
39 void SetDestinationItem(float fItemIndex)
40 {
41 m_fDestinationItem = fItemIndex;
42 }
43 void SetCurrentAndDestinationItem(float fItemIndex)
44 {
45 m_fCurrentItem = m_fDestinationItem = fItemIndex;
46 }
47 float GetCurrentItem() const { return m_fCurrentItem; }
48 float GetDestinationItem() const { return m_fDestinationItem; }
49 void ScrollThroughAllItems();
50 void ScrollWithPadding(float fItemPaddingStart, float fItemPaddingEnd);
51 void SetPauseCountdownSeconds(float fSecs)
52 {
53 m_fPauseCountdownSeconds = fSecs;
54 }
55 void SetFastCatchup(bool bOn) { m_bFastCatchup = bOn; }
56 void SetSecondsPerItem(float fSeconds) { m_fSecondsPerItem = fSeconds; }
57 void SetSecondsPauseBetweenItems(float fSeconds)
58 {
59 m_fSecondsPauseBetweenItems = fSeconds;
60 }
61 float GetSecondsPauseBetweenItems() const
62 {
63 return m_fSecondsPauseBetweenItems;
64 }
65 void SetNumSubdivisions(int iNumSubdivisions)
66 {
67 m_exprTransformFunction.SetNumSubdivisions(iNumSubdivisions);
68 }
69 float GetSecondsForCompleteScrollThrough() const;
70 float GetSecondsToDestination() const;
71 int GetNumItems() const { return m_iNumItems; }
72
73 // Commands
74 void PushSelf(lua_State* L) override;
75
76 protected:
77 void PositionItemsAndDrawPrimitives(bool bDrawPrimitives);
78 virtual void ShiftSubActors(int iDist);
79
80 int m_iNumItems;
90 float m_fDestinationItem;
96 float m_fSecondsPauseBetweenItems;
97 float m_fNumItemsToDraw;
98 int m_iFirstSubActorIndex;
99 bool m_bLoop;
100 bool m_bWrap;
101 bool m_bFastCatchup;
102 bool m_bFunctionDependsOnPositionOffset;
103 bool m_bFunctionDependsOnItemIndex;
104 float m_fPauseCountdownSeconds;
105 float m_fQuantizePixels;
106
107 Quad m_quadMask;
108 float m_fMaskWidth, m_fMaskHeight;
109
111 m_exprTransformFunction; // params: self,offset,itemIndex,numItems
112};
113
115{
116 public:
117 ActorScrollerAutoDeleteChildren() { DeleteChildrenWhenDone(true); }
118 bool AutoLoadChildren() const override { return true; }
119 ActorScrollerAutoDeleteChildren* Copy() const override;
120};
121
122#endif
A container for other Actors.
Definition ActorFrame.h:8
Definition ActorScroller.h:115
ActorFrame that moves its children.
Definition ActorScroller.h:10
float m_fCurrentItem
the current item we are focused on.
Definition ActorScroller.h:89
float m_fSecondsPerItem
How many seconds are there per item?
Definition ActorScroller.h:95
void DrawPrimitives() override
Draw the primitives of the Actor.
Definition ActorScroller.cpp:236
Handle transforming a list of items.
Definition LuaExpressionTransform.h:16
A self-cleaning Lua reference.
Definition LuaReference.h:10
A rectangular shaped Actor with color.
Definition Quad.h:8
Definition XmlFile.h:95