123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- class PlayerPreview: LayoutHolder
- {
- protected ref PlayerPreviewWidget m_CharacterPanelWidget;
- protected int m_CharacterRotationX;
- protected int m_CharacterRotationY;
- protected int m_CharacterScaleDelta;
- protected vector m_CharacterOrientation;
- protected bool m_IsHolding;
-
- void PlayerPreview( LayoutHolder parent )
- {
- m_CharacterPanelWidget = PlayerPreviewWidget.Cast( m_Parent.GetMainWidget().FindAnyWidget( "CharacterPanelWidget" ) );
- WidgetEventHandler.GetInstance().RegisterOnMouseButtonDown( m_Parent.GetMainWidget().FindAnyWidget( "CharacterPanel" ), this, "MouseButtonDown" );
- WidgetEventHandler.GetInstance().RegisterOnMouseWheel( m_Parent.GetMainWidget().FindAnyWidget( "CharacterPanel" ), this, "MouseWheel" );
-
- m_CharacterScaleDelta = 1;
- m_CharacterPanelWidget.SetPlayer( GetGame().GetPlayer() );
- m_CharacterPanelWidget.SetModelPosition( "0 0 0.605" );
- m_CharacterPanelWidget.SetSize( 1.34, 1.34 ); // default scale
- UpdateScale();
- }
-
- void RefreshPlayerPreview()
- {
- m_CharacterPanelWidget.Refresh();
- }
-
- void UpdateRotation( int mouse_x, int mouse_y, bool is_dragging )
- {
- if ( m_CharacterPanelWidget )
- {
- vector orientation = m_CharacterOrientation;
- orientation[1] = orientation[1] - ( m_CharacterRotationX - mouse_x );
-
- m_CharacterPanelWidget.SetModelOrientation( orientation );
-
- if ( !is_dragging )
- {
- m_CharacterOrientation = orientation;
- }
- }
- }
- void UpdateScale()
- {
- if ( m_CharacterPanelWidget )
- {
- float w, h;
- m_CharacterPanelWidget.GetSize( w, h );
- w = w + ( m_CharacterScaleDelta / 25 );
- h = h + ( m_CharacterScaleDelta / 25 );
- if ( w > 0.62 && w < 3 )
- {
- m_CharacterPanelWidget.SetSize( w, h );
- }
- else if ( w < 0.62 )
- {
- m_CharacterPanelWidget.SetSize( 0.62, 0.62 );
- }
- else if ( w > 3 )
- {
- m_CharacterPanelWidget.SetSize( 3, 3 );
- }
- }
- }
-
- bool MouseButtonDown(Widget w, int x, int y, int button)
- {
- GetMousePos( m_CharacterRotationX, m_CharacterRotationY );
- m_IsHolding = true;
- return true;
- }
-
- bool MouseWheel(Widget w, int x, int y, int wheel)
- {
- m_CharacterScaleDelta = wheel;
- UpdateScale();
- return true;
- }
-
- override void UpdateInterval()
- {
- // item in hands update
- m_CharacterPanelWidget.UpdateItemInHands(GetGame().GetPlayer().GetHumanInventory().GetEntityInHands());
-
- PlayerBase realPlayer = PlayerBase.Cast(GetGame().GetPlayer());
- DayZPlayer dummyPlayer = m_CharacterPanelWidget.GetDummyPlayer();
- if ( realPlayer && dummyPlayer )
- {
- // injury animation update
- HumanCommandAdditives hca = dummyPlayer.GetCommandModifier_Additives();
- //dummyPlayer.UpdateDummyPlayerProxyVisibility(realPlayer.FindAttachmentBySlotName("Shoulder"), realPlayer.FindAttachmentBySlotName("Melee"));
- if ( hca && realPlayer.m_InjuryHandler )
- hca.SetInjured(realPlayer.m_InjuryHandler.GetInjuryAnimValue(), realPlayer.m_InjuryHandler.IsInjuryAnimEnabled());
- }
-
- if ( m_IsHolding )
- {
- int mouse_x;
- int mouse_y;
-
- GetMousePos(mouse_x, mouse_y);
-
- if ( GetMouseState(MouseState.LEFT) & 0x80000000 )
- {
- UpdateRotation( mouse_x, mouse_y, true );
- }
- else
- {
- UpdateRotation( mouse_x, mouse_y, false );
- m_IsHolding = false;
- }
- }
- }
- }
|