コード例 #1
0
CCamera::CCamera() : forward(1.0f, 0.0f, 0.0f), rot(0.0f, 0.0f, 0.0f), pos(2000.0f, 70.0f, 1800.0f), posOffset(0.0f, 0.0f, 0.0f), tiltOffset(0.0f, 0.0f, 0.0f), lppScale(0.0f)
{
	// stuff that wont change can be initialised here, it doesn't need to be reinitialised every update
	modelview[ 3] =  0.0f;
	modelview[ 7] =  0.0f;
	modelview[11] =  0.0f;
	modelview[15] =  1.0f;
	
	projection[ 1] = 0.0f;
	projection[ 2] = 0.0f;
	projection[ 3] = 0.0f;
	
	projection[ 4] = 0.0f;
	projection[ 6] = 0.0f;
	projection[ 7] = 0.0f;
	
	projection[12] = 0.0f;
	projection[13] = 0.0f;	
	projection[15] = 0.0f;
	
	billboard[3]  = billboard[7]  = billboard[11] = 0.0;
	billboard[12] = billboard[13] = billboard[14] = 0.0;
	billboard[15] = 1.0;
	
	SetFov(45.0f);

	up      = UpVector;

	if (billboardList == 0) {
		billboardList = glGenLists(1);
	}
}
コード例 #2
0
ファイル: Camera.cpp プロジェクト: eXLabT/spring
CCamera::CCamera()
    : pos(2000.0f, 70.0f, 1800.0f)
    , rot(0.0f, 0.0f, 0.0f)
    , forward(1.0f, 0.0f, 0.0f)
    , posOffset(0.0f, 0.0f, 0.0f)
    , tiltOffset(0.0f, 0.0f, 0.0f)
    , lppScale(0.0f)
    , fov(0.0f)
    , halfFov(0.0f)
    , tanHalfFov(0.0f)
{
    memset(viewport, 0, 4*sizeof(int));

    memset(viewMat,    0, 16*sizeof(double));
    memset(viewMatInv, 0, 16*sizeof(double));
    memset(projMat,    0, 16*sizeof(double));
    memset(bboardMat,  0, 16*sizeof(double));

    // stuff that will not change can be initialised here,
    // so it does not need to be reinitialised every update
    viewMat[15] = 1.0;
    bboardMat[15] = 1.0;

    SetFov(45.0f);

    up = UpVector;

    if (billboardList == 0) {
        billboardList = glGenLists(1);
    }
}
コード例 #3
0
ファイル: Camera.cpp プロジェクト: 9heart/spring
CCamera::CCamera()
	: rot(ZeroVector)
	, forward(RgtVector)
	, up(UpVector)
	, posOffset(ZeroVector)
	, tiltOffset(ZeroVector)
	, pos(ZeroVector)
	, fov(0.0f)
	, halfFov(0.0f)
	, tanHalfFov(0.0f)
	, lppScale(0.0f)
{
	if (gs) {
		// center map
		pos = float3(gs->mapx * 0.5f * SQUARE_SIZE, 1000.f, gs->mapy * 0.5f * SQUARE_SIZE);
	}

	memset(viewport, 0, 4 * sizeof(int));
	memset(movState, 0, sizeof(movState));
	memset(rotState, 0, sizeof(rotState));

	// stuff that will not change can be initialised here,
	// so it does not need to be reinitialised every update
	projectionMatrix[15] = 0.0f;
	billboardMatrix[15] = 1.0f;

	SetFov(45.0f);
}
コード例 #4
0
ファイル: Rasterizer.cpp プロジェクト: NickBMarine/NicksPix
Rasterizer::Rasterizer(const unsigned width, const unsigned height, const float degrees)
{
	int w = width;
	int h = height;
	SetFov(degrees);
	_leftUBounds = new float[h];
	_rightUBounds = new float[h];
	_leftVBounds = new float[h];
	_rightVBounds = new float[h];
	_leftColor = new Color[h];
	_rightColor = new Color[h];
	_leftZBounds = new float[h];
	_rightZBounds = new float[h];
	_leftBounds = new int[h];
	_rightBounds = new int[h];
	_leftWBounds = new float[h];
	_rightWBounds = new float[h];
	_pixels.resize(width * height);
	_width = w;
	_height = h;
	ResetBounds();
	_nearPlane = 2;
	_farPlane  = 100;
	_zBuff.resize(width * height);
	SetUpMatrices();
	ResetZBuff();
	_basisOrigin = Vertex(0.0f, 0.0f, 0.0f);
	_basisP = Vertex(Color(1.0f, 0.0f, 0.0f), 1.0f, 0.0f, 0.0f);
	_basisQ = Vertex(Color(0.0f, 1.0f, 0.0f), 0.0f, 1.0f, 0.0f);
	_basisR = Vertex(Color(0.0f, 0.0f, 1.0f), 0.0f, 0.0f, 1.0f);
}
コード例 #5
0
ファイル: Camera.cpp プロジェクト: molephill/OpenGL
 void Camera::AddFov(float fov)
 {
     float oldFov = m_viewPort->GetFov();
     if(oldFov >= 1.0f && oldFov <= 45.0f)
     {
         float newFov = oldFov + fov;
         SetFov(newFov);
     }
     else if(oldFov < 1.0)
     {
         SetFov(1.0);
     }
     else
     {
         SetFov(45.0f);
     }
 }
