bool ClientEngine::initialize() { // Setup Window m_Window.setName("void"); // Connect to server ENetAddress address; if(enet_address_set_host(&address, "localhost") != 0) return false; address.port = 1234; if(!m_Client.connect(&address)) return false; // Setup Resource Manager m_ResourceManager.registerResourceType<Texture2dFile>(RES_TEXTURE2D); // Setup OpenGL glClearDepth(1); glDepthFunc(GL_LEQUAL); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); // Setup camera m_Camera.setNear(0.1); m_Camera.setFar(100); m_Camera.setRotation(Quaternion(vec3f(1,0,0), -tools4k::Pi*0.5)); m_Camera.setScreen(m_Window.size()); m_Camera.setFov(90); // Setup shader if(!m_Shader.load("Shader.vert", "Shader.frag")) return false; m_Shader.setUniform("DiffuseMap", 0); // Setup map { int myTileMap = m_ClientMap.createTileMap(); TileMap* tm = m_ClientMap.getTileMap(myTileMap); tm->diffuse = (Texture2dFile*)m_ResourceManager.loadResource(RES_TEXTURE2D, "tileset.png"); tm->tileSize = 32; tm->width = 128; int id = m_ClientMap.createVoxelType("Rock"); VoxelType* vt = m_ClientMap.getVoxelType(id); vt->collisionShape = VCSHAPE_CUBE; ClientVoxelType* cvt = m_ClientMap.getClientVoxelType(id); cvt->mesh = VCSHAPE_CUBE; cvt->renderMode = VRENDER_SOLID; cvt->tileMap = myTileMap; memset(cvt->faces, 0, sizeof(cvt->faces)); cvt->faces[VFACE_BACK] = 1; cvt->faces[VFACE_TOP] = 4; Voxel voxel; voxel.typeId = id; m_ClientMap.setVoxel(vec3i(0,0,0), voxel); m_ClientMap.setVoxel(vec3i(1,1,1), voxel); m_ClientMap.updateModel(aabb3i(vec3i(0,0,0), vec3i(10,10,10))); } if(!loadPackage("Base")) return false; return true; }