mirror of https://github.com/AxioDL/metaforce.git
54 lines
1.9 KiB
C++
54 lines
1.9 KiB
C++
#include "CMagdolite.hpp"
|
|
|
|
namespace urde::MP1 {
|
|
|
|
CMagdolite::CMagdoliteData::CMagdoliteData(CInputStream& in)
|
|
: x0_propertyCount(in.readUint32Big())
|
|
, x4_(in.readUint32Big())
|
|
, x8_(in)
|
|
, xc_(in.readUint32Big())
|
|
, x10_(in.readFloatBig())
|
|
, x18_(in.readFloatBig())
|
|
, x1c_(in.readFloatBig()) {}
|
|
|
|
CMagdolite::CMagdolite(TUniqueId uid, std::string_view name, const CEntityInfo& info, const zeus::CTransform& xf,
|
|
CModelData&& mData, const CPatternedInfo& pInfo, const CActorParameters& actParms, float f1,
|
|
float f2, const CDamageInfo& dInfo1, const CDamageInfo& dInfo2,
|
|
const CDamageVulnerability& dVuln1, const CDamageVulnerability& dVuln2, CAssetId modelId,
|
|
CAssetId skinId, float f3, float f4, float f5, float f6,
|
|
const CMagdolite::CMagdoliteData& magData, float f7, float f8, float f9)
|
|
: CPatterned(ECharacter::Magdolite, uid, name, EFlavorType::Zero, info, xf, std::move(mData), pInfo,
|
|
EMovementType::Flyer, EColliderType::One, EBodyType::BiPedal, actParms, EKnockBackVariant::Large)
|
|
, x568_(f4)
|
|
, x56c_(f5)
|
|
, x570_(f6)
|
|
, x574_(f3)
|
|
, x578_(std::cos(zeus::degToRad(f2)))
|
|
, x57c_(f1)
|
|
, x584_boneTracker(*GetModelData()->GetAnimationData(), "head"sv, zeus::degToRad(f1), zeus::degToRad(90.f),
|
|
EBoneTrackingFlags::ParentIk) {
|
|
|
|
}
|
|
|
|
void CMagdolite::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) {
|
|
|
|
switch (msg) {
|
|
case EScriptObjectMessage::Damage:
|
|
case EScriptObjectMessage::InvulnDamage:
|
|
/* TODO Implement */
|
|
return;
|
|
case EScriptObjectMessage::Registered:
|
|
x450_bodyController->Activate(mgr);
|
|
RemoveMaterial(EMaterialTypes::Solid, mgr);
|
|
AddMaterial(EMaterialTypes::NonSolidDamageable, mgr);
|
|
x584_boneTracker.SetActive(false);
|
|
CreateShadow(false);
|
|
/* TODO Finish */
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
CPatterned::AcceptScriptMsg(msg, uid, mgr);
|
|
}
|
|
} // namespace urde::MP1
|