DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
CameraToolsMenu.c
См. документацию.
1class CameraToolsMenu extends UIScriptedMenu
2{
3 protected static CameraToolsMenu m_Instance;
6
7 protected float m_Time;
8
9 protected Camera m_Camera1;
10 protected Camera m_Camera2;
11
13 protected bool m_IsPlaying;
14 protected int m_NextCameraIndex = 1;
15
16 protected float m_FollowingTimeFinished;
18
19 protected CTKeyframe m_SelectedKeyframe;
20 protected CTEvent m_SelectedEvent;
21 protected CTActor m_SelectedActor;
22
26
29
30 protected XComboBoxWidget m_InterpTypeSpeedCombo;
31 protected XComboBoxWidget m_InterpTypeCombo;
34
37
38 protected ButtonWidget m_AddItem;
39 protected ButtonWidget m_AddHandsItem;
40 protected ButtonWidget m_AddActor;
41 protected ButtonWidget m_Play;
42 protected ButtonWidget m_Stop;
43 protected ButtonWidget m_Save;
44 protected ButtonWidget m_Load;
45 protected ButtonWidget m_Reset;
46
47 protected ButtonWidget m_AddKeyframe;
48 protected ButtonWidget m_SaveKeyframe;
49 protected ButtonWidget m_DeleteKeyframe;
50 protected ButtonWidget m_ViewKeyframe;
51
52 protected ButtonWidget m_AddEvent;
53 protected ButtonWidget m_SaveEvent;
54 protected ButtonWidget m_DeleteEvent;
55 protected ButtonWidget m_ViewEvent;
56
57 protected ButtonWidget m_CopyButton;
58 protected ButtonWidget m_ApplyButton;
61
62 protected string m_CameraToolsDataPath;
63
65 {
66 m_CameraToolsDataPath = "$profile:/CameraTools";
70
71 m_Camera1 = Camera.Cast(GetGame().CreateObject("staticcamera", GetGame().GetPlayer().GetPosition(), true));
72 m_Camera2 = Camera.Cast(GetGame().CreateObject("staticcamera", GetGame().GetPlayer().GetPosition(), true));
73
74 m_Instance = this;
75 }
76
78 {
79 if (m_IsPlaying)
80 {
81 Stop();
82 layoutRoot.Show( false );
85 }
86
87 SaveData();
88
89 m_Camera1.SetActive(false);
90 m_Camera2.SetActive(false);
91
93
94 MissionGameplay ms = MissionGameplay.Cast(GetGame().GetMission());
95 if (ms)
96 ms.GetHud().Show(true);
97 }
98
99 override void OnShow()
100 {
101 super.OnShow();
102
103 if (!m_IsPlaying)
104 {
106 }
107 }
108
109 override void OnHide()
110 {
111 super.OnHide();
112
113 if (!m_IsPlaying && GetGame() && GetGame().GetMission() && GetGame().GetUIManager())
114 {
117 }
118 }
119
120 void SelectKeyframe( CTKeyframe kf )
121 {
123 m_SelectedKeyframe.Unselect();
124
126 m_SelectedKeyframe.Select();
127 }
128
129 void SelectEvent(CTEvent ev)
130 {
131 m_SelectedEvent = ev;
132 }
133
134 void SelectActor(CTActor ac)
135 {
136 m_SelectedActor = ac;
137 }
138
139 override Widget Init()
140 {
141 layoutRoot = GetGame().GetWorkspace().CreateWidgets( "gui/layouts/camera_tools/camera_tools.layout" );
142
143 m_KeyframeContent = layoutRoot.FindAnyWidget( "keyframe_list_content" );
144 m_EventContent = layoutRoot.FindAnyWidget( "events_list_content" );
145 m_InterpTypeCombo = XComboBoxWidget.Cast( layoutRoot.FindAnyWidget( "interp_type" ) );
146 m_InterpTypeSpeedCombo = XComboBoxWidget.Cast( layoutRoot.FindAnyWidget( "interp_speed_type" ) );
147 m_BlurEditWidget = EditBoxWidget.Cast( layoutRoot.FindAnyWidget( "blur_value" ) );
148 m_ActorTypeWidget = EditBoxWidget.Cast( layoutRoot.FindAnyWidget( "add_actor_type" ) );
149 m_ActorIdWidget = EditBoxWidget.Cast( layoutRoot.FindAnyWidget( "add_actor_id" ) );
150 m_ActorItemTypeWidget = EditBoxWidget.Cast( layoutRoot.FindAnyWidget( "add_item_type" ) );
151
152 m_AddKeyframe = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "add_keyframe" ) );
153 m_AddEvent = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "add_event" ) );
154
155 m_AddItem = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "add_actor_item" ) );
156 m_AddHandsItem = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "add_actor_item_hands" ) );
157 m_AddActor = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "add_actor" ) );
158 m_Play = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "play" ) );
159 m_Stop = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "stop" ) );
160 m_Save = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "save" ) );
161 m_Load = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "load" ) );
162 m_Reset = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "reset" ) );
163
164 m_SaveKeyframe = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "save_keyframe" ) );
165 m_DeleteKeyframe = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "delete_keyframe" ) );
166 m_ViewKeyframe = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "snap_to_keyframe" ) );
167 m_SaveEvent = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "save_event" ) );
168 m_DeleteEvent = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "delete_event" ) );
169 m_ViewEvent = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "snap_to_event" ) );
170
171 m_CopyButton = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "CopyButton" ) );
172 m_ApplyButton = ButtonWidget.Cast( layoutRoot.FindAnyWidget( "ApplyButton" ) );
173 m_CameraEditbox = EditBoxWidget.Cast( layoutRoot.FindAnyWidget( "CameraEditbox" ) );
174 m_CameraValues = TextWidget.Cast( layoutRoot.FindAnyWidget( "CameraValues" ) );
175
176 MissionGameplay ms = MissionGameplay.Cast( GetGame().GetMission() );
177 ms.GetHud().Show( false );
179
180 m_BlurEditWidget.SetText( "0.0" );
181
182 LoadData();
183
184 return layoutRoot;
185 }
186
187 PlayerBase GetActor( int index )
188 {
189 if ( index > -1 && index < m_Actors.Count() )
190 return PlayerBase.Cast( m_Actors.Get( index ).GetObj() );
191 else
192 return null;
193 }
194
195 static void PlayAnimOnActor( int actor, int anim )
196 {
197 if ( m_Instance )
198 {
199 PlayerBase p = m_Instance.GetActor( actor );
200 if ( p )
201 {
202 EmoteCB cb = EmoteCB.Cast( p.StartCommand_Action( anim, EmoteCB, DayZPlayerConstants.STANCEMASK_ALL ) );
203 cb.EnableCancelCondition(true);
204 }
205 }
206 }
207
208 void LoadData()
209 {
212
213 m_Cameras.Clear();
214 m_Events.Clear();
215 m_Actors.Clear();
216
217 string errorMessage;
218 CTSaveStructure saveData = new CTSaveStructure();
219 if (!JsonFileLoader<ref CTSaveStructure>.LoadFile(m_CameraToolsDataPath + "/keyframe_data.json", saveData, errorMessage))
220 SaveData();
221
222 m_InterpTypeCombo.SetCurrentItem(saveData.m_InterpType);
223 m_InterpTypeSpeedCombo.SetCurrentItem(saveData.m_InterpSpeed);
224 SetBlurValue(saveData.m_BlurValue);
225
226 foreach (Param6<vector, vector, float, float, float, int> transform : saveData.m_Cameras)
227 {
228 CTKeyframe keyFrame = new CTKeyframe(
229 m_Cameras.Count(),
230 transform.param1,
231 transform.param2,
232 transform.param3,
233 transform.param4,
234 transform.param5,
235 transform.param6,
236 GetTotalTime(m_Cameras.Count()),
238 this,
239 );
240
241 keyFrame.SetInterpTime(transform.param3);
242 m_Cameras.Insert(keyFrame);
243 }
244
245 foreach (Param4<int, int, float, bool> eventEntry : saveData.m_Events)
246 {
247 CTEvent ev = new CTEvent(
248 m_Events.Count(),
249 eventEntry.param1,
251 eventEntry.param4,
252 this,
253 );
254
255 ev.SetEventType(eventEntry.param2);
256 ev.SetEventTime(eventEntry.param3);
257 m_Events.Insert(ev);
258 }
259
260 foreach (Param5<vector, vector, string, ref array<string>, string> actorEntry : saveData.m_Actors)
261 {
262 CTActor ac = new CTActor(m_Actors.Count(), actorEntry.param1, actorEntry.param2, actorEntry.param3, actorEntry.param4, actorEntry.param5, this);
263 m_Actors.Insert(ac);
264 }
265 }
266
267 void SaveData()
268 {
271
272 CTSaveStructure saveData = new CTSaveStructure();
273 saveData.m_InterpType = m_InterpTypeCombo.GetCurrentItem();
274 saveData.m_InterpSpeed = m_InterpTypeSpeedCombo.GetCurrentItem();
275 saveData.m_BlurValue = GetBlurValue();
276
277 foreach (CTKeyframe keyframe : m_Cameras)
278 {
279 Param6<vector, vector, float, float, float, int> transform = new Param6<vector, vector, float, float, float, int>(
280 keyframe.GetPosition(),
281 keyframe.GetOrientation(),
282 keyframe.GetInterpTime(),
283 keyframe.GetFOV(),
284 keyframe.GetDOF(),
285 keyframe.GetPin(),
286 );
287 saveData.m_Cameras.Insert(transform);
288 }
289
290 foreach (CTEvent eventEntry : m_Events)
291 {
292 Param4<int, int, float, bool> ev = new Param4<int, int, float, bool>(
293 eventEntry.GetEventActor(),
294 eventEntry.GetEventType(),
295 eventEntry.GetEventTime(),
296 eventEntry.GetEventWalk(),
297 );
298 saveData.m_Events.Insert(ev);
299 }
300
301 foreach (CTActor actorEntry : m_Actors)
302 {
303 Param5<vector, vector, string, ref array<string>, string> ac = new Param5<vector, vector, string, ref array<string>, string>(
304 actorEntry.GetPosition(),
305 actorEntry.GetRotation(),
306 actorEntry.GetActorType(),
307 actorEntry.GetItems(),
308 actorEntry.GetHandsItem(),
309 );
310 saveData.m_Actors.Insert(ac);
311 }
312
313 string errorMessage;
314 if (!JsonFileLoader<ref CTSaveStructure>.SaveFile(m_CameraToolsDataPath + "/keyframe_data.json", saveData, errorMessage))
315 ErrorEx(errorMessage);
316 }
317
318 void ResetAll()
319 {
320 CTSaveStructure saveData = new CTSaveStructure();
321
322 string errorMessage;
323 if (!JsonFileLoader<ref CTSaveStructure>.SaveFile(m_CameraToolsDataPath + "/keyframe_data.json", saveData, errorMessage))
324 ErrorEx(errorMessage);
325
326 LoadData();
327 }
328
329 float GetTotalTime( int index )
330 {
331 float time;
332 index = Math.Clamp( index, 0, m_Cameras.Count() );
333 for ( int i = 0; i < index; i++ )
334 {
335 time += m_Cameras.Get( i ).GetInterpTime();
336 }
337 return time;
338 }
339
341 {
342 if ( Camera.GetCurrentCamera() )
343 {
344 vector pos = Camera.GetCurrentCamera().GetWorldPosition();
345 vector orient = Camera.GetCurrentCamera().GetOrientation();
346 CTKeyframe kf = new CTKeyframe( m_Cameras.Count(), pos, orient, 1, 70, 50, -1, GetTotalTime( m_Cameras.Count() ), m_KeyframeContent, this );
347 m_Cameras.Insert( kf );
348 SelectKeyframe( kf );
349 }
350 }
351
353 {
354 if ( m_SelectedKeyframe && Camera.GetCurrentCamera() )
355 {
356 m_SelectedKeyframe.SetPosition( Camera.GetCurrentCamera().GetWorldPosition() );
357 m_SelectedKeyframe.SetOrientation( Camera.GetCurrentCamera().GetOrientation() );
358 }
359 }
360
362 {
363 if ( m_SelectedKeyframe )
364 {
365 int index = m_Cameras.Find( m_SelectedKeyframe );
366 m_Cameras.Remove( index );
367 index = Math.Clamp( index, 0, m_Cameras.Count() - 1 );
368 if ( m_Cameras.Count() > 0 )
369 {
370 SelectKeyframe( m_Cameras.Get( index ) );
371 }
372 }
373 }
374
376 {
377 if ( m_SelectedKeyframe && Camera.GetCurrentCamera() )
378 {
379 Camera.GetCurrentCamera().SetPosition( m_SelectedKeyframe.GetPosition() );
380 Camera.GetCurrentCamera().SetOrientation( m_SelectedKeyframe.GetOrientation() );
381 }
382 }
383
384 void AddActor( string actor_type )
385 {
386 vector pos = GetCameraLookDir();
387 CTActor ac = new CTActor( m_Actors.Count(), pos, "0 0 0", actor_type, new array<string>, "", this );
388 if ( ac.GetObj() )
389 m_Actors.Insert( ac );
390 }
391
392 void AddEvent( int actor_index )
393 {
394 if ( actor_index > -1 )
395 {
396 CTEvent ev = new CTEvent( m_Events.Count(), actor_index, m_EventContent, false, this );
397 m_Events.Insert( ev );
398 }
399 }
400
401
402 void AddItem( string id, string type )
403 {
404 int id_int = id.ToInt();
405 if ( m_Actors.Count() > id_int && id_int > -1 )
406 {
407 CTActor ac = m_Actors.Get( id_int );
408 if ( ac )
409 ac.AddItem( type );
410 }
411 }
412
413 void AddHandsItem( string id, string type )
414 {
415 int id_int = id.ToInt();
416 if ( m_Actors.Count() > id_int && id_int > -1 )
417 {
418 CTActor ac = m_Actors.Get( id_int );
419 if ( ac )
420 ac.SetHandsItem( type );
421 }
422 }
423
425 {
426
427 }
428
430 {
431
432 }
433
435 {
436
437 }
438
439 Param6<vector, vector, float, float, float, int> GetCameraLine( int index )
440 {
441 if ( index > -1 && index < m_CameraLines.Count() )
442 {
443 return m_CameraLines[index];
444 }
445 return null;
446 }
447
448 void Play()
449 {
450 if (Camera.GetCurrentCamera())
451 Camera.GetCurrentCamera().GetTransform(m_FreeflightCamTransform);
452 if ( m_Cameras.Count() > 0 )
453 {
454 layoutRoot.Show( false );
455 GetGame().GetUIManager().ShowUICursor( false );
457
458 foreach ( CTKeyframe keyframe : m_Cameras )
459 {
460 Param6<vector, vector, float, float, float, int> transform = new Param6<vector, vector, float, float, float, int>( keyframe.GetPosition(), keyframe.GetOrientation(), keyframe.GetInterpTime(), keyframe.GetFOV(), keyframe.GetDOF(), keyframe.GetPin() );
461 m_CameraLines.Insert( transform );
462
463 }
464
465 foreach ( CTActor ac : m_Actors )
466 {
467 ac.Hide();
468 }
469
470 foreach ( CTEvent ev : m_Events )
471 {
472 ev.GetEventTime();
473 }
474
476
477 float time = SetCameraData( GetCameraLine( 0 ), GetCameraLine( 1 ) );
478
479 if ( GetCameraLine( 0 ).param6 > -1 )
480 {
482 m_NextCamPosition = "0 0 0";
483 m_Camera1.SetActive( true );
484 }
485 else
486 {
487 m_NextCamPosition = m_Camera2.GetPosition();
489 m_Camera1.SetActive( true );
490 m_Camera1.EnableSmooth(m_InterpTypeCombo.GetCurrentItem() == 3);
491 m_Camera1.InterpolateTo( m_Camera2, time, m_InterpTypeCombo.GetCurrentItem() );
492 }
493
495 m_IsPlaying = true;
496 m_Time = 0;
497 }
498 }
499
500 void Stop()
501 {
502 layoutRoot.Show( true );
504
505 m_Camera1.StopInterpolation();
506 m_Camera1.SetActive( false );
507 m_Camera2.SetActive( false );
508 FreeDebugCamera.GetInstance().SetActive(true);
509
511 m_IsPlaying = false;
512
513 foreach ( CTEvent ev : m_Events )
514 {
515 ev.Stop();
516 }
517
518 foreach ( CTActor ac : m_Actors )
519 {
520 ac.Reset();
521 ac.Show();
522 }
523
524 Camera.GetCurrentCamera().SetTransform(m_FreeflightCamTransform);
525 }
526
528 {
529 vector dir = FreeDebugCamera.GetInstance().GetDirection();
530 vector from = FreeDebugCamera.GetInstance().GetPosition();
531 vector to = from + ( dir * 10000 );
532 vector contact_pos;
533 vector contact_dir;
534 int contact_component;
535 Object ev_obj;
536 if ( m_SelectedEvent )
537 ev_obj = GetActor( m_SelectedEvent.GetEventActor() );
538 if ( DayZPhysics.RaycastRV(from, to, contact_pos, contact_dir, contact_component, null, null, ev_obj) )
539 {
540 return contact_pos;
541 }
542
543 return "0 0 0";
544 }
545
547 {
549 vector from = FreeDebugCamera.GetInstance().GetPosition();
550 vector to = from + ( dir * 10000 );
551 vector contact_pos;
552 vector contact_dir;
553 int contact_component;
554 Object ev_obj;
555 if ( m_SelectedEvent )
556 ev_obj = GetActor( m_SelectedEvent.GetEventActor() );
557 if ( DayZPhysics.RaycastRV(from, to, contact_pos, contact_dir, contact_component, null, null, ev_obj) )
558 {
559 return contact_pos;
560 }
561
562 return "0 0 0";
563 }
564
565 override void Update( float timeslice )
566 {
567
568 string camPos = MiscGameplayFunctions.TruncateVecToS(FreeDebugCamera.GetInstance().GetPosition(),0);
569 string camOri = MiscGameplayFunctions.TruncateVecToS(FreeDebugCamera.GetInstance().GetOrientation(),0);
570 m_CameraValues.SetText("Pos:" +camPos + " | Rot:" + camOri);
571
572 #ifdef DIAG_DEVELOPER
573 if (DiagMenu.GetBool(DiagMenuIDs.CAMERATOOLS_ENABLE_REMOTE_CAMERA_BROADCAST))
574 {
575 Camera cam = Camera.GetCurrentCamera();
576
577 if (!cam && m_Camera1)
578 cam = m_Camera1;
579 if (cam)
580 {
581 Param4<vector, vector,float,float> p4 = new Param4<vector, vector,float,float>(GetGame().GetCurrentCameraPosition(),GetGame().GetCurrentCameraDirection(), cam.GetNearPlane(), cam.GetCurrentFOV());
582 GetGame().RPCSingleParam(null, ERPCs.DIAG_CAMERATOOLS_CAM_DATA, p4, false);
583 }
584
585 }
586 #endif
587
588 if ( m_CameraLines && m_IsPlaying )
589 {
590 foreach ( CTEvent ev : m_Events )
591 {
592 if ( ev.IsTime( m_Time, m_Time + timeslice ) )
593 {
594 ev.Play();
595 }
596 }
597
598 m_Time += timeslice;
599
600 if ( !Camera.IsInterpolationComplete() || !m_Camera1 || !m_Camera2 )
601 {
602 return;
603 }
604
605 if ( m_FollowingBone )
606 {
607 PlayerBase p = GetActor( m_FollowingBone.param1 );
608 if ( p )
609 {
610 vector pos = p.GetBonePositionWS( m_FollowingBone.param2 );
611
612 int bone_index = p.GetBoneIndexByName("LeftHand_Dummy");
613 float bone_rot[4];
614 p.GetBoneRotationWS( bone_index, bone_rot );
615
616 vector new_orient = Math3D.QuatToAngles(bone_rot);
617
618 //Print("Rot: "+ new_orient[0] +", "+ new_orient[1] +", "+ new_orient[2]);
619
620 float temp = new_orient[1];
621 new_orient[0] = new_orient[0] + 325; // vertical
622 new_orient[1] = new_orient[2] + 245;// horizontal
623 new_orient[2] = temp + 290; // tilt
624
625 //Print("PostRot: "+ new_orient[0] +", "+ new_orient[1] +", "+ new_orient[2]);
626
627 m_Camera1.SetPosition(pos);
628 m_Camera1.SetOrientation(new_orient);
629 }
630 }
631
632 if ( m_NextCameraIndex + 1 == m_CameraLines.Count() )
633 {
634 Stop();
636 foreach ( CTEvent ev2 : m_Events )
637 {
638 ev2.Stop();
639 }
640 return;
641 }
642
643 if ( Camera.IsInterpolationComplete() || Camera.GetCurrentCamera().GetPosition() == m_NextCamPosition || ( m_FollowingTimeFinished != -1 && m_Time >= m_FollowingTimeFinished ) )
644 {
645 float time;
646 if ( GetCameraLine( m_NextCameraIndex - 1 ).param6 > -1 )
647 {
649 GetCameraLine( m_NextCameraIndex ).param6 = -1;
650
652 }
653 else
654 {
656 }
657
659 if ( GetCameraLine( m_NextCameraIndex - 1 ).param6 > -1 )
660 {
662 m_NextCamPosition = "0 0 0";
663 m_Camera1.SetActive( true );
664 }
665 else if ( GetCameraLine( m_NextCameraIndex ) )
666 {
669 m_Camera1.SetActive( true );
670 m_Camera1.InterpolateTo( m_Camera2, time, m_InterpTypeCombo.GetCurrentItem() );
671 }
672 else
673 {
674 Stop();
676 FreeDebugCamera.GetInstance().SetOrientation( "0 0 0" );
677 foreach( CTEvent ev3 : m_Events )
678 {
679 ev3.Stop();
680 }
681 }
682 }
683 }
684 else
685 {
686 if ( m_Camera1.GetPosition() == m_NextCamPosition )
687 {
689 }
690
691 for ( int i = 0; i < ( m_Cameras.Count() - 1 ); i++ )
692 {
693 vector pos0 = m_Cameras.Get( i ).GetPosition();
694 vector pos1 = m_Cameras.Get( i + 1 ).GetPosition();
695 Debug.DrawArrow( pos0, pos1, 2, COLOR_RED, ShapeFlags.ONCE );
696 }
697
698 if ( m_SelectedActor )
699 {
700 if ( !g_Game.IsLeftCtrlDown() )
701 m_SelectedActor.SetPosition( GetMouseLookDir() );
702 else
703 {
704 vector from = m_SelectedActor.GetPosition();
705 vector to = GetMouseLookDir();
706 Debug.DrawArrow( from, to, 0.5, COLOR_RED, ShapeFlags.ONCE );
707 m_SelectedActor.SetRotation( vector.Direction( from,to ).Normalized().VectorToAngles() );
708 }
709
710 }
711
712 foreach ( CTActor ac : m_Actors )
713 {
714 ac.Update( timeslice );
715 }
716 }
717 }
718
719 float SetCameraData( Param6<vector, vector, float, float, float,int> transform1, Param6<vector, vector, float, float, float, int> transform2 )
720 {
721 float int_value = transform1.param3;
722 if ( m_InterpTypeSpeedCombo.GetCurrentItem() == 1 )
723 {
724 int_value = vector.Distance( transform1.param1, transform2.param1 ) / int_value;
725 }
726 PlayerBase p;
727 float pQuat[4];
728 int b_index;
729 if ( transform1.param6 > -1 )
730 {
731 p = GetActor( transform1.param6 );
732 if ( p )
733 {
734 b_index = p.GetBoneIndexByName( "LeftHand_Dummy" );
735 m_FollowingBone = new Param2<int, int>(transform1.param6, b_index);
736 }
737 }
738 else
739 {
740 m_Camera1.SetPosition( transform1.param1 );
741 m_Camera1.SetOrientation( transform1.param2 );
742 m_FollowingBone = null;
743 }
744 m_Camera1.SetFOV( transform1.param4 * Math.DEG2RAD );
745 m_Camera1.SetFocus( transform1.param5, GetBlurValue() );
746
747 if ( transform2 )
748 {
749 if ( transform2.param6 > -1 )
750 {
751 pQuat[4];
752 p = GetActor( transform2.param6 );
753 if ( p )
754 {
755 b_index = p.GetBoneIndexByName( "LeftHand_Dummy" );
756 if ( b_index != -1 )
757 {
758 m_Camera2.SetPosition( p.GetBonePositionWS( b_index ) );
759
760 p.GetBoneRotationWS( b_index, pQuat);
761 vector v = Math3D.QuatToAngles( pQuat );
762 v[0] = fixAngle_180_180( v[0] - 180 );
763 v[1] = fixAngle_180_180( v[1] - 270 );
764 v[2] = fixAngle_180_180( v[2] + 90 );
765 DbgUI.Text( v.ToString() );
766 m_Camera2.SetYawPitchRoll( v );
767 }
768 }
769 }
770 else
771 {
772 m_Camera2.SetPosition( transform2.param1 );
773 m_Camera2.SetOrientation( transform2.param2 );
774 }
775
776 m_Camera2.SetFOV( transform2.param4 * Math.DEG2RAD );
777 m_Camera2.SetFocus( transform2.param5, GetBlurValue() );
778 }
779
780 return int_value;
781 }
782
783 void SetBlurValue( float blur )
784 {
785 m_BlurEditWidget.SetText( blur.ToString() );
786 }
787
789 {
790 return m_BlurEditWidget.GetText().ToFloat();
791 }
792
793 override bool OnMouseButtonDown( Widget w, int x, int y, int button )
794 {
795 if ( w == layoutRoot && button == MouseState.RIGHT && !m_IsPlaying )
796 {
801 SetFocus( layoutRoot );
802 return true;
803 }
804 else if ( !IsFocusable( w ) )
805 {
806 SetFocus( layoutRoot );
807 }
808 return false;
809 }
810
811 override bool OnMouseButtonUp( Widget w, int x, int y, int button )
812 {
813 if ( w == layoutRoot && button == MouseState.LEFT )
814 {
815 SelectActor( null );
816 return true;
817 }
818 return false;
819 }
820
821 override bool OnClick( Widget w, int x, int y, int button )
822 {
823 if ( button == MouseState.LEFT )
824 {
825 if ( w == m_SaveKeyframe )
826 {
827 SaveKeyframe();
828 return true;
829 }
830 else if ( w == m_DeleteKeyframe )
831 {
833 return true;
834 }
835 else if ( w == m_ViewKeyframe )
836 {
837 ViewKeyframe();
838 return true;
839 }
840 else if ( w == m_SaveEvent )
841 {
842 SaveEvent();
843 return true;
844 }
845 else if ( w == m_DeleteEvent )
846 {
847 DeleteEvent();
848 return true;
849 }
850 else if ( w == m_ViewEvent )
851 {
852 ViewEvent();
853 return true;
854 }
855 else if ( w == m_AddKeyframe )
856 {
857 AddKeyframe();
858 return true;
859 }
860 else if ( w == m_AddEvent )
861 {
862 AddEvent( 0 );
863 return true;
864 }
865 else if ( w == m_Play )
866 {
867 Play();
868 return true;
869 }
870 else if ( w == m_Stop )
871 {
872 Stop();
873 return true;
874 }
875 else if ( w == m_Save )
876 {
877 SaveData();
878 return true;
879 }
880 else if ( w == m_Load )
881 {
882 LoadData();
883 return true;
884 }
885 else if (w == m_Reset)
886 {
887 ResetAll();
888 return true;
889 }
890 else if ( w == m_AddActor )
891 {
892 AddActor( m_ActorTypeWidget.GetText() );
893 }
894 else if ( w == m_AddItem )
895 {
896 AddItem( m_ActorIdWidget.GetText(), m_ActorItemTypeWidget.GetText() );
897 }
898 else if ( w == m_AddHandsItem )
899 {
900 AddHandsItem( m_ActorIdWidget.GetText(), m_ActorItemTypeWidget.GetText() );
901 }
902 else if ( w == m_CopyButton )
903 {
904 string clipboardIn = FreeDebugCamera.GetInstance().GetPosition().ToString(false)+"|"+ FreeDebugCamera.GetInstance().GetOrientation().ToString(false);
905 GetGame().CopyToClipboard( clipboardIn );
906
907 //Print(clipboardIn);
908 }
909 else if ( w == m_ApplyButton )
910 {
911 string camText = m_CameraEditbox.GetText();
912 if (camText && camText.IndexOf("|") !=-1)
913 {
914 int seperatorIndex = camText.IndexOf("|");
915 int length = camText.Length();
916
917 string posStr = camText.Substring(0,seperatorIndex);
918 string oriStr = camText.Substring(seperatorIndex+1, length - seperatorIndex - 1);
919 FreeDebugCamera.GetInstance().SetPosition(posStr.ToVector());
920 FreeDebugCamera.GetInstance().SetOrientation(oriStr.ToVector());
921 }
922 }
923 }
924 return false;
925 }
926
927
928 override bool OnMouseEnter( Widget w, int x, int y )
929 {
930 if ( w == m_CameraEditbox)
931 m_CameraEditbox.SetText("");
932 return true;
933 }
934
935 override bool OnMouseLeave( Widget w, Widget enterW, int x, int y )
936 {
937 return true;
938 }
939
940 override bool OnFocus( Widget w, int x, int y )
941 {
942 if ( IsFocusable( w ) )
943 {
944 ColorRed( w );
945 return true;
946 }
947 return false;
948 }
949
950 override bool OnFocusLost( Widget w, int x, int y )
951 {
952 if ( IsFocusable( w ) )
953 {
954 ColorWhite( w, null );
955 return true;
956 }
957 return false;
958 }
959
961 {
962 if ( w )
963 {
964 return ( w == m_SaveKeyframe || w == m_DeleteKeyframe || w == m_ViewKeyframe || w == m_SaveEvent || w == m_DeleteEvent || w == m_ViewEvent || w == m_AddKeyframe || w == m_AddEvent || w == m_Play || w == m_Stop || w == m_Save || w == m_Load || w == m_InterpTypeCombo );
965 }
966 return false;
967 }
968
969 override bool OnKeyPress(Widget w, int x, int y, int key)
970 {
971 if (!w && key == KeyCode.KC_P )
972 {
973 if ( !m_IsPlaying )
974 {
975 Play();
976 return true;
977 }
978 else
979 {
980 Stop();
981 return true;
982 }
983 return false;
984 }
985 else if ( g_Game.IsLeftCtrlDown() && key == KeyCode.KC_S )
986 {
987 SaveKeyframe();
988 return true;
989 }
990 else if ( g_Game.IsLeftCtrlDown() && key == KeyCode.KC_Q )
991 {
992 AddKeyframe();
993 return true;
994 }
995 else if ( g_Game.IsLeftCtrlDown() && key == KeyCode.KC_E )
996 {
998 return true;
999 }
1000
1001 else if ( !w && g_Game.IsLeftCtrlDown() )
1002 {
1003 SelectActor( null );
1004 return true;
1005 }
1006 return false;
1007 }
1008
1009 //Coloring functions (Until WidgetStyles are useful)
1011 {
1012 //SetFocus( w );
1013 if ( w.IsInherited( ButtonWidget ) )
1014 {
1015 ButtonWidget button = ButtonWidget.Cast( w );
1016 button.SetTextColor( ARGB( 255, 255, 0, 0 ) );
1017 button.SetAlpha( 0.9 );
1018 }
1019 }
1020
1021 void ColorWhite( Widget w, Widget enterW )
1022 {
1023 if ( w.IsInherited( ButtonWidget ) )
1024 {
1025 ButtonWidget button = ButtonWidget.Cast( w );
1026 if (button)
1027 {
1028 button.SetTextColor( ARGB( 255, 255, 255, 255 ) );
1029 button.SetAlpha( 0.75 );
1030 }
1031 }
1032 }
1033}
DayZGame g_Game
Определения DayZGame.c:3868
float fixAngle_180_180(float pAngle)
Определения DayZPlayerCamera_Base.c:36
DiagMenuIDs
Определения EDiagMenuIDs.c:2
ERPCs
Определения ERPCs.c:2
Icon x
Icon y
PlayerBase GetPlayer()
Определения ModifierBase.c:51
void ResetAll()
Определения ModifiersManager.c:352
bool IsFocusable(Widget w)
Определения ServerBrowserTab.c:325
proto native UIManager GetUIManager()
proto native void CopyToClipboard(string text)
proto native void RPCSingleParam(Object target, int rpc_type, Param param, bool guaranteed, PlayerIdentity recipient=null)
see CGame.RPC
proto native vector GetPointerDirection()
Returns the direction where the mouse points, from the camera view.
proto native WorkspaceWidget GetWorkspace()
proto native Input GetInput()
proto native Mission GetMission()
ref array< ref Param6< vector, vector, float, float, float, int > > m_Cameras
Определения CTSaveStructure.c:7
ref array< ref Param5< vector, vector, string, ref array< string >, string > > m_Actors
Определения CTSaveStructure.c:9
float m_BlurValue
Определения CTSaveStructure.c:5
ref array< ref Param4< int, int, float, bool > > m_Events
Определения CTSaveStructure.c:8
int m_InterpType
Определения CTSaveStructure.c:3
int m_InterpSpeed
Определения CTSaveStructure.c:4
Определения CTSaveStructure.c:2
Определения Camera.c:85
static proto bool RaycastRV(vector begPos, vector endPos, out vector contactPos, out vector contactDir, out int contactComponent, set< Object > results=NULL, Object with=NULL, Object ignore=NULL, bool sorted=false, bool ground_only=false, int iType=ObjIntersectView, float radius=0.0, CollisionFlags flags=CollisionFlags.NEARESTCONTACT)
Raycasts world by given parameters.
Определения DayZPhysics.c:124
Определения DbgUI.c:60
static Shape DrawArrow(vector from, vector to, float size=0.5, int color=0xFFFFFFFF, int flags=0)
Определения Debug.c:404
Определения Debug.c:2
static void EnableFreeCameraSceneEditor(PlayerBase player)
Определения DeveloperFreeCamera.c:18
static void DisableFreeCamera(PlayerBase player, bool teleport_player=false)
Определения DeveloperFreeCamera.c:44
Определения EnDebug.c:233
Определения EnWidgets.c:354
Определения EmoteManager.c:2
proto native void ChangeGameFocus(int add, int input_device=-1)
Change game focus number.
proto native void ResetGameFocus(int input_device=-1)
Reset game focus number (set to 0)
Определения EnMath3D.c:28
Определения EnMath.c:7
void AddActiveInputExcludes(array< string > excludes)
void RemoveActiveInputExcludes(array< string > excludes, bool bForceSupress=false)
deprecated
Определения ObjectTyped.c:2
Определения PPEConstants.c:68
Определения PlayerBaseClient.c:2
Определения EnWidgets.c:220
void ShowUICursor(bool visible)
Определения UIManager.c:244
void SelectActor(CTActor ac)
Определения CameraToolsMenu.c:134
override bool OnMouseEnter(Widget w, int x, int y)
Определения CameraToolsMenu.c:928
override void OnShow()
Определения CameraToolsMenu.c:99
ButtonWidget m_Save
Определения CameraToolsMenu.c:43
override bool OnFocus(Widget w, int x, int y)
Определения CameraToolsMenu.c:940
override void Update(float timeslice)
Определения CameraToolsMenu.c:565
ButtonWidget m_AddEvent
Определения CameraToolsMenu.c:52
ButtonWidget m_Stop
Определения CameraToolsMenu.c:42
float GetBlurValue()
Определения CameraToolsMenu.c:788
TextWidget m_CameraValues
Определения CameraToolsMenu.c:60
ButtonWidget m_DeleteKeyframe
Определения CameraToolsMenu.c:49
ButtonWidget m_ApplyButton
Определения CameraToolsMenu.c:58
Camera m_Camera2
Определения CameraToolsMenu.c:10
void SelectKeyframe(CTKeyframe kf)
Определения CameraToolsMenu.c:120
EditBoxWidget m_ActorIdWidget
Определения CameraToolsMenu.c:35
vector m_NextCamPosition
Определения CameraToolsMenu.c:5
EditBoxWidget m_ActorTypeWidget
Определения CameraToolsMenu.c:33
void ViewKeyframe()
Определения CameraToolsMenu.c:375
void Play()
Определения CameraToolsMenu.c:448
Param6< vector, vector, float, float, float, int > GetCameraLine(int index)
Определения CameraToolsMenu.c:439
bool IsFocusable(Widget w)
Определения CameraToolsMenu.c:960
ButtonWidget m_ViewEvent
Определения CameraToolsMenu.c:55
ButtonWidget m_ViewKeyframe
Определения CameraToolsMenu.c:50
float SetCameraData(Param6< vector, vector, float, float, float, int > transform1, Param6< vector, vector, float, float, float, int > transform2)
Определения CameraToolsMenu.c:719
string m_CameraToolsDataPath
Определения CameraToolsMenu.c:62
vector m_FreeflightCamTransform[4]
Определения CameraToolsMenu.c:4
ButtonWidget m_AddKeyframe
Определения CameraToolsMenu.c:47
float m_Time
Определения CameraToolsMenu.c:7
void AddItem(string id, string type)
Определения CameraToolsMenu.c:402
ButtonWidget m_SaveEvent
Определения CameraToolsMenu.c:53
void CameraToolsMenu()
Определения CameraToolsMenu.c:64
ButtonWidget m_CopyButton
Определения CameraToolsMenu.c:57
void ColorWhite(Widget w, Widget enterW)
Определения CameraToolsMenu.c:1021
override bool OnKeyPress(Widget w, int x, int y, int key)
Определения CameraToolsMenu.c:969
void SaveKeyframe()
Определения CameraToolsMenu.c:352
float m_FollowingTimeFinished
Определения CameraToolsMenu.c:16
override void OnHide()
Определения CameraToolsMenu.c:109
CTEvent m_SelectedEvent
Определения CameraToolsMenu.c:20
float GetTotalTime(int index)
Определения CameraToolsMenu.c:329
override bool OnMouseButtonUp(Widget w, int x, int y, int button)
Определения CameraToolsMenu.c:811
override bool OnFocusLost(Widget w, int x, int y)
Определения CameraToolsMenu.c:950
override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
Определения CameraToolsMenu.c:935
void AddKeyframe()
Определения CameraToolsMenu.c:340
static void PlayAnimOnActor(int actor, int anim)
Определения CameraToolsMenu.c:195
ButtonWidget m_SaveKeyframe
Определения CameraToolsMenu.c:48
void AddActor(string actor_type)
Определения CameraToolsMenu.c:384
override bool OnMouseButtonDown(Widget w, int x, int y, int button)
Определения CameraToolsMenu.c:793
void LoadData()
Определения CameraToolsMenu.c:208
int m_NextCameraIndex
Определения CameraToolsMenu.c:14
ref Param2< int, int > m_FollowingBone
Определения CameraToolsMenu.c:17
CTKeyframe m_SelectedKeyframe
Определения CameraToolsMenu.c:19
void ~CameraToolsMenu()
Определения CameraToolsMenu.c:77
ButtonWidget m_DeleteEvent
Определения CameraToolsMenu.c:54
ButtonWidget m_Load
Определения CameraToolsMenu.c:44
void ColorRed(Widget w)
Определения CameraToolsMenu.c:1010
Widget m_KeyframeContent
Определения CameraToolsMenu.c:27
ButtonWidget m_Play
Определения CameraToolsMenu.c:41
ButtonWidget m_AddActor
Определения CameraToolsMenu.c:40
Widget m_EventContent
Определения CameraToolsMenu.c:28
EditBoxWidget m_CameraEditbox
Определения CameraToolsMenu.c:59
CTActor m_SelectedActor
Определения CameraToolsMenu.c:21
XComboBoxWidget m_InterpTypeCombo
Определения CameraToolsMenu.c:31
ref array< ref Param6< vector, vector, float, float, float, int > > m_CameraLines
Определения CameraToolsMenu.c:12
static CameraToolsMenu m_Instance
Определения CameraToolsMenu.c:3
void ViewEvent()
Определения CameraToolsMenu.c:434
ref array< ref CTActor > m_Actors
Определения CameraToolsMenu.c:23
vector GetCameraLookDir()
Определения CameraToolsMenu.c:527
XComboBoxWidget m_InterpTypeSpeedCombo
Определения CameraToolsMenu.c:30
ButtonWidget m_AddItem
Определения CameraToolsMenu.c:38
EditBoxWidget m_BlurEditWidget
Определения CameraToolsMenu.c:32
EditBoxWidget m_ActorItemTypeWidget
Определения CameraToolsMenu.c:36
override Widget Init()
Определения CameraToolsMenu.c:139
void SetBlurValue(float blur)
Определения CameraToolsMenu.c:783
PlayerBase GetActor(int index)
Определения CameraToolsMenu.c:187
override bool OnClick(Widget w, int x, int y, int button)
Определения CameraToolsMenu.c:821
void Stop()
Определения CameraToolsMenu.c:500
void DeleteEvent()
Определения CameraToolsMenu.c:429
Camera m_Camera1
Определения CameraToolsMenu.c:9
vector GetMouseLookDir()
Определения CameraToolsMenu.c:546
void SelectEvent(CTEvent ev)
Определения CameraToolsMenu.c:129
void DeleteKeyframe()
Определения CameraToolsMenu.c:361
bool m_IsPlaying
Определения CameraToolsMenu.c:13
ButtonWidget m_Reset
Определения CameraToolsMenu.c:45
void AddHandsItem(string id, string type)
Определения CameraToolsMenu.c:413
ref array< ref CTKeyframe > m_Cameras
Определения CameraToolsMenu.c:24
ref array< ref CTEvent > m_Events
Определения CameraToolsMenu.c:25
void SaveEvent()
Определения CameraToolsMenu.c:424
void AddEvent(int actor_index)
Определения CameraToolsMenu.c:392
void ResetAll()
Определения CameraToolsMenu.c:318
void SaveData()
Определения CameraToolsMenu.c:267
ButtonWidget m_AddHandsItem
Определения CameraToolsMenu.c:39
Определения DayZGame.c:64
Определения EnWidgets.c:190
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto string ToString(bool simple=true)
proto vector Normalized()
return normalized vector (keeps orginal vector untouched)
static vector Direction(vector p1, vector p2)
Returns direction vector from point p1 to point p2.
Определения EnConvert.c:220
static proto native float Distance(vector v1, vector v2)
Returns the distance between tips of two 3D vectors.
proto string ToString(bool beautify=true)
Vector to string.
proto vector VectorToAngles()
Converts vector to spherical coordinates with radius = 1.
Определения EnConvert.c:106
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
proto native CGame GetGame()
const int COLOR_RED
Определения constants.c:64
enum ShapeType ErrorEx
ShapeFlags
Определения EnDebug.c:126
static proto native void Text(string label)
static proto bool GetBool(int id, bool reverse=false)
Get value as bool from the given script id.
proto native bool MakeDirectory(string name)
Makes a directory.
proto bool FileExist(string name)
Check existence of file.
KeyCode
Определения EnSystem.c:157
static proto vector QuatToAngles(float q[4])
Returns Angles vector from quaternion.
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.
static const float DEG2RAD
Определения EnMath.c:17
MouseState
Определения EnSystem.c:311
proto void Play()
Определения SmptAnimMeta.c:144
class JsonUndergroundAreaTriggerData GetPosition
Определения UndergroundAreaLoader.c:9
void Stop()
Stops all elements this effect consists of.
Определения Effect.c:181
proto native int Length()
Returns length of string.
proto vector ToVector()
Returns a vector from a string.
proto string Substring(int start, int len)
Substring of 'str' from 'start' position 'len' number of characters.
proto native int IndexOf(string sample)
Finds 'sample' in 'str'. Returns -1 when not found.
proto native external Widget CreateWidgets(string layout, Widget parentWidget=NULL, bool immedUpdate=true)
Create widgets from *.layout file.
proto native void SetFocus(Widget w)
int ARGB(int a, int r, int g, int b)
Определения proto.c:322