// Main entry point for the application int main() { // Initialise Iw2D Iw2DInit(); // Get surface width and height int surface_width = Iw2DGetSurfaceWidth(); int surface_height = Iw2DGetSurfaceHeight(); // Rotation angle of rectangle float angle = 0; // Wait for a quit request from the host OS while (!s3eDeviceCheckQuitRequest()) { // Clear background to blue Iw2DSurfaceClear(0xff8080); // Set up a transform CIwFMat2D mat; mat.SetRot(angle); mat.ScaleRot(2.0f); mat.SetTrans(CIwFVec2((float)surface_width / 2, (float)surface_height / 2)); Iw2DSetTransformMatrix(mat); angle += 0.01f; // Render filled rectangle Iw2DSetColour(0xff00ffff); Iw2DFillRect(CIwFVec2(-50.0f, -100.0f), CIwFVec2(100.0f, 200.0f)); // Render filled arc Iw2DSetColour(0xffff00ff); Iw2DFillArc(CIwFVec2(0, 0), CIwFVec2(100.0f, 100.0f), 0, 1.8 * PI); // Flip the surface buffer to screen Iw2DSurfaceShow(); // Sleep to allow the OS to process events etc. s3eDeviceYield(0); } // Shut down Iw2D Iw2DTerminate(); return 0; }
void N2F::Iw3D::Image::draw(int64 delta, CIwFVec2 offset, float angle, float scale) { CIwFVec2 p = CIwFVec2( ((this->pos.x * this->scaleFactor.scale) + this->scaleFactor.offset.x + offset.x), ((this->pos.y * this->scaleFactor.scale) + this->scaleFactor.offset.y + offset.y) ); CIwFVec2 s = CIwFVec2( (this->size.x * scale), (this->size.y * scale) ); CIwFMat2D m = CIwFMat2D::g_Identity; m.Scale(scale); m.SetRot(angle); m.ScaleRot(scale); m.SetTrans(CIwFVec2((p.x + (s.x / 2)), (p.y + (s.y / 2)))); Iw2DSetTransformMatrix(m); Iw2DDrawImage(this->img, CIwFVec2(-(s.x / 2), -(s.y / 2)), s); Iw2DSetTransformMatrix(CIwFMat2D::g_Identity); return; }
void renderMapPlayer() { IwGxLightingOff(); int16 w = IwGxGetScreenWidth()*0.085f; float whScale = (float)((double)playerTexture->GetWidth() / playerTexture->GetHeight()); int16 h = w * 1/whScale; Iw2DSetAlphaMode(IW_2D_ALPHA_NONE); double angle = rad(getGameState()->getPlayer()->getHeading()); Iw2DSetTransformMatrix(CIwFMat2D::g_Identity); CIwFVec2 centre = CIwFVec2((int16)Iw2DGetSurfaceWidth()/2, (int16)Iw2DGetSurfaceHeight()/2); CIwFMat2D rot; rot.SetRot(angle, (CIwFVec2)centre); Iw2DSetTransformMatrix(rot); CIwFVec2 size = CIwFVec2(w, h); CIwFVec2 topLeft = CIwFVec2(centre.x-size.x/2, centre.y-size.y/2); Iw2DDrawImage(playerTexture, topLeft, size); }
void CameraDefend::Render() { if (defended) { IwGxLightingOff(); animMatSuccess->SetModulateMode(CIwMaterial::MODULATE_NONE); animMatSuccess->SetAlphaMode(CIwMaterial::ALPHA_BLEND); IwGxSetMaterial(animMatSuccess); IwGxSetUVStream(anim_uvs_success); IwGxSetVertStreamScreenSpace(animVertsLeftSuccess, 4); IwGxDrawPrims(IW_GX_QUAD_LIST, NULL, 4); IwGxSetVertStreamScreenSpace(animVertsRightSuccess, 4); IwGxDrawPrims(IW_GX_QUAD_LIST, NULL, 4); if (animMatSuccess->GetAnimCelID() == animMatSuccess->GetAnimCelNum() - 1) { defended = false; } } else { animMatSuccess->SetAnimCelID(0); } if (!isActive()) return; { Ghost* ghost = getGameState()->getGhost(); GhostAttack* attack = (ghost != NULL) ? ghost->getAttack() : NULL; if (attack != NULL && ((attack->getInterval() < 750 && attack->getInterval() > 600) || (attack->getInterval() < 400 && attack->getInterval() > 250))) { dotTexture = dotTextureRed; } else { dotTexture = dotTextureGreen; } } Iw2DSetAlphaMode(IW_2D_ALPHA_NONE); Iw2DSetTransformMatrix(CIwFMat2D::g_Identity); CIwFMat2D rot; rot.SetRot(rad(dotAngle), CIwFVec2( dotVertsTopLeftLeft.x + dotVertsSizeLeft.x/2, dotVertsTopLeftLeft.y + dotVertsSizeLeft.y/2)); Iw2DSetTransformMatrix(rot); Iw2DDrawImage(dotTexture, dotVertsTopLeftLeft, dotVertsSizeLeft); rot.SetRot(rad(dotAngle), CIwFVec2( dotVertsTopLeftRight.x + dotVertsSizeRight.x/2, dotVertsTopLeftRight.y + dotVertsSizeRight.y/2)); Iw2DSetTransformMatrix(rot); Iw2DDrawImage(dotTexture, dotVertsTopLeftRight, dotVertsSizeRight); bool isDrwaing = true; for (int i = 0; i < DEFEND_TOUCHES_MAX; i++) { // Is any touch drawing? if (touch[i]->drawing) break; if (i == DEFEND_TOUCHES_MAX - 1) { isDrwaing = false; animMat->SetAnimCelID(0); } } if (isDrwaing) { IwGxLightingOff(); animMat->SetModulateMode(CIwMaterial::MODULATE_NONE); animMat->SetAlphaMode(CIwMaterial::ALPHA_BLEND); IwGxSetMaterial(animMat); IwGxSetUVStream(anim_uvs); IwGxSetVertStreamScreenSpace(animVertsLeft, 4); IwGxDrawPrims(IW_GX_QUAD_LIST, NULL, 4); IwGxSetVertStreamScreenSpace(animVertsRight, 4); IwGxDrawPrims(IW_GX_QUAD_LIST, NULL, 4); } }