123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- class SizeToChild extends ScriptedWidgetEventHandler
- {
- reference string m_ChildName;
- reference float m_HorizontalOffset;
- reference float m_VerticalOffset;
- reference bool m_ResizeHorizontal;
- reference bool m_ResizeVertical;
-
- protected Widget m_Root;
- protected Widget m_Child;
-
- protected static bool m_IgnoredBool;
-
- void OnWidgetScriptInit(Widget w)
- {
- m_Root = w;
-
- m_Child = m_Root.FindAnyWidget( m_ChildName );
- if ( m_Child )
- {
- ResizeParentToChild();
- }
- }
-
- bool ResizeParentToChild()
- {
- return ResizeParentToChild( m_IgnoredBool, -1, true );
- }
-
- bool ResizeParentToChild( out bool changed_size, int limit = -1, bool immedUpdate = true )
- {
- float x, y, o_x, o_y, new_x, new_y;
- if ( m_Child )
- {
- m_Child.Update();
- m_Child.GetScreenSize( x, y );
- m_Root.GetScreenSize( new_x, new_y );
- m_Root.GetSize( o_x, o_y );
-
- bool changed = false;
- bool hit_limit = false;
-
- if ( m_ResizeHorizontal && ( x > new_x + 0.01 || x < new_x - 0.01 ) )
- {
- new_x = x + m_HorizontalOffset;
- changed = true;
- }
- else
- new_x = o_x;
-
- if ( m_ResizeVertical && ( y > new_y + 0.01 || y < new_y - 0.01 ) )
- {
- new_y = y + m_VerticalOffset;
- changed = true;
- }
- else
- new_y = o_y;
-
- if ( limit > 0 && new_y > limit )
- {
- new_y = limit;
- hit_limit = true;
- }
-
- if ( changed )
- {
- m_Root.SetSize( new_x, new_y, immedUpdate );
- }
-
- changed_size = changed;
- return hit_limit;
- }
- else
- {
- m_Child = m_Root.FindAnyWidget( m_ChildName );
- if ( !m_Child )
- {
- Print( "Error in size to child, " + m_Root.GetName() + " has no child named " + m_ChildName );
- }
- }
-
- return false;
- }
- }
- class SizeToParent extends ScriptedWidgetEventHandler
- {
- reference bool m_ResizeHorizontal;
- reference bool m_ResizeVertical;
-
- protected Widget m_Root;
- protected Widget m_Parent;
-
- void OnWidgetScriptInit(Widget w)
- {
- m_Root = w;
-
- if ( m_ResizeHorizontal )
- m_Root.ClearFlags( WidgetFlags.HEXACTSIZE );
- if ( m_ResizeVertical )
- m_Root.ClearFlags( WidgetFlags.VEXACTSIZE );
-
- m_Parent = m_Root.GetParent();
-
- Refresh();
- }
-
- void Refresh()
- {
- float x, y, o_x, o_y, new_x, new_y;
- m_Parent.Update();
- m_Parent.GetScreenSize( x, y );
- m_Root.GetScreenSize( new_x, new_y );
- m_Root.GetSize( o_x, o_y );
-
- bool changed = false;
-
- if ( m_ResizeHorizontal && x != new_x )
- {
- new_x = x;
- changed = true;
- }
- else
- new_x = o_x;
-
- if ( m_ResizeVertical && y != new_y )
- {
- new_y = y;
- changed = true;
- }
- else
- new_y = o_y;
-
- if ( changed )
- m_Root.SetSize( new_x, new_y );
- }
- }
|