mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-05-01 18:13:57 +00:00
Some checks failed
CI / clang-format (push) Has been cancelled
CI / ${{ matrix.name }} (false, --toolchain /usr/local/vitasdk/share/vita.toolchain.cmake, false, false, Ninja, Vita, ubuntu-latest, true, true) (push) Has been cancelled
CI / ${{ matrix.name }} (false, -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0.26100.0, false, false, Visual Studio 17 2022, true, Xbox One, windows-latest, amd64, false, true) (push) Has been cancelled
CI / ${{ matrix.name }} (false, -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/3DS.cmake, false, devkitpro/devkitarm:latest, false, Ninja, true, Nintendo 3DS, ubuntu-latest, true) (push) Has been cancelled
CI / ${{ matrix.name }} (false, -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake, false, devkitpro/devkita64:latest, false, Ninja, Nintendo Switch, true, ubuntu-latest, true) (push) Has been cancelled
CI / ${{ matrix.name }} (false, emcmake, false, false, true, Ninja, Emscripten, ubuntu-latest, true) (push) Has been cancelled
CI / ${{ matrix.name }} (false, false, false, Ninja, true, MSVC (arm64), windows-latest, amd64_arm64, false) (push) Has been cancelled
CI / ${{ matrix.name }} (false, false, true, Ninja, true, MSVC (x86), windows-latest, amd64_x86, false) (push) Has been cancelled
CI / ${{ matrix.name }} (false, true, false, Ninja, true, MSVC (x64), windows-latest, amd64, false) (push) Has been cancelled
CI / ${{ matrix.name }} (false, true, true, false, Ninja, true, MSVC (x64 Debug), windows-latest, amd64, false) (push) Has been cancelled
CI / ${{ matrix.name }} (true, false, -DCMAKE_SYSTEM_NAME=iOS, false, false, Xcode, true, iOS, macos-15, true) (push) Has been cancelled
CI / ${{ matrix.name }} (true, false, false, false, Ninja, Android, ubuntu-latest, true) (push) Has been cancelled
CI / ${{ matrix.name }} (true, false, true, false, Ninja, macOS, macos-latest, true) (push) Has been cancelled
CI / ${{ matrix.name }} (true, true, false, Ninja, true, mingw-w64-x86_64, mingw64, msys2 mingw64, windows-latest, msys2 {0}, true) (push) Has been cancelled
CI / ${{ matrix.name }} (true, true, true, false, Ninja, true, Linux (Debug), ubuntu-latest, true) (push) Has been cancelled
CI / ${{ matrix.name }} (true, true, true, false, Ninja, true, Linux, ubuntu-latest, true) (push) Has been cancelled
CI / Flatpak (${{ matrix.arch }}) (aarch64, ubuntu-22.04-arm) (push) Has been cancelled
CI / Flatpak (${{ matrix.arch }}) (x86_64, ubuntu-latest) (push) Has been cancelled
CI / C++ (push) Has been cancelled
Docker / Publish web port (push) Has been cancelled
CI / Release (push) Has been cancelled
Introduces a third person camera system with orbit camera, input handling (mouse/keyboard/touch/gamepad), display actor cloning, and camera-relative movement. Includes shared character utilities (animator, cloner, customizer) and an IExtraAnimHandler interface for optional animation extensions. Also includes generic base game fixes and extension system improvements.
76 lines
2.1 KiB
C++
76 lines
2.1 KiB
C++
#include "extensions/common/charactertables.h"
|
|
|
|
#include "legopathactor.h"
|
|
|
|
namespace Extensions
|
|
{
|
|
namespace Common
|
|
{
|
|
|
|
const char* const g_walkAnimNames[] = {
|
|
"CNs001xx", // 0: Normal (default)
|
|
"CNs002xx", // 1: Joyful
|
|
"CNs003xx", // 2: Gloomy
|
|
"CNs005xx", // 3: Leaning
|
|
"CNs006xx", // 4: Scared
|
|
"CNs007xx", // 5: Hyper
|
|
};
|
|
const int g_walkAnimCount = sizeof(g_walkAnimNames) / sizeof(g_walkAnimNames[0]);
|
|
|
|
const char* const g_idleAnimNames[] = {
|
|
"CNs008xx", // 0: Sway (default)
|
|
"CNs009xx", // 1: Groove
|
|
"CNs010xx", // 2: Excited
|
|
"CNs008Pa", // 3: Wobbly
|
|
"CNs009Pa", // 4: Peppy
|
|
"CNs012Br", // 5: Brickster
|
|
};
|
|
const int g_idleAnimCount = sizeof(g_idleAnimNames) / sizeof(g_idleAnimNames[0]);
|
|
|
|
// Vehicle model names (LOD names). The helicopter is a compound ROI ("copter")
|
|
// with no standalone LOD; use its body part instead.
|
|
const char* const g_vehicleROINames[VEHICLE_COUNT] =
|
|
{"chtrbody", "jsuser", "dunebugy", "bike", "board", "moto", "towtk", "ambul"};
|
|
|
|
// Ride animation names for small vehicles (NULL = large vehicle, no ride anim)
|
|
const char* const g_rideAnimNames[VEHICLE_COUNT] = {NULL, NULL, NULL, "CNs001Bd", "CNs001sk", "CNs011Ni", NULL, NULL};
|
|
|
|
// Vehicle variant ROI names used in ride animations
|
|
const char* const g_rideVehicleROINames[VEHICLE_COUNT] = {NULL, NULL, NULL, "bikebd", "board", "motoni", NULL, NULL};
|
|
|
|
bool IsLargeVehicle(int8_t p_vehicleType)
|
|
{
|
|
return p_vehicleType != VEHICLE_NONE && p_vehicleType < VEHICLE_COUNT && g_rideAnimNames[p_vehicleType] == NULL;
|
|
}
|
|
|
|
int8_t DetectVehicleType(LegoPathActor* p_actor)
|
|
{
|
|
static const struct {
|
|
const char* className;
|
|
int8_t vehicleType;
|
|
} vehicleMap[] = {
|
|
{"Helicopter", VEHICLE_HELICOPTER},
|
|
{"Jetski", VEHICLE_JETSKI},
|
|
{"DuneBuggy", VEHICLE_DUNEBUGGY},
|
|
{"Bike", VEHICLE_BIKE},
|
|
{"SkateBoard", VEHICLE_SKATEBOARD},
|
|
{"Motorcycle", VEHICLE_MOTOCYCLE},
|
|
{"TowTrack", VEHICLE_TOWTRACK},
|
|
{"Ambulance", VEHICLE_AMBULANCE},
|
|
};
|
|
|
|
if (!p_actor) {
|
|
return VEHICLE_NONE;
|
|
}
|
|
|
|
for (const auto& entry : vehicleMap) {
|
|
if (p_actor->IsA(entry.className)) {
|
|
return entry.vehicleType;
|
|
}
|
|
}
|
|
return VEHICLE_NONE;
|
|
}
|
|
|
|
} // namespace Common
|
|
} // namespace Extensions
|