コード例 #6
0
//----------------------------------------------------------------------------------------------------------
//                                      Camera
//----------------------------------------------------------------------------------------------------------
//Camera::Camera(char *Nom, Ufloat sx, Ufloat sy )
Camera::Camera(LPCSTR Nom) {
    nom = Nom;

    SetPos(PosParDefaut);
    SetTarg(TargParDefaut);
    SetRoll(.0f);
    SetFov(75.f);
    CalcVue();

//  SetClipFenetre( sx, sy );
    Viewport viewport;   // viewport de la camera

    UpdateProjectMatrix();
    UpdateTransMatrix();
    UpdatePlans();

    Spos = NULL;
    Starg = NULL;
    Sroll = NULL;
    Sfov = NULL;
    callbackAnim = NULL;
}
コード例 #7
0
ファイル: main.cpp プロジェクト: lvous/hadesmem
int main(int argc, char* argv[])
{
  try
  {
    std::cout << "HadesMem ESO Mod [" << HADESMEM_VERSION_STRING << "]\n";

    TCLAP::CmdLine cmd{"ESO Mod", ' ', HADESMEM_VERSION_STRING};
    TCLAP::ValueArg<DWORD> pid_arg{"",
                                   "pid",
                                   "Process ID (for multiple ESO instances)",
                                   false,
                                   0,
                                   "DWORD",
                                   cmd};
    // This should probably have some value constraints set, but it's more
    // entertaining to leave it open so people can set it to silly values.
    TCLAP::ValueArg<float> fov_arg{
      "",
      "fov",
      "Set vertical field of view (in degrees) (default "
      "50.0) for both perspectives",
      false,
      50.0f,
      "float",
      cmd};
    TCLAP::ValueArg<float> fov_3p_arg{
      "",
      "fov-3p",
      "Set vertical field of view (in degrees) (default 50.0) for 3rd person",
      false,
      50.0f,
      "float",
      cmd};
    TCLAP::ValueArg<float> fov_1p_arg{
      "",
      "fov-1p",
      "Set vertical field of view (in degrees) (default 50.0) for 1st person",
      false,
      50.0f,
      "float",
      cmd};
    TCLAP::ValueArg<float> max_camera_distance_arg{
      "",
      "max-camera-dist",
      "Set max camera zoom distance (default 10.0)",
      false,
      10.0f,
      "float",
      cmd};
    TCLAP::ValueArg<float> time_arg{"",
                                    "time",
                                    "Set time (to change day/night/etc) (range "
                                    "of [0, 24), e.g. 13.5 for 1330)",
                                    false,
                                    12.0f,
                                    "float",
                                    cmd};
    // Values above 5 seem to be invalid, but leave it open in case that changes
    // in the future (that way if the patterns don't need updating I don't need
    // to do anything).
    TCLAP::ValueArg<std::uint32_t> tone_mapping_arg{
      "",
      "tone-mapping",
      "Set tone mapping type (a.k.a shader filters) (range of [0, 5])",
      false,
      0,
      "uint32_t",
      cmd};
    TCLAP::ValueArg<float> min_view_distance_arg{
      "",
      "min-view-dist",
      "Set minimum view distance. (default 0.4)",
      false,
      0.40000001f,
      "float",
      cmd};
    TCLAP::ValueArg<float> max_view_distance_arg{
      "",
      "max-view-dist",
      "Set maximum view distance (default 2.0)",
      false,
      2.0f,
      "float",
      cmd};
    TCLAP::ValueArg<float> cur_view_distance_arg{
      "",
      "view-dist",
      "Set current view distance (range of [min-view-dist, max-view-dist])",
      false,
      2.0f,
      "float",
      cmd};
    TCLAP::SwitchArg fog_arg{"", "fog", "Toggle fog (default on)", cmd};
    TCLAP::SwitchArg anaglyph_arg{
      "", "3d", "Toggle anaglyph 3D (default off)", cmd};
    TCLAP::SwitchArg fader_arg{
      "",
      "fader",
      "Toggle fader (turn off to force high quality models) (default on)",
      cmd};
    cmd.parse(argc, argv);

    try
    {
      hadesmem::GetSeDebugPrivilege();

      std::wcout << "\nAcquired SeDebugPrivilege.\n";
    }
    catch (std::exception const& /*e*/)
    {
      std::wcout << "\nFailed to acquire SeDebugPrivilege.\n";
    }

    std::unique_ptr<hadesmem::Process> process;

    if (pid_arg.isSet())
    {
      DWORD const pid = pid_arg.getValue();
      process = std::make_unique<hadesmem::Process>(pid);
    }
    else
    {
      std::wstring const kProcName = L"eso.exe";
      process = std::make_unique<hadesmem::Process>(
        hadesmem::GetProcessByName(kProcName, false));
    }

    bool const set_fov_both = fov_arg.isSet();
    bool const set_fov_3p = fov_3p_arg.isSet();
    bool const set_fov_1p = fov_1p_arg.isSet();
    if (set_fov_both)
    {
      if (set_fov_3p || set_fov_1p)
      {
        HADESMEM_DETAIL_THROW_EXCEPTION(
          hadesmem::Error{} << hadesmem::ErrorString{
            "Please set the FoV using either the perspective-specific flags or "
            "the general flag, but not both."});
      }

      float* fov_both = &fov_arg.getValue();
      SetFov(*process, fov_both, fov_both);
    }
    else if (set_fov_3p || set_fov_1p)
    {
      float* fov_3p = set_fov_3p ? &fov_3p_arg.getValue() : nullptr;
      float* fov_1p = set_fov_1p ? &fov_1p_arg.getValue() : nullptr;
      SetFov(*process, fov_3p, fov_1p);
    }

    if (max_camera_distance_arg.isSet())
    {
      SetMaxCameraDistance(*process, max_camera_distance_arg.getValue());
    }

    if (time_arg.isSet())
    {
      SetTime(*process, time_arg.getValue());
    }

    if (tone_mapping_arg.isSet())
    {
      SetToneMappingType(*process, tone_mapping_arg.getValue());
    }

    bool const set_min_view_distance = min_view_distance_arg.isSet();
    bool const set_max_view_distance = max_view_distance_arg.isSet();
    bool const set_cur_view_distance = cur_view_distance_arg.isSet();
    if (set_min_view_distance || set_max_view_distance || set_cur_view_distance)
    {
      auto const min_view_distance =
        set_min_view_distance ? &min_view_distance_arg.getValue() : nullptr;
      auto const max_view_distance =
        set_max_view_distance ? &max_view_distance_arg.getValue() : nullptr;
      auto const cur_view_distance =
        set_cur_view_distance ? &cur_view_distance_arg.getValue() : nullptr;
      SetViewDistances(
        *process, min_view_distance, max_view_distance, cur_view_distance);
    }

    if (fog_arg.isSet())
    {
      ToggleFog(*process);
    }

    if (anaglyph_arg.isSet())
    {
      Toggle3D(*process);
    }

    if (fader_arg.isSet())
    {
      ToggleFader(*process);
    }

    std::cout << "\nFinished.\n";

    return 0;
  }
  catch (...)
  {
    std::cerr << "\nError!\n";
    std::cerr << boost::current_exception_diagnostic_information() << '\n';

    return 1;
  }
}