โครงการนี้ถูกเก็บถาวร มันไม่ได้รับการดูแลหรือพัฒนาอีกต่อไป
ผลกำไร
ผลกำไรคือไลบรารีอินพุต C ++ ที่ยอดเยี่ยมสำหรับเกมของคุณ:
- จัดการกับความต้องการอินพุตของคุณตั้งแต่การอ่านอุปกรณ์ระดับต่ำไปจนถึงการแมประดับสูงของปุ่มที่ผู้ใช้กำหนด
- มีเอกสารที่ดีสะอาดน้ำหนักเบาและใช้งานง่าย
- อินเทอร์เฟซแบบครบวงจรในแพลตฟอร์มที่รองรับทั้งหมด: Android NDK, iOS/TVOS, Linux, MacOS, Windows
- อุปกรณ์ที่รองรับ: แป้นพิมพ์, เมาส์, gamepad, มัลติทัช, เซ็นเซอร์ในตัวอุปกรณ์
- โอเพ่นซอร์ส (ใบอนุญาต MIT)
- รายการคุณสมบัติที่สมบูรณ์
- เอกสาร API
การใช้งาน
# include < gainput/gainput.h >
enum Button
{
ButtonConfirm
};
gainput::InputManager manager;
manager.SetDisplaySize(displayWidth, displayHeight);
const gainput::DeviceId keyboardId = manager.CreateDevice<gainput::InputDeviceKeyboard>();
const gainput::DeviceId mouseId = manager.CreateDevice<gainput::InputDeviceMouse>();
const gainput::DeviceId padId = manager.CreateDevice<gainput::InputDevicePad>();
const gainput::DeviceId touchId = manager.CreateDevice<gainput::InputDeviceTouch>();
gainput::InputMap map (manager);
map.MapBool(ButtonConfirm, keyboardId, gainput::KeyReturn);
map.MapBool(ButtonConfirm, mouseId, gainput::MouseButtonLeft);
map.MapBool(ButtonConfirm, padId, gainput::PadButtonA);
map.MapBool(ButtonConfirm, touchId, gainput::Touch0Down);
while (running)
{
manager. Update ();
// May need some platform-specific message handling here
if (map. GetBoolWasDown (ButtonConfirm))
{
// Confirmed!
}
}คุณสมบัติ
- เสนอ อินเทอร์เฟซแบบครบวงจร สำหรับแพลตฟอร์มที่รองรับทั้งหมด (การเปลี่ยนแปลงเล็กน้อยบางอย่างจำเป็นในการตั้งค่าไลบรารี)
- จัดเตรียมอินเทอร์เฟซระดับต่ำและระดับสูง: สอบถามสถานะของปุ่มอินพุตอุปกรณ์โดยตรงหรือแผนที่อุปกรณ์แผนที่ไปยังปุ่มผู้ใช้ ด้วยวิธีนี้มันง่ายที่จะรองรับอินพุตทางเลือกหรือเปลี่ยน การแมปอินพุต ในภายหลัง
- รองรับ การบันทึกและเล่น ลำดับอินพุต
- คุณสมบัติ เซิร์ฟเวอร์เครือข่าย เพื่อรับข้อมูลเกี่ยวกับอุปกรณ์และการแมปจาก
- อินสแตนซ์กำไรสองอินสแตนซ์สามารถ ซิงค์สถานะอุปกรณ์ผ่านเครือข่าย นอกจากนี้ยังเป็นไปได้ที่จะได้รับ อินพุตแบบมัลติทัชจากเบราว์เซอร์ปกติของสมาร์ทโฟน
- เขียนอย่างสมบูรณ์ใน C ++ แบบพกพา
- ไม่มีการใช้ STL ไม่มีข้อยกเว้นใด ๆ ที่ถูกโยนทิ้ง ไม่มีการใช้ RTTI ไม่มี C ++ 11 และ ไม่มีการเพิ่ม
- ไม่มีการพึ่งพาภายนอกแปลก ๆ ขึ้นอยู่กับแพลตฟอร์ม SDK ที่มีอยู่
- ตั้งค่าและสร้างได้อย่างง่ายดาย โดยใช้เครื่องมือ IDE/BUILD ที่คุณชื่นชอบ
- ผู้ฟัง สามารถติดตั้งได้ทั้งปุ่มสำหรับปุ่มอุปกรณ์และปุ่มผู้ใช้ ด้วยวิธีนี้คุณจะได้รับแจ้งเมื่อสถานะปุ่มเปลี่ยนไป
- ท่าทาง ช่วยให้สามารถตรวจพบรูปแบบอินพุตที่ซับซ้อนได้เช่นการดับเบิลคลิกสองครั้ง, ท่าทางการหยิก/การหมุนหรือถือปุ่มหลายปุ่มพร้อมกัน
- สามารถจัดสรร ผู้จัดสรรภายนอก ให้กับไลบรารีเพื่อให้การจัดการหน่วยความจำทั้งหมดทำตามที่คุณต้องการ
- รองรับ อินพุตดิบ บน Linux และ Windows
- Gamepad Rumbling ได้รับการสนับสนุนหากมี
- มันง่ายที่จะตรวจสอบปุ่มกดทั้งหมดเพื่อให้วิธีการให้ผู้เล่นทำการแมปปุ่มของพวกเขานั้นง่ายต่อการใช้งาน ในทำนองเดียวกันมันง่ายที่จะบันทึกและโหลดการแมป
- คุณสมบัติที่ไม่จำเป็นเช่นท่าทางหรือเซิร์ฟเวอร์เครือข่ายถูกปิดใช้งานได้ง่าย
- สามารถตั้ง ค่าโซนที่ตายแล้ว สำหรับปุ่มลอยตัวใด ๆ
- การเปลี่ยนแปลงของรัฐ คือถ้าปุ่มหยุดทำงานใหม่หรือเพิ่งเปิดตัวสามารถตรวจสอบได้
อาคาร
โดยค่าเริ่มต้นผลกำไรจะถูกสร้างขึ้นโดยใช้ CMake
- เรียกใช้
mkdir build - เรียกใช้
cmake .. - เรียก
make - ห้องสมุดสามารถพบได้ใน
lib/ , executables ใน samples/
การบริจาค
ทุกคนยินดีที่จะมีส่วนร่วมในห้องสมุด หากคุณพบปัญหาใด ๆ คุณสามารถส่งพวกเขาโดยใช้ระบบปัญหาของ GitHub หากคุณต้องการมีส่วนร่วมในรหัสคุณควรแยกโครงการแล้วส่งคำขอดึง
การพึ่งพาอาศัยกัน
ผลกำไรมีจำนวนการพึ่งพาภายนอกน้อยที่สุดเพื่อให้อยู่ในตัวเองมากที่สุด ใช้วิธีเริ่มต้นของแพลตฟอร์มในการรับอินพุตและไม่ได้ใช้ STL
การทดสอบ
โดยทั่วไปการทดสอบควรทำโดยการสร้างและใช้ผลกำไรบนแพลตฟอร์มที่รองรับทั้งหมด ควรใช้ตัวอย่างใน samples/ โฟลเดอร์เพื่อตรวจสอบว่าไลบรารีนั้นใช้งานได้หรือไม่
การทดสอบหน่วยใน test/ โฟลเดอร์ถูกสร้างขึ้นโดย CMAKE CMAKE ปกติ การปฏิบัติการสามารถพบได้ใน test/ โฟลเดอร์ การกำหนดค่าการสร้างและการทดสอบหน่วยทั้งหมดถูกสร้างและดำเนินการโดย Travis CI เมื่อใดก็ตามที่มีบางสิ่งถูกผลักเข้าไปในที่เก็บ
ทางเลือก