1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- class PluginCharPlacement extends PluginBase
- {
- PluginDeveloper m_ModuleDeveloper;
- PlayerBase m_Character;
- ref Timer m_Timer;
- bool m_Initialized;
- vector m_cam_pos;
- vector m_character_pos;
- vector m_camera_dir;
- vector m_cameraTrans[4];
- vector m_demoPos;
- vector m_demoRot;
- vector m_camera_orientation;
-
- const float FOV = 0.5236;
-
- void CheckInit()
- {
- if ( m_Initialized )
- {
- Print("logging...");
- Log(FOV.ToString(),"FOV");
- Log(m_camera_dir.ToString(),"camera dir");
- Log(m_cam_pos.ToString(),"camera pos");
- Log(m_demoPos.ToString(),"character pos");
-
- return;
- }
-
- if( FreeDebugCamera.GetInstance().IsActive() )
- Init();
- }
-
- void Init()
- {
- if(m_Character)
- m_Character.Delete();
-
- m_Initialized = true;
- m_Character = PlayerBase.Cast( GetGame().CreateObject("SurvivorF_Judy", FreeDebugCamera.GetInstance().GetPosition(), false, false/*ai*/) );
-
- FreeDebugCamera.GetInstance().SetFOV(FOV); //default scene FOV
- m_demoRot = "0 0 0";
- }
-
- override void OnUpdate(float delta_time)
- {
- if(!m_Initialized) return;
- if(!FreeDebugCamera.GetInstance().IsActive()) return;
- if(!m_Character) return;
- m_camera_orientation = FreeDebugCamera.GetInstance().GetOrientation();
- m_camera_orientation[1] = 1;
- FreeDebugCamera.GetInstance().SetOrientation(m_camera_orientation); //remove to unlock vertical axis
- m_cam_pos = FreeDebugCamera.GetInstance().GetPosition();
- m_character_pos = m_Character.GetPosition();
- m_camera_dir = FreeDebugCamera.GetInstance().GetDirection();
-
- m_camera_dir.Normalize();
- m_Character.SetPosition(CalculatePos());//(FreeDebugCamera.GetInstance().GetPosition() + ( m_camera_dir * 2) );
- m_demoRot[0] = Math.Atan2(-m_camera_dir[0], -m_camera_dir[2]) * Math.RAD2DEG;
- m_Character.SetOrientation(m_demoRot);//(FreeDebugCamera.GetInstance().GetPosition() - m_demoPos);
- }
-
- override void OnDestroy()
- {
- FreeDebugCamera.GetInstance().SetFOV(g_Game.GetUserFOV());
- }
-
- vector CalculatePos()
- {
- vector cam_pos = FreeDebugCamera.GetInstance().GetPosition();
- Math3D.MatrixIdentity4(m_cameraTrans);
- Math3D.DirectionAndUpMatrix(m_camera_dir/* - SnapToGround(cam_pos)*/, "0 1 0", m_cameraTrans);
- m_cameraTrans[3] = cam_pos;
- m_demoPos = Vector(/*0.685547, -0.988281,*/0,0, 3.68823).Multiply4(m_cameraTrans);
- m_demoPos[1] = GetGame().SurfaceY(m_demoPos[0], m_demoPos[2]);
-
- return m_demoPos;
- }
- }
|