void InputManager::Initialize()
{
#define USEINPUTKEY(e,hashVal,text) \
	_keyNameTable[ToUpper(text)] = e;
#include "InputKeys.h"
#undef USEINPUTKEY

	//Clear Xbox Button States
	ClearXboxButtonStates();
	
	StringList bindings;
	GetLinesFromFile("Config/input_bindings.ini", bindings);
	StringList::iterator it = bindings.begin();
	while (it != bindings.end())
	{
		if (((*it).size() == 0) || ((*it)[0] == ';'))
		{
			it++;
			continue;
		}
		StringList splitBinding = SplitString(*it, "=:", false);
		if (splitBinding.size() >= 2)
		{
			splitBinding[0] = TrimString(splitBinding[0]);
			splitBinding[1] = TrimString(splitBinding[1]);
			BindKey(splitBinding[0], splitBinding[1]);
		}
		it++;
	}
}
Example #2
0
int Xmain() {
    ifstream infile;

    // Get lines from file
	cout << "Let's process a file of random text and count characters!" << endl;
    PromptUserToOpenFile(infile);
    linesV lines = GetLinesFromFile(infile);
    //for (int i = 0; i < lines.size(); i++)
        //cout << "score " << i << " is " << lines.getAt(i) << endl;

    // Prepare an array to hold the data.
    int lCount[alpha_size];
    for (int i = 0; i < alpha_size; i++)
        lCount[i] = 0;

    // Examine each line for its characters, increment the proper indexes.
    for (int i = 0; i < lines.size(); i++) {
        BumpCountForEachChar(lines[i], lCount);
    }

    PrintCounts(lCount);



    return 0;
}
Example #3
0
// Loads a shader, stored as a text file with filename sFile.  The shader is of type iType (vertex, fragment, geometry, etc.)
bool CShader::LoadShader(string sFile, int iType)
{
	vector<string> sLines;

	if(!GetLinesFromFile(sFile, false, &sLines))return false;

	const char** sProgram = new const char*[(int)sLines.size()];
	for (int i = 0; i < (int)sLines.size(); i++) 
		sProgram[i] = sLines[i].c_str();
	
	m_uiShader = glCreateShader(iType);

	glShaderSource(m_uiShader, (int)sLines.size(), sProgram, NULL);
	glCompileShader(m_uiShader);

	delete[] sProgram;

	int iCompilationStatus;
	glGetShaderiv(m_uiShader, GL_COMPILE_STATUS, &iCompilationStatus);

	if(iCompilationStatus == GL_FALSE)
	{
		char sInfoLog[1024];
		char sFinalMessage[1536];
		int iLogLength;
		glGetShaderInfoLog(m_uiShader, 1024, &iLogLength, sInfoLog);
		sprintf_s(sFinalMessage, "Error! Shader file wasn't compiled! The compiler returned:\n\n%s", sInfoLog);
		MessageBox(NULL, sFinalMessage, "Error", MB_ICONERROR);
		return false;
	}
	m_iType = iType;
	m_bLoaded = true;

	return true;
}
Example #4
0
// Loads a shader, stored as a text file with filename sFile.  The shader is of type iType (vertex, fragment, geometry, etc.)
bool CShader::LoadShader(string sFile, int iType)
{
	vector<string> sLines;

	if(!GetLinesFromFile(sFile, false, &sLines)) {
		char message[1024];
		sprintf_s(message, "Cannot load shader\n%s\n", sFile.c_str());
		MessageBox(NULL, message, "Error", MB_ICONERROR);
		return false;
	}

	const char** sProgram = new const char*[(int)sLines.size()];
	for (int i = 0; i < (int)sLines.size(); i++) 
		sProgram[i] = sLines[i].c_str();
	
	m_uiShader = glCreateShader(iType);

	glShaderSource(m_uiShader, (int)sLines.size(), sProgram, NULL);
	glCompileShader(m_uiShader);

	delete[] sProgram;

	int iCompilationStatus;
	glGetShaderiv(m_uiShader, GL_COMPILE_STATUS, &iCompilationStatus);

	if(iCompilationStatus == GL_FALSE)
	{
		char sInfoLog[1024];
		char sFinalMessage[1536];
		int iLogLength;
		glGetShaderInfoLog(m_uiShader, 1024, &iLogLength, sInfoLog);
		char sShaderType[64];
		if (iType == GL_VERTEX_SHADER)
			sprintf_s(sShaderType, "vertex shader");
		else if (iType == GL_FRAGMENT_SHADER)
			sprintf_s(sShaderType, "fragment shader");
		else if (iType == GL_GEOMETRY_SHADER)
			sprintf_s(sShaderType, "geometry shader");
		else if (iType == GL_TESS_CONTROL_SHADER)
			sprintf_s(sShaderType, "tesselation control shader");
		else if (iType == GL_TESS_EVALUATION_SHADER)
			sprintf_s(sShaderType, "tesselation evaluation shader");
		else
			sprintf_s(sShaderType, "unknown shader type");

		sprintf_s(sFinalMessage, "Error in %s!\n%s\nShader file not compiled.  The compiler returned:\n\n%s", sShaderType, sFile.c_str(), sInfoLog);

		MessageBox(NULL, sFinalMessage, "Error", MB_ICONERROR);
		return false;
	}
	m_iType = iType;
	m_bLoaded = true;

	return true;
}
Example #5
0
bool ShaderManager::GetLinesFromFile(const FString& file, bool bIncludePart, std::vector<FString>* result)
{
//    std::cout << "------ Get line From file ------" << std::endl;
    
    FILE* fp = fopen(file.c_str(), "rt");
    
    if(fp == nullptr) {  std::cerr << "file not found: " << file << std::endl; return false; }

    FString dir = "";
    auto slash_index = -1;
    
    for(auto i = 0lu; i < file.size(); i++)
    {
        if(file[i] == '\\' || file[i] == '/')
        {
            slash_index = i;
            break;
        }
    }
//
    dir = file.substr(0, slash_index + 1);
    
    //Get all lines from a file
    
    char line[255];
    
    bool bLocIncludePart = false;
    
    while(fgets(line, 255, fp))
    {
        std::stringstream ss(line);
        FString first;
        
        ss >> first;
//        std::cout << first ;
        
        if(first == "#include")
        {
            FString file_name;
            ss >> file_name;
            
            if(file_name.size() > 0 && file_name[0] == '\"' && file_name[file_name.size()-1] == '\"')
            {
                file_name = file_name.substr(1, file_name.size()-2);
                GetLinesFromFile(dir + file_name, true, result);
            }
        }
        else if(first == "#include_part")
Example #6
0
// Loads a file into a vector of strings (vResult)
bool CShader::GetLinesFromFile(string sFile, bool bIncludePart, vector<string>* vResult)
{
	FILE* fp;
	fopen_s(&fp, sFile.c_str(), "rt");
	if(!fp)return false;

	string sDirectory;
	int slashIndex = -1;

	for (int i = (int)sFile.size()-1; i == 0; i--)
	{
		if(sFile[i] == '\\' || sFile[i] == '/')
		{
			slashIndex = i;
			break;
		}
	}

	sDirectory = sFile.substr(0, slashIndex+1);

	// Get all lines from a file

	char sLine[255];

	bool bInIncludePart = false;

	while(fgets(sLine, 255, fp))
	{
		stringstream ss(sLine);
		string sFirst;
		ss >> sFirst;
		if(sFirst == "#include")
		{
			string sFileName;
			ss >> sFileName;
			if((int)sFileName.size() > 0 && sFileName[0] == '\"' && sFileName[(int)sFileName.size()-1] == '\"')
			{
				sFileName = sFileName.substr(1, (int)sFileName.size()-2);
				GetLinesFromFile(sDirectory+sFileName, true, vResult);
			}
		}
		else if(sFirst == "#include_part")
	bool OpenGLShader::LoadShader(string _fileName, int _shaderType)
	{
		vector<string> lines = GetLinesFromFile(_fileName);

		if (lines.size() == 0)
			return false;

		const char** programString = new const char*[lines.size()];
		for (int i = 0; i < lines.size(); i++)
		{
			programString[i] = lines[i].c_str();
		}

		shaderId = glCreateShader(_shaderType);

		glShaderSource(shaderId, (int)lines.size(), programString, NULL);

		glCompileShader(shaderId);

		delete[] programString;

		int status;
		glGetShaderiv(shaderId, GL_COMPILE_STATUS, &status);

		if (status == GL_FALSE)
		{
			char infoLog[1024];
			_TCHAR finalMessage[1536];
			int logLength;
			glGetShaderInfoLog(shaderId, 1024, &logLength, infoLog);
			swprintf(finalMessage, L"Error! Shader file %s wasn't compiled! The compiler returned:\n\n%s", _fileName.c_str(), infoLog);
			MessageBox(NULL, finalMessage, _T("Error"), MB_ICONERROR);
			return false;
		}

		shaderType = _shaderType;

		return true;
	}
Example #8
0
bool ShaderManager::LoadShader(const FString& file, int type)
{
    std::vector<FString> vec_lines;
    
    if(!GetLinesFromFile(file, false, &vec_lines)) return false;
    

    const char** program = new const char*[vec_lines.size()];
    
    for(int i = 0; i < (int)vec_lines.size(); i++)
    {
        program[i] = vec_lines[i].c_str();
        std::cout << vec_lines[i].c_str();
    }
    
    //    for(int i = 0; i < vec_lines.size(); i++)
//    {
//        std::cout << prg << std::endl;
//    }
    
    shader_id_ = glCreateShader(type);
    glShaderSource(shader_id_,  vec_lines.size(), program, nullptr);
    
    glCompileShader(shader_id_);
    
    
    
    delete [] program;
    
    int compilation_status;
    glGetShaderiv(shader_id_, GL_COMPILE_STATUS, &compilation_status);
    
    if(compilation_status == GL_FALSE)
    {
        GLint maxLength = 0;
        glGetShaderiv(shader_id_, GL_INFO_LOG_LENGTH, &maxLength);
        
        // The maxLength includes the NULL character
        std::vector<GLchar> errorLog(maxLength);
        glGetShaderInfoLog(shader_id_, maxLength, &maxLength, &errorLog[0]);
        
        // Provide the infolog in whatever manor you deem best.
        // Exit with failure.
        glDeleteShader(shader_id_); // Don't leak the shader.
        
        
        for(int i = 0; i < (int)errorLog.size(); i++)
        {
            std::cout << errorLog[i];
        }
        
        return false;
    }
    
    std::cout << glGetError() << std::endl;
    
    type_ = type;
    bIsLoaded_ = true;
    
    
    return true;
}