79 NW4R_UT_RTTI_DECL(Pane);
89 typedef ut::LinkList<Pane, offsetof(PaneBase, node)> PaneList;
95 virtual void CalculateMtx(
const DrawInfo& rInfo);
96 void CalculateMtxChild(
const DrawInfo& rInfo);
98 virtual void Draw(
const DrawInfo& rInfo);
99 virtual void DrawSelf(
const DrawInfo& rInfo);
101 virtual void Animate(ulong option);
102 virtual void AnimateSelf(ulong option);
104 virtual ut::Color GetVtxColor(ulong idx)
const;
105 virtual void SetVtxColor(ulong idx,
ut::Color color);
106 virtual u8 GetColorElement(ulong idx)
const;
107 virtual void SetColorElement(ulong idx, u8 value);
108 virtual u8 GetVtxColorElement(ulong idx)
const;
109 virtual void SetVtxColorElement(ulong idx, u8 value);
111 virtual Pane* FindPaneByName(
const char* pName,
bool recursive);
112 virtual Material* FindMaterialByName(
const char* pName,
120 virtual void UnbindAllAnimation(
bool recursive);
128 virtual void SetAnimationEnable(
AnimTransform* pAnimTrans,
bool enable,
130 virtual void SetAnimationEnable(
const AnimResource &,
bool enable,
133 virtual bool GetMaterialNum()
const;
134 virtual Material* GetMaterial()
const;
135 virtual Material* GetMaterial(ulong)
const;
136 virtual void LoadMtx(
const DrawInfo& rInfo);
138 void AppendChild(Pane* pChild);
139 void RemoveChild(Pane* pChild);
147 Pane* GetParent()
const {
151 PaneList& GetChildList() {
155 void SetSRTElement(ulong idx, f32 value) {
156 reinterpret_cast<f32*
>(&mTranslate)[idx] = value;
162 void SetTranslate(
const math::VEC2& rTransXY) {
163 mTranslate.x = rTransXY.x;
164 mTranslate.y = rTransXY.y;
184 const Size& GetSize()
const {
187 void SetSize(
const Size& rSize) {
205 u8 GetAlpha()
const {
208 void SetAlpha(u8 alpha) {
212 u8 GetGlbAlpha()
const {
215 void SetGlbAlpha(u8 alpha) {
219 u8 GetBasePositionH()
const {
220 return detail::GetHorizontalPosition(mBasePosition);
222 void SetBasePositionH(u8 position) {
223 detail::SetHorizontalPosition(&mBasePosition, position);
226 u8 GetBasePositionV()
const {
227 return detail::GetVerticalPosition(mBasePosition);
229 void SetBasePositionV(u8 position) {
230 detail::SetVerticalPosition(&mBasePosition, position);
233 bool IsVisible()
const {
234 return detail::TestBit(mFlag, BIT_VISIBLE);
236 void SetVisible(
bool visible) {
237 detail::SetBit(&mFlag, BIT_VISIBLE, visible);
240 bool IsInfluencedAlpha()
const {
241 return detail::TestBit(mFlag, BIT_INFLUENCED_ALPHA);
243 void SetInfluencedAlpha(
bool influenced) {
244 detail::SetBit(&mFlag, BIT_INFLUENCED_ALPHA, influenced);
247 bool IsLocationAdjust()
const {
248 return detail::TestBit(mFlag, BIT_LOCATION_ADJUST);
250 void SetLocationAdjust(
bool adjust) {
251 detail::SetBit(&mFlag, BIT_LOCATION_ADJUST, adjust);
254 const char* GetName()
const {
257 void SetName(
const char* pName);
259 const char* GetUserData()
const {
262 void SetUserData(
const char* pUserData);
264 bool IsUserAllocated()
const {
265 return mbUserAllocated;
271 AnimationLinkList mAnimList;
282 ulong mExtUserDataNum;
289 char mName[NW4R_LYT_RES_NAME_LEN + 1];
290 char mUserData[NW4R_LYT_PANE_USERDATA_LEN + 1];
292 bool mbUserAllocated;
296 void InsertChild(PaneList::Iterator next, Pane* pChild);