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 u16 GetExtUserDataNum()
const;
151 Pane* GetParent()
const {
155 PaneList& GetChildList() {
159 void SetSRTElement(ulong idx, f32 value) {
160 reinterpret_cast<f32*
>(&mTranslate)[idx] = value;
166 void SetTranslate(
const math::VEC2& rTransXY) {
167 mTranslate.x = rTransXY.x;
168 mTranslate.y = rTransXY.y;
188 const Size& GetSize()
const {
191 void SetSize(
const Size& rSize) {
209 u8 GetAlpha()
const {
212 void SetAlpha(u8 alpha) {
216 u8 GetGlbAlpha()
const {
219 void SetGlbAlpha(u8 alpha) {
223 u8 GetBasePositionH()
const {
224 return detail::GetHorizontalPosition(mBasePosition);
226 void SetBasePositionH(u8 position) {
227 detail::SetHorizontalPosition(&mBasePosition, position);
230 u8 GetBasePositionV()
const {
231 return detail::GetVerticalPosition(mBasePosition);
233 void SetBasePositionV(u8 position) {
234 detail::SetVerticalPosition(&mBasePosition, position);
237 bool IsVisible()
const {
238 return detail::TestBit(mFlag, BIT_VISIBLE);
240 void SetVisible(
bool visible) {
241 detail::SetBit(&mFlag, BIT_VISIBLE, visible);
244 bool IsInfluencedAlpha()
const {
245 return detail::TestBit(mFlag, BIT_INFLUENCED_ALPHA);
247 void SetInfluencedAlpha(
bool influenced) {
248 detail::SetBit(&mFlag, BIT_INFLUENCED_ALPHA, influenced);
251 bool IsLocationAdjust()
const {
252 return detail::TestBit(mFlag, BIT_LOCATION_ADJUST);
254 void SetLocationAdjust(
bool adjust) {
255 detail::SetBit(&mFlag, BIT_LOCATION_ADJUST, adjust);
258 const char* GetName()
const {
261 void SetName(
const char* pName);
263 const char* GetUserData()
const {
266 void SetUserData(
const char* pUserData);
268 bool IsUserAllocated()
const {
269 return mbUserAllocated;
275 AnimationLinkList mAnimList;
286 ulong mExtUserDataNum;
293 char mName[NW4R_LYT_RES_NAME_LEN + 1];
294 char mUserData[NW4R_LYT_PANE_USERDATA_LEN + 1];
296 bool mbUserAllocated;
300 void InsertChild(PaneList::Iterator next, Pane* pChild);