// // Lol Engine // // Copyright: (c) 2010-2011 Sam Hocevar // This program is free software; you can redistribute it and/or // modify it under the terms of the Do What The Fuck You Want To // Public License, Version 2, as published by Sam Hocevar. See // http://sam.zoy.org/projects/COPYING.WTFPL for more details. // #if defined HAVE_CONFIG_H # include "config.h" #endif #if defined __CELLOS_LV2__ # include #endif #include "core.h" #include "ps3input.h" namespace lol { /* * PS3 Input implementation class */ class Ps3InputData { friend class Ps3Input; vec2 mousepos; vec3i mousebuttons; }; /* * Public Ps3Input class */ Ps3Input::Ps3Input() : data(new Ps3InputData()) { #if defined __CELLOS_LV2__ cellPadUtilPadInit(); cellPadUtilSetSensorMode(true); cellPadUtilSetPressMode(true); cellPadUtilSetSensorFilter(CELL_PADFILTER_IIR_CUTOFF_2ND_LPF_BT_010); data->mousepos = vec2(320.0f, 240.0f); data->mousebuttons = vec3i(0, 0, 0); gamegroup = GAMEGROUP_BEFORE; #endif } void Ps3Input::TickGame(float deltams) { Entity::TickGame(deltams); #if defined __CELLOS_LV2__ cellPadUtilUpdate(); int pad = cellPadUtilGetFirstConnectedPad(); if (pad >= 0) { CellPadUtilAxis axis = cellPadUtilGetAxisValue(pad, CELL_UTIL_ANALOG_RIGHT); vec2 delta(4e-3f * (abs(axis.x - 127) < 16 ? 0 : axis.x - 127), -4e-3f * (abs(axis.y - 127) < 16 ? 0 : axis.y - 127)); data->mousepos += delta * deltams; Input::SetMousePos((vec2i)data->mousepos); // L1 for mouse button uint32_t paddata = cellPadUtilGetDigitalData(pad); int but = cellPadUtilDigitalButtonPressed(paddata, CELL_UTIL_BUTTON_L1) || cellPadUtilDigitalButtonPressed(paddata, CELL_UTIL_BUTTON_R1); if (but && !data->mousebuttons.x) Input::SetMouseButton(0); else if (!but && data->mousebuttons.x) Input::UnsetMouseButton(0); data->mousebuttons.x = but; } #endif } Ps3Input::~Ps3Input() { delete data; } } /* namespace lol */