//----------------------------------------------------------------------------- void HexMapTest::Init() { zoom = 1.0f; rotation = 0.0f; screenTranslationX = 0; screenTranslationY = 0; // Initialise the input system g_Input.Init(); // Initialise vectors s_left = CIwVec3::g_AxisX; s_up = -CIwVec3::g_AxisY; s_Angles = CIwSVec3::g_Zero; s_cameraPos = CIwVec3(0, 0, -0x80); // Initialise view matrix s_viewMatrix = CIwMat::g_Identity; s_viewMatrix.SetTrans(s_cameraPos); s_viewMatrix.LookAt( s_viewMatrix.GetTrans(), CIwVec3::g_Zero, -CIwVec3::g_AxisY); // Initialise IwGxInit(); IwResManagerInit(); // Set screen clear colour IwGxSetColClear(0x40, 0x40, 0x40, 0x00); // Turn all lighting off IwGxLightingOff(); // Set field of view IwGxSetPerspMul(0xa0); // Set near and far planes IwGxSetFarZNearZ(0x1000, 0x10); // Create empty texture object s_BitMapTexture = new CIwTexture; // Load image data from disk into texture s_BitMapTexture->LoadFromFile("./textures/testTexture_8bit.bmp"); // "Upload" texture to VRAM s_BitMapTexture->Upload(); // Set the view matrix along the -ve z axis CIwMat view = CIwMat::g_Identity; view.t.z = -0x100; IwGxSetViewMatrix(&view); IwGetResManager()->LoadGroup("TileRes.group"); pGroup = IwGetResManager()->GetGroupNamed("TileRes"); hexGrid = new HexGrid(hexGridMaxX, hexGridMaxY, textureMaxX, textureMaxY); hexGrid->setTexture(IW_TEXTURE(pGroup,"grid"),textureMaxX,textureMaxY); s_ModelMatrix.SetIdentity(); }
void renderImageWorldSpace(CIwFVec2& position, float angle, float scaleFactor, int textureSize, float worldRot, int frameNumber, int numFrames, float z) { static CIwSVec3 vertices[4]; static CIwSVec2 UVs[4]; //set up model space vertices int vertexDist = scaleFactor*textureSize/2; vertices[0] = CIwSVec3(-1*vertexDist, -1*vertexDist, z); vertices[2] = CIwSVec3(vertexDist, -1*vertexDist, z); vertices[3] = CIwSVec3(vertexDist, vertexDist, z); vertices[1] = CIwSVec3(-1*vertexDist, vertexDist, z); CIwMat modelTransform = CIwMat::g_Identity; modelTransform.SetRotZ(IW_ANGLE_FROM_RADIANS(angle)); modelTransform.SetTrans(CIwVec3(position.x, -position.y, 0)); CIwMat rot = CIwMat::g_Identity; rot.SetRotZ(IW_ANGLE_FROM_RADIANS(worldRot)); modelTransform = modelTransform*rot; IwGxSetModelMatrix(&modelTransform, false); float frameRatio = 1.0/numFrames; //set up sprite UV's iwfixed cf = IW_FIXED((float)frameNumber / numFrames); iwfixed nf = IW_FIXED((frameNumber + 1.0) / numFrames); UVs[0] = CIwSVec2(cf, 0); UVs[2] = CIwSVec2(nf, 0); UVs[3] = CIwSVec2(nf, IW_GEOM_ONE); UVs[1] = CIwSVec2(cf, IW_GEOM_ONE); //render the unit in model space IwGxSetUVStream(UVs); IwGxSetZDepthFixed(8); IwGxSetVertStreamModelSpace(vertices, 4); IwGxDrawPrims(IW_GX_QUAD_STRIP, NULL, 4); IwGxFlush(); }