Update ScriptObject DNAs to match known values

This commit is contained in:
Phillip Stephens 2019-07-19 01:30:11 -07:00
parent cdf9545de4
commit 1a9ca77603
39 changed files with 245 additions and 238 deletions

View File

@ -1,5 +1,8 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<MarkdownNavigatorCodeStyleSettings>
<option name="RIGHT_MARGIN" value="72" />
</MarkdownNavigatorCodeStyleSettings>
<Objective-C>
<option name="INDENT_NAMESPACE_MEMBERS" value="0" />
<option name="INDENT_C_STRUCT_MEMBERS" value="2" />

View File

@ -12,6 +12,6 @@ struct AIJumpPoint : IScriptObject {
Value<atVec3f> location;
Value<atVec3f> orientation;
Value<bool> active;
Value<float> unknown1;
Value<float> apex;
};
} // namespace DataSpec::DNAMP1

View File

@ -9,11 +9,11 @@ struct AIKeyframe : IScriptObject {
AT_DECL_DNA_YAML
AT_DECL_DNAV
String<-1> name;
Value<atUint32> unknown1;
Value<bool> unknown2;
Value<float> unknown3;
Value<bool> unknown4;
Value<atUint32> unknown5;
Value<float> unknown6;
Value<atUint32> animationId;
Value<bool> looping;
Value<float> lifetime;
Value<bool> active;
Value<atUint32> fadeOut;
Value<float> totalPlayback;
};
} // namespace DataSpec::DNAMP1

View File

@ -12,10 +12,10 @@ struct ActorContraption : IScriptObject {
Value<atVec3f> location;
Value<atVec3f> orientation;
Value<atVec3f> scale;
Value<atVec3f> unknown1;
Value<atVec3f> scanOffset;
Value<float> unknown2;
Value<float> unknown3;
Value<atVec3f> collisionExtent;
Value<atVec3f> collisionOrigin;
Value<float> mass;
Value<float> zMomentum;
HealthInfo healthInfo;
DamageVulnerability damageVulnerability;
AnimationParameters animationParameters;

View File

@ -11,8 +11,8 @@ struct ActorRotate : IScriptObject {
String<-1> name;
Value<atVec3f> rotationOffset;
Value<float> timeScale;
Value<bool> unknown1;
Value<bool> unknown2;
Value<bool> updateActors;
Value<bool> updateOnCreation;
Value<bool> active;
};
} // namespace DataSpec::DNAMP1

View File

@ -10,15 +10,15 @@ struct AreaAttributes : IScriptObject {
AT_DECL_DNAV
enum class EWeatherType : atUint32 { None, Snow, Rain };
Value<atUint32> unknown1;
Value<atUint32> load; /* 0 causes the loader to bail and return null */
Value<bool> skyboxEnabled;
Value<EWeatherType> weather;
Value<float> unknown2;
Value<float> unknown3;
Value<float> unknown4;
Value<float> unknown5;
Value<float> envFxDensity;
Value<float> thermalHeat;
Value<float> xrayFogDistance;
Value<float> worldLightingLevel;
UniqueID32 skybox;
Value<atUint32> unknown6;
Value<atUint32> phazonType;
void gatherDependencies(std::vector<hecl::ProjectPath>& pathsOut, std::vector<hecl::ProjectPath>& lazyOut) const {
g_curSpec->flattenDependencies(skybox, pathsOut);

View File

@ -17,11 +17,11 @@ struct AtomicAlpha : IScriptObject {
UniqueID32 wpsc;
UniqueID32 model;
DamageInfo damageInfo;
Value<float> unknown1;
Value<float> unknown2;
Value<float> unknown3;
Value<bool> unknown4;
Value<bool> unknown5;
Value<float> bombDropDelay;
Value<float> bombReappearDelay;
Value<float> bombReappearTime;
Value<bool> invisible;
Value<bool> applyBeamAttraction;
void addCMDLRigPairs(PAKRouter<PAKBridge>& pakRouter, CharacterAssociations<UniqueID32>& charAssoc) const {
actorParameters.addCMDLRigPairs(pakRouter, charAssoc, patternedInfo.animationParameters);

View File

@ -11,11 +11,11 @@ struct BallTrigger : IScriptObject {
String<-1> name;
Value<atVec3f> location;
Value<atVec3f> volume;
Value<bool> unknown1;
Value<float> unknown2;
Value<float> unknown3;
Value<float> unknown4;
Value<atVec3f> unknown5;
Value<bool> unknown6;
Value<bool> active;
Value<float> force;
Value<float> minAngle;
Value<float> maxDistance;
Value<atVec3f> forceAngle;
Value<bool> stopPlayer;
};
} // namespace DataSpec::DNAMP1

View File

@ -13,15 +13,15 @@ struct Camera : IScriptObject {
Value<atVec3f> orientation;
Value<bool> active;
Value<float> shotDuration;
Value<bool> unknown3;
Value<bool> unknown4;
Value<bool> unknown5;
Value<bool> unknown6;
Value<bool> unknown7;
Value<bool> lookAtPlayer;
Value<bool> outOfPlayerEye;
Value<bool> intoPlayerEye;
Value<bool> drawPlayer;
Value<bool> disableInput;
Value<bool> unknown9;
Value<bool> unknown;
Value<bool> finishCineSkip;
Value<float> fov;
Value<bool> unknown11;
Value<bool> unknown12;
Value<bool> checkFailsafe;
Value<bool> disableOutOfInto;
};
} // namespace DataSpec::DNAMP1

View File

@ -12,9 +12,9 @@ struct CameraPitchVolume : IScriptObject {
Value<atVec3f> location;
Value<atVec3f> orientation;
Value<atVec3f> volume;
Value<bool> unknown1;
Value<float> unknown2;
Value<float> unknown3;
Value<float> unknown4;
Value<bool> active;
Value<float> upPitch;
Value<float> downPitch;
Value<float> scale;
};
} // namespace DataSpec::DNAMP1

View File

@ -12,7 +12,7 @@ struct CameraWaypoint : IScriptObject {
Value<atVec3f> location;
Value<atVec3f> orientation;
Value<bool> active;
Value<float> unknown2;
Value<float> hFov;
Value<atUint32> unknown3;
};
} // namespace DataSpec::DNAMP1

View File

@ -9,9 +9,9 @@ struct Counter : IScriptObject {
AT_DECL_DNA_YAML
AT_DECL_DNAV
String<-1> name;
Value<atUint32> startValue; // needs verification
Value<atUint32> initial;
Value<atUint32> maxValue;
Value<bool> unknown1;
Value<bool> unknown2;
Value<bool> autoReset;
Value<bool> active;
};
} // namespace DataSpec::DNAMP1

View File

@ -11,11 +11,11 @@ struct CoverPoint : IScriptObject {
String<-1> name;
Value<atVec3f> location;
Value<atVec3f> orientation;
Value<bool> unknown1;
Value<atUint32> unknown2;
Value<bool> unknown3;
Value<float> unknown4;
Value<float> unknown5;
Value<float> unknown6;
Value<bool> active;
Value<atUint32> flags;
Value<bool> crouch;
Value<float> horizontalAngle;
Value<float> verticleAngle;
Value<float> coverTime;
};
} // namespace DataSpec::DNAMP1

View File

@ -9,7 +9,7 @@ struct DockAreaChange : IScriptObject {
AT_DECL_DNA_YAML
AT_DECL_DNAV
String<-1> name;
Value<atUint32> unknown1;
Value<bool> unknown2;
Value<atUint32> dockReference;
Value<bool> active;
};
} // namespace DataSpec::DNAMP1

View File

@ -11,13 +11,13 @@ struct ElectroMagneticPulse : IScriptObject {
String<-1> name;
Value<atVec3f> location;
Value<atVec3f> orientation;
Value<bool> unknown1;
Value<float> unknown2;
Value<float> unknown3;
Value<float> unknown4;
Value<float> unknown5;
Value<bool> active;
Value<float> initialRadius;
Value<float> finalRadius;
Value<float> duration;
Value<float> interferenceDur;
Value<float> unknown6;
Value<float> unknown7;
Value<float> interferenceMag;
Value<float> unknown8;
UniqueID32 particle;

View File

@ -9,8 +9,8 @@ struct EnvFxDensityController : IScriptObject {
AT_DECL_DNA_YAML
AT_DECL_DNAV
String<-1> name;
Value<bool> unknown1;
Value<float> unknown2;
Value<atUint32> unknown3;
Value<bool> active;
Value<float> density;
Value<atUint32> maxDensityDeltaSpeed;
};
} // namespace DataSpec::DNAMP1

View File

@ -15,9 +15,9 @@ struct FlickerBat : IScriptObject {
Value<atVec3f> scale;
PatternedInfo patternedInfo;
ActorParameters actorParameters;
Value<bool> unknown2;
Value<bool> unknown3;
Value<bool> unknown4;
Value<bool> collider;
Value<bool> startsHidden;
Value<bool> enableLineOfSight;
void addCMDLRigPairs(PAKRouter<PAKBridge>& pakRouter, CharacterAssociations<UniqueID32>& charAssoc) const {
actorParameters.addCMDLRigPairs(pakRouter, charAssoc, patternedInfo.animationParameters);

View File

@ -11,9 +11,9 @@ struct FogVolume : IScriptObject {
String<-1> name;
Value<atVec3f> location;
Value<atVec3f> volume;
Value<float> unknown1;
Value<float> flickerSpeed;
Value<float> unknown2;
Value<atVec4f> unkonwn3;
Value<bool> unknown4;
Value<atVec4f> fogColor;
Value<bool> active;
};
} // namespace DataSpec::DNAMP1

View File

@ -14,16 +14,16 @@ struct Geemer : IScriptObject {
Value<atVec3f> scale;
PatternedInfo patternedInfo;
ActorParameters actorParameters;
Value<float> unknown1;
Value<float> advanceWpRadius;
Value<float> unknown2;
Value<float> unknown3;
Value<float> alignAngVel;
Value<float> unknown4;
Value<float> unknown5;
Value<float> unknown6;
Value<float> unknown7;
Value<atUint32> unknown8;
Value<atUint32> unknown9;
Value<atUint32> unknown10;
Value<float> playerObstructionMinDist;
Value<float> haltDelay;
Value<float> forwardMoveWeight;
Value<atUint32> haltSfx;
Value<atUint32> getUpSfx;
Value<atUint32> crouchSfx;
void addCMDLRigPairs(PAKRouter<PAKBridge>& pakRouter, CharacterAssociations<UniqueID32>& charAssoc) const {
actorParameters.addCMDLRigPairs(pakRouter, charAssoc, patternedInfo.animationParameters);

View File

@ -14,14 +14,14 @@ struct IceZoomer : IScriptObject {
Value<atVec3f> scale;
PatternedInfo patternedInfo;
ActorParameters actorParameters;
Value<float> unknown1;
Value<float> advanceWpRadius;
Value<float> unknown2;
Value<float> unknown3;
Value<float> alignAngleVel;
Value<float> unknown4;
Value<float> unknown5;
Value<float> unknown6;
Value<atUint32> unknown7;
Value<atUint32> unknown8;
Value<float> playerObstructionMinDist;
Value<float> moveForwardWeight;
UniqueID32 modelRes;
UniqueID32 skinRes;
DamageVulnerability damageVulnerabilty;
Value<float> unknown9;
@ -37,6 +37,8 @@ struct IceZoomer : IScriptObject {
void gatherDependencies(std::vector<hecl::ProjectPath>& pathsOut, std::vector<hecl::ProjectPath>& lazyOut) const {
patternedInfo.depIDs(pathsOut);
actorParameters.depIDs(pathsOut, lazyOut);
g_curSpec->flattenDependencies(modelRes, pathsOut);
g_curSpec->flattenDependencies(skinRes, pathsOut);
}
void gatherScans(std::vector<Scan>& scansOut) const { actorParameters.scanIDs(scansOut); }

View File

@ -15,11 +15,11 @@ struct MetareeAlpha : IScriptObject {
PatternedInfo patternedInfo;
ActorParameters actorParameters;
DamageInfo damageInfo;
Value<float> unknown1;
Value<atVec3f> unknown2;
Value<float> unknown3;
Value<float> unknown4;
Value<float> unknown5;
Value<float> dropHeight;
Value<atVec3f> offset;
Value<float> attackSpeed;
Value<float> delay;
Value<float> unknown5; // Appears to be unused
void addCMDLRigPairs(PAKRouter<PAKBridge>& pakRouter, CharacterAssociations<UniqueID32>& charAssoc) const {
actorParameters.addCMDLRigPairs(pakRouter, charAssoc, patternedInfo.animationParameters);

View File

@ -11,8 +11,8 @@ struct PlayerHint : IScriptObject {
String<-1> name;
Value<atVec3f> location;
Value<atVec3f> orientation;
Value<bool> unknown1;
Value<bool> active;
PlayerHintParameters playerHintParameters;
Value<atUint32> unknown2;
Value<atUint32> priority;
};
} // namespace DataSpec::DNAMP1

View File

@ -9,11 +9,11 @@ struct PlayerStateChange : IScriptObject {
AT_DECL_DNA_YAML
AT_DECL_DNAV
String<-1> name;
Value<bool> unknown;
Value<bool> active;
Value<atUint32> item;
Value<atUint32> unknown2;
Value<atUint32> unknown3;
Value<atUint32> unknown4;
Value<atUint32> unknown5;
Value<atUint32> itemCount;
Value<atUint32> itemCapacity;
Value<atUint32> control;
Value<atUint32> controlCommandOption;
};
} // namespace DataSpec::DNAMP1

View File

@ -11,9 +11,9 @@ struct PointOfInterest : IScriptObject {
String<-1> name;
Value<atVec3f> location;
Value<atVec3f> orientation;
Value<bool> unknown1;
Value<bool> active;
ScannableParameters scannableParameters;
Value<float> unknown2;
Value<float> pointSize;
void nameIDs(PAKRouter<PAKBridge>& pakRouter) const { scannableParameters.nameIDs(pakRouter, name + "_scanp"); }

View File

@ -11,6 +11,6 @@ struct Repulsor : IScriptObject {
String<-1> name;
Value<atVec3f> location;
Value<bool> active;
Value<float> unknown;
Value<float> radius;
};
} // namespace DataSpec::DNAMP1

View File

@ -10,7 +10,7 @@ struct Ripple : IScriptObject {
AT_DECL_DNAV
String<-1> name;
Value<atVec3f> location;
Value<bool> unknown1;
Value<float> unknown2;
Value<bool> active;
Value<float> mag;
};
} // namespace DataSpec::DNAMP1

View File

@ -14,11 +14,11 @@ struct SpankWeed : IScriptObject {
Value<atVec3f> scale;
PatternedInfo patternedInfo;
ActorParameters actorParameters;
Value<bool> unknown1;
Value<float> unknown2;
Value<float> unknown3;
Value<float> unknown4;
Value<float> unknown5;
Value<bool> unused;
Value<float> maxDetectionRange;
Value<float> maxHearingrange;
Value<float> maxSightRange;
Value<float> hideTime;
void addCMDLRigPairs(PAKRouter<PAKBridge>& pakRouter, CharacterAssociations<UniqueID32>& charAssoc) const {
actorParameters.addCMDLRigPairs(pakRouter, charAssoc, patternedInfo.animationParameters);

View File

@ -31,7 +31,7 @@ struct SpawnPoint : IScriptObject {
Value<atUint32> combatVisor;
Value<atUint32> boostBall;
Value<atUint32> spiderBall;
Value<atUint32> powerSuit; // verification needed
Value<atUint32> powerSuit;
Value<atUint32> gravitySuit;
Value<atUint32> variaSuit;
Value<atUint32> phazonSuit;

View File

@ -11,7 +11,7 @@ struct SpiderBallWaypoint : IScriptObject {
String<-1> name;
Value<atVec3f> location;
Value<atVec3f> orientation;
Value<bool> unknown1;
Value<bool> active;
Value<atUint32> unknown2;
};
} // namespace DataSpec::DNAMP1

View File

@ -9,8 +9,8 @@ struct Switch : IScriptObject {
AT_DECL_DNA_YAML
AT_DECL_DNAV
String<-1> name;
Value<bool> unknown1;
Value<bool> unknown2;
Value<bool> unknown3;
Value<bool> active;
Value<bool> opened;
Value<bool> closeOnOpened;
};
} // namespace DataSpec::DNAMP1

View File

@ -6,26 +6,26 @@ template <class Op>
void WorldTeleporter::Enumerate(typename Op::StreamT& s) {
IScriptObject::Enumerate<Op>(s);
Do<Op>({"name"}, name, s);
Do<Op>({"unknown1"}, unknown1, s);
Do<Op>({"active"}, active, s);
Do<Op>({"mlvl"}, mlvl, s);
Do<Op>({"mrea"}, mrea, s);
Do<Op>({"animationParameters"}, animationParameters, s);
Do<Op>({"unknown2"}, unknown2, s);
Do<Op>({"model1"}, model1, s);
Do<Op>({"unknown3"}, unknown3, s);
Do<Op>({"model2"}, model2, s);
Do<Op>({"unknown4"}, unknown4, s);
Do<Op>({"unknown5"}, unknown5, s);
Do<Op>({"soundID"}, soundID, s);
Do<Op>({"unknown6"}, unknown6, s);
Do<Op>({"unknown7"}, unknown7, s);
Do<Op>({"unknown8"}, unknown8, s);
Do<Op>({"playerScale"}, playerScale, s);
Do<Op>({"platformModel"}, platformModel, s);
Do<Op>({"platformScale"}, platformScale, s);
Do<Op>({"blackgroundModel"}, backgroundModel, s);
Do<Op>({"backgroundScale"}, backgroundScale, s);
Do<Op>({"upElevator"}, upElevator, s);
Do<Op>({"elevatorSound"}, elevatorSound, s);
Do<Op>({"volume"}, volume, s);
Do<Op>({"panning"}, panning, s);
Do<Op>({"showText"}, showText, s);
Do<Op>({"font"}, font, s);
Do<Op>({"strg"}, strg, s);
Do<Op>({"unknown9"}, unknown9, s);
Do<Op>({"unknown10"}, unknown10, s);
Do<Op>({"unknown11"}, unknown11, s);
Do<Op>({"unknown12"}, unknown12, s);
Do<Op>({"fadeWhite"}, fadeWhite, s);
Do<Op>({"charFadeInTime"}, charFadeInTime, s);
Do<Op>({"charsPerSecond"}, charFadeInTime, s);
Do<Op>({"showDelay"}, showDelay, s);
if (propertyCount == 26) {
Do<Op>({"audioStream"}, audioStream, s);

View File

@ -10,26 +10,26 @@ struct WorldTeleporter : IScriptObject {
AT_DECL_EXPLICIT_DNA_YAML
AT_DECL_DNAV
String<-1> name;
Value<bool> unknown1;
Value<bool> active;
UniqueID32 mlvl;
UniqueID32 mrea;
AnimationParameters animationParameters;
Value<atVec3f> unknown2;
UniqueID32 model1;
Value<atVec3f> unknown3;
UniqueID32 model2;
Value<atVec3f> unknown4;
Value<bool> unknown5;
Value<atUint32> soundID; // needs verifcation
Value<atUint32> unknown6;
Value<atUint32> unknown7;
Value<bool> unknown8;
Value<atVec3f> playerScale;
UniqueID32 platformModel;
Value<atVec3f> platformScale;
UniqueID32 backgroundModel;
Value<atVec3f> backgroundScale;
Value<bool> upElevator;
Value<atUint32> elevatorSound; // needs verifcation
Value<atUint32> volume;
Value<atUint32> panning;
Value<bool> showText;
UniqueID32 font;
UniqueID32 strg;
Value<bool> unknown9;
Value<float> unknown10;
Value<float> unknown11;
Value<float> unknown12;
Value<bool> fadeWhite;
Value<float> charFadeInTime;
Value<float> charsPerSecond;
Value<float> showDelay;
/* Trilogy additions (property count 26) */
String<-1> audioStream;
@ -39,12 +39,12 @@ struct WorldTeleporter : IScriptObject {
Value<float> unknown16;
void nameIDs(PAKRouter<PAKBridge>& pakRouter) const {
if (model1) {
PAK::Entry* ent = (PAK::Entry*)pakRouter.lookupEntry(model1);
if (platformModel) {
PAK::Entry* ent = (PAK::Entry*)pakRouter.lookupEntry(platformModel);
ent->name = name + "_model1";
}
if (model2) {
PAK::Entry* ent = (PAK::Entry*)pakRouter.lookupEntry(model2);
if (backgroundModel) {
PAK::Entry* ent = (PAK::Entry*)pakRouter.lookupEntry(backgroundModel);
ent->name = name + "_model2";
}
if (strg) {
@ -54,8 +54,8 @@ struct WorldTeleporter : IScriptObject {
}
void gatherDependencies(std::vector<hecl::ProjectPath>& pathsOut, std::vector<hecl::ProjectPath>& lazyOut) const {
g_curSpec->flattenDependencies(model1, pathsOut);
g_curSpec->flattenDependencies(model2, pathsOut);
g_curSpec->flattenDependencies(platformModel, pathsOut);
g_curSpec->flattenDependencies(backgroundModel, pathsOut);
g_curSpec->flattenDependencies(strg, pathsOut);
}
};

View File

@ -51,7 +51,7 @@ PROJECT_BRIEF =
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
# the logo to the output directory.
PROJECT_LOGO = /home/antidote/Projects/urde/Editor/platforms/freedesktop/128x128/apps/urde.png
PROJECT_LOGO = ./Editor/platforms/freedesktop/128x128/apps/urde.png
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is

View File

@ -171,7 +171,7 @@ bool CFireFlea::CheckNearWater(const CStateManager& mgr, const zeus::CVector3f&
mgr.BuildNearList(nearList, GetTranslation(), dir, 2.f, CMaterialFilter::skPassEverything, nullptr);
for (TUniqueId id : nearList) {
if (TCastToConstPtr<CScriptWater> water = mgr.GetObjectById(id))
if (TCastToConstPtr<CScriptWater>(mgr.GetObjectById(id)))
return true;
}

View File

@ -10,15 +10,16 @@ namespace urde::MP1 {
CFlickerBat::CFlickerBat(TUniqueId uid, std::string_view name, CPatterned::EFlavorType flavor, const CEntityInfo& info,
const zeus::CTransform& xf, CModelData&& mData, const CPatternedInfo& pInfo,
EColliderType colType, bool b1, const CActorParameters& actParms, bool b2)
EColliderType colType, bool startsHidden, const CActorParameters& actParms,
bool enableLineOfSight)
: CPatterned(ECharacter::FlickerBat, uid, name, flavor, info, xf, std::move(mData), pInfo, EMovementType::Flyer,
colType, EBodyType::Pitchable, actParms, EKnockBackVariant::Small)
, x574_state(EFlickerBatState(b1))
, x574_state(EFlickerBatState(startsHidden))
, x580_24_wasInXray(false)
, x580_25_heardShot(false)
, x580_26_inLOS(false)
, x580_27_enableLOSCheck(b2) {
SetupPlayerCollision(b1);
, x580_27_enableLOSCheck(enableLineOfSight) {
SetupPlayerCollision(startsHidden);
x3d8_xDamageThreshold = 0.f;
x402_27_noXrayModel = false;
}

View File

@ -30,5 +30,6 @@ public:
void Think(float, CStateManager&);
void UpdateEntity(TUniqueId, CStateManager&);
bool IsPassive() const { return x44_25_isPassive; }
void SetIsPassive(bool b) { x44_25_isPassive = b; }
};
} // namespace urde

View File

@ -6,10 +6,10 @@
namespace urde {
CScriptAiJumpPoint::CScriptAiJumpPoint(TUniqueId uid, std::string_view name, const CEntityInfo& info,
zeus::CTransform& xf, bool active, float f1)
zeus::CTransform& xf, bool active, float apex)
: CActor(uid, active, name, info, xf, CModelData::CModelDataNull(), CMaterialList(EMaterialTypes::NoStepLogic),
CActorParameters::None(), kInvalidUniqueId)
, xe8_apex(f1)
, xe8_apex(apex)
, xec_touchBounds(xf.origin, xf.origin) {}
void CScriptAiJumpPoint::Accept(IVisitor& visitor) { visitor.Visit(this); }

View File

@ -12,13 +12,13 @@ const zeus::CVector3f CScriptCameraPitchVolume::skScaleFactor = zeus::CVector3f(
CScriptCameraPitchVolume::CScriptCameraPitchVolume(TUniqueId uid, bool active, std::string_view name,
const CEntityInfo& info, const zeus::CVector3f& scale,
const zeus::CTransform& xf, const zeus::CRelAngle& r1,
const zeus::CRelAngle& r2, float maxInterpDistance)
const zeus::CTransform& xf, const zeus::CRelAngle& upPitch,
const zeus::CRelAngle& downPitch, float maxInterpDistance)
: CActor(uid, active, name, info, xf, CModelData::CModelDataNull(), CMaterialList(EMaterialTypes::Trigger),
CActorParameters::None(), kInvalidUniqueId)
, xe8_obbox(xf, scale * skScaleFactor)
, x124_upPitch(r1)
, x128_downPitch(r2)
, x124_upPitch(upPitch)
, x128_downPitch(downPitch)
, x12c_scale(scale * skScaleFactor)
, x138_maxInterpDistance(maxInterpDistance) {}

View File

@ -560,12 +560,12 @@ CEntity* ScriptLoader::LoadCounter(CStateManager& mgr, CInputStream& in, int pro
std::string name = mgr.HashInstanceName(in);
u32 w1 = in.readUint32Big();
u32 w2 = in.readUint32Big();
bool b1 = in.readBool();
bool b2 = in.readBool();
u32 initial = in.readUint32Big();
u32 max = in.readUint32Big();
bool autoReset = in.readBool();
bool active = in.readBool();
return new CScriptCounter(mgr.AllocateUniqueId(), name, info, w1, w2, b1, b2);
return new CScriptCounter(mgr.AllocateUniqueId(), name, info, initial, max, autoReset, active);
}
CEntity* ScriptLoader::LoadEffect(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
@ -1557,9 +1557,9 @@ CEntity* ScriptLoader::LoadFlickerBat(CStateManager& mgr, CInputStream& in, int
CPatternedInfo pInfo(in, pair.second);
CActorParameters actParms = LoadActorParameters(in);
bool b1 = in.readBool();
bool b2 = in.readBool();
bool b3 = in.readBool();
bool collider = in.readBool();
bool excludePlayer = in.readBool();
bool enableLineOfSight = in.readBool();
if (g_ResFactory->GetResourceTypeById(pInfo.GetAnimationParameters().GetACSFile()) != SBIG('ANCS'))
return nullptr;
@ -1567,7 +1567,7 @@ CEntity* ScriptLoader::LoadFlickerBat(CStateManager& mgr, CInputStream& in, int
CModelData mData(CAnimRes(pInfo.GetAnimationParameters().GetACSFile(), pInfo.GetAnimationParameters().GetCharacter(),
scale, pInfo.GetAnimationParameters().GetInitialAnimation(), true));
return new MP1::CFlickerBat(mgr.AllocateUniqueId(), name, flavor, info, xf, std::move(mData), pInfo,
CPatterned::EColliderType(b1), b2, actParms, b3);
CPatterned::EColliderType(collider), excludePlayer, actParms, enableLineOfSight);
}
CEntity* ScriptLoader::LoadPathCamera(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
@ -1831,8 +1831,8 @@ CEntity* ScriptLoader::LoadSpecialFunction(CStateManager& mgr, CInputStream& in,
return nullptr;
return new CScriptSpecialFunction(mgr.AllocateUniqueId(), head.x0_name, info, head.x10_transform, specialFunction,
str, f1, f2, f3, f4, zeus::skZero3f, zeus::skBlack, active1,
CDamageInfo(), w2, w3, w4, w5, w6, w7);
str, f1, f2, f3, f4, zeus::skZero3f, zeus::skBlack, active1, CDamageInfo(), w2, w3,
w4, w5, w6, w7);
}
CEntity* ScriptLoader::LoadSpankWeed(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
@ -1846,10 +1846,10 @@ CEntity* ScriptLoader::LoadSpankWeed(CStateManager& mgr, CInputStream& in, int p
CPatternedInfo pInfo(in, pair.second);
CActorParameters actParms = LoadActorParameters(in);
in.readBool();
float f1 = in.readFloatBig();
float f2 = in.readFloatBig();
float f3 = in.readFloatBig();
float f4 = in.readFloatBig();
float maxDetectionRange = in.readFloatBig();
float maxHearingRange = in.readFloatBig();
float maxSightRange = in.readFloatBig();
float hideTime = in.readFloatBig();
const CAnimationParameters& animParms = pInfo.GetAnimationParameters();
if (!animParms.GetACSFile().IsValid())
@ -1858,7 +1858,7 @@ CEntity* ScriptLoader::LoadSpankWeed(CStateManager& mgr, CInputStream& in, int p
CModelData mData(CAnimRes(animParms.GetACSFile(), animParms.GetCharacter(), aHead.x40_scale,
animParms.GetInitialAnimation(), true));
return new MP1::CSpankWeed(mgr.AllocateUniqueId(), aHead.x0_name, info, aHead.x10_transform, std::move(mData),
actParms, pInfo, f1, f2, f3, f4);
actParms, pInfo, maxDetectionRange, maxHearingRange, maxSightRange, hideTime);
}
CEntity* ScriptLoader::LoadParasite(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
@ -1915,10 +1915,11 @@ CEntity* ScriptLoader::LoadPlayerHint(CStateManager& mgr, CInputStream& in, int
SActorHead aHead = LoadActorHead(in, mgr);
bool active = in.readBool();
u32 w2 = LoadParameterFlags(in);
u32 w1 = in.readUint32Big();
u32 overrideFlags = LoadParameterFlags(in);
u32 priority = in.readUint32Big();
return new CScriptPlayerHint(mgr.AllocateUniqueId(), aHead.x0_name, info, aHead.x10_transform, active, w1, w2);
return new CScriptPlayerHint(mgr.AllocateUniqueId(), aHead.x0_name, info, aHead.x10_transform, active, priority,
overrideFlags);
}
CEntity* ScriptLoader::LoadRipper(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
@ -1938,6 +1939,10 @@ CEntity* ScriptLoader::LoadPickupGenerator(CStateManager& mgr, CInputStream& in,
}
CEntity* ScriptLoader::LoadAIKeyframe(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
if (CScriptActorKeyframe* kf = static_cast<CScriptActorKeyframe*>(LoadActorKeyframe(mgr, in, propCount, info))) {
kf->SetIsPassive(true);
return kf;
}
return nullptr;
}
@ -1949,10 +1954,10 @@ CEntity* ScriptLoader::LoadPointOfInterest(CStateManager& mgr, CInputStream& in,
SActorHead aHead = LoadActorHead(in, mgr);
bool active = in.readBool();
CScannableParameters sParms = LoadScannableParameters(in);
float f1 = in.readFloatBig();
float pointSize = in.readFloatBig();
return new CScriptPointOfInterest(mgr.AllocateUniqueId(), aHead.x0_name, info, aHead.x10_transform, active, sParms,
f1);
pointSize);
}
CEntity* ScriptLoader::LoadDrone(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
@ -2030,7 +2035,7 @@ CEntity* ScriptLoader::LoadDebrisExtended(CStateManager& mgr, CInputStream& in,
CScriptDebris::EOrientationType particle2Or = CScriptDebris::EOrientationType(in.readUint32Big());
CAssetId particle3 = in.readUint32Big();
/*zeus::CVector3f particle3Scale =*/ zeus::CVector3f::ReadBig(in); /* Not actually used, go figure */
/*zeus::CVector3f particle3Scale =*/zeus::CVector3f::ReadBig(in); /* Not actually used, go figure */
CScriptDebris::EOrientationType particle3Or = CScriptDebris::EOrientationType(in.readUint32Big());
bool solid = in.readBool();
@ -2275,8 +2280,8 @@ CEntity* ScriptLoader::LoadFishCloud(CStateManager& mgr, CInputStream& in, int p
bool hotInThermal = in.readBool();
CModelData mData(CStaticRes(model, zeus::skOne3f));
CAnimRes animRes(animParms.GetACSFile(), animParms.GetCharacter(), zeus::skOne3f,
animParms.GetInitialAnimation(), true);
CAnimRes animRes(animParms.GetACSFile(), animParms.GetCharacter(), zeus::skOne3f, animParms.GetInitialAnimation(),
true);
return new CFishCloud(mgr.AllocateUniqueId(), active, aHead.x0_name, info, aHead.x40_scale, aHead.x10_transform,
std::move(mData), animRes, numBoids, speed, separationRadius, cohesionMagnitude,
alignmentWeight, separationMagnitude, weaponRepelMagnitude, playerRepelMagnitude,
@ -2526,15 +2531,13 @@ CEntity* ScriptLoader::LoadWallCrawlerSwarm(CStateManager& mgr, CInputStream& in
u32 launchSfx = in.readUint32Big();
u32 scatterSfx = in.readUint32Big();
return new CWallCrawlerSwarm(mgr.AllocateUniqueId(), active, aHead.x0_name, info, aHead.x40_scale,
aHead.x10_transform, flavor,
CAnimRes(actor, charIdx, zeus::CVector3f(1.5f), defaultAnim, true),
launchAnim, attractAnim, part1, part2, part3, part4, crabDamage, scarabExplodeDamage,
crabDamageCooldown, boidRadius, touchRadius, playerTouchRadius, numBoids,
maxCreatedBoids, animPlaybackSpeed, separationRadius, cohesionMagnitude, alignmentWeight,
separationMagnitude, moveToWaypointWeight, attractionMagnitude, attractionRadius,
boidGenRate, maxLaunches, scarabBoxMargin, scarabScatterXYVelocity, scarabTimeToExplode,
hInfo, dVulns, launchSfx, scatterSfx, aParams);
return new CWallCrawlerSwarm(
mgr.AllocateUniqueId(), active, aHead.x0_name, info, aHead.x40_scale, aHead.x10_transform, flavor,
CAnimRes(actor, charIdx, zeus::CVector3f(1.5f), defaultAnim, true), launchAnim, attractAnim, part1, part2, part3,
part4, crabDamage, scarabExplodeDamage, crabDamageCooldown, boidRadius, touchRadius, playerTouchRadius, numBoids,
maxCreatedBoids, animPlaybackSpeed, separationRadius, cohesionMagnitude, alignmentWeight, separationMagnitude,
moveToWaypointWeight, attractionMagnitude, attractionRadius, boidGenRate, maxLaunches, scarabBoxMargin,
scarabScatterXYVelocity, scarabTimeToExplode, hInfo, dVulns, launchSfx, scatterSfx, aParams);
}
CEntity* ScriptLoader::LoadAiJumpPoint(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
@ -2543,9 +2546,9 @@ CEntity* ScriptLoader::LoadAiJumpPoint(CStateManager& mgr, CInputStream& in, int
SActorHead aHead = LoadActorHead(in, mgr);
bool active = in.readBool();
float f1 = in.readFloat();
float apex = in.readFloat();
return new CScriptAiJumpPoint(mgr.AllocateUniqueId(), aHead.x0_name, info, aHead.x10_transform, active, f1);
return new CScriptAiJumpPoint(mgr.AllocateUniqueId(), aHead.x0_name, info, aHead.x10_transform, active, apex);
}
CEntity* ScriptLoader::LoadFlaahgraTentacle(CStateManager& mgr, CInputStream& in, int propCount,
@ -2810,10 +2813,9 @@ CEntity* ScriptLoader::LoadRadialDamage(CStateManager& mgr, CInputStream& in, in
float radius = in.readFloatBig();
zeus::CTransform xf = ConvertEditorEulerToTransform4f(zeus::skZero3f, center);
return new CScriptSpecialFunction(mgr.AllocateUniqueId(), name, info, xf,
CScriptSpecialFunction::ESpecialFunction::RadialDamage, "", radius, 0.f, 0.f, 0.f,
zeus::skZero3f, zeus::skBlack, active, dInfo, -1, -1,
CPlayerState::EItemType::Invalid, -1, -1, -1);
return new CScriptSpecialFunction(
mgr.AllocateUniqueId(), name, info, xf, CScriptSpecialFunction::ESpecialFunction::RadialDamage, "", radius, 0.f,
0.f, 0.f, zeus::skZero3f, zeus::skBlack, active, dInfo, -1, -1, CPlayerState::EItemType::Invalid, -1, -1, -1);
}
CEntity* ScriptLoader::LoadCameraPitchVolume(CStateManager& mgr, CInputStream& in, int propCount,
@ -2823,12 +2825,12 @@ CEntity* ScriptLoader::LoadCameraPitchVolume(CStateManager& mgr, CInputStream& i
SScaledActorHead aHead = LoadScaledActorHead(in, mgr);
bool active = in.readBool();
zeus::CRelAngle f1 = zeus::CRelAngle::FromDegrees(in.readFloatBig());
zeus::CRelAngle f2 = zeus::CRelAngle::FromDegrees(in.readFloatBig());
float f3 = in.readFloatBig();
zeus::CRelAngle upPitch = zeus::CRelAngle::FromDegrees(in.readFloatBig());
zeus::CRelAngle downPitch = zeus::CRelAngle::FromDegrees(in.readFloatBig());
float scale = in.readFloatBig();
return new CScriptCameraPitchVolume(mgr.AllocateUniqueId(), active, aHead.x0_name, info, aHead.x40_scale,
aHead.x10_transform, f1, f2, f3);
aHead.x10_transform, upPitch, downPitch, scale);
}
CEntity* ScriptLoader::LoadEnvFxDensityController(CStateManager& mgr, CInputStream& in, int propCount,
@ -2839,12 +2841,12 @@ CEntity* ScriptLoader::LoadEnvFxDensityController(CStateManager& mgr, CInputStre
std::string name = mgr.HashInstanceName(in);
bool active = in.readBool();
float density = in.readFloatBig();
u32 w1 = in.readUint32Big();
u32 maxDensityDeltaSpeed = in.readUint32Big();
return new CScriptSpecialFunction(mgr.AllocateUniqueId(), name, info, zeus::CTransform(),
CScriptSpecialFunction::ESpecialFunction::EnvFxDensityController, "", density, w1,
0.f, 0.f, zeus::skZero3f, zeus::skBlack, active, CDamageInfo(), -1,
-1, CPlayerState::EItemType::Invalid, -1, -1, -1);
CScriptSpecialFunction::ESpecialFunction::EnvFxDensityController, "", density,
maxDensityDeltaSpeed, 0.f, 0.f, zeus::skZero3f, zeus::skBlack, active,
CDamageInfo(), -1, -1, CPlayerState::EItemType::Invalid, -1, -1, -1);
}
CEntity* ScriptLoader::LoadMagdolite(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
@ -2993,25 +2995,26 @@ CEntity* ScriptLoader::LoadGeemer(CStateManager& mgr, CInputStream& in, int prop
if (pInfo.GetAnimationParameters().GetACSFile() == CAssetId())
return nullptr;
float f1 = in.readFloatBig();
float advanceWpRadius = in.readFloatBig();
float f2 = in.readFloatBig();
float f3 = in.readFloatBig();
float alignAngVel = in.readFloatBig();
float f4 = in.readFloatBig();
float f5 = in.readFloatBig();
float f6 = in.readFloatBig();
float f7 = in.readFloatBig();
u16 sId1 = in.readUint32Big() & 0xFFFF;
u16 sId2 = in.readUint32Big() & 0xFFFF;
u16 sId3 = in.readUint32Big() & 0xFFFF;
float playerObstructionMinDist = in.readFloatBig();
float haltDelay = in.readFloatBig();
float forwardMoveWeight = in.readFloatBig();
u16 haltSfx = in.readUint32Big() & 0xFFFF;
u16 getUpSfx = in.readUint32Big() & 0xFFFF;
u16 crouchSfx = in.readUint32Big() & 0xFFFF;
CModelData mData(CAnimRes(pInfo.GetAnimationParameters().GetACSFile(), pInfo.GetAnimationParameters().GetCharacter(),
actHead.x40_scale, pInfo.GetAnimationParameters().GetInitialAnimation(), true));
return new MP1::CParasite(mgr.AllocateUniqueId(), actHead.x0_name, CPatterned::EFlavorType::Zero, info,
actHead.x10_transform, std::move(mData), pInfo, EBodyType::WallWalker, 0.f, f1, f2, f3, f4,
0.2f, 0.4f, 0.f, 0.f, 0.f, 0.f, 0.f, 1.f, f7, 0.f, 0.f, f5, f6, false,
CWallWalker::EWalkerType::Geemer, CDamageVulnerability::NormalVulnerabilty(), CDamageInfo(),
sId1, sId2, sId3, -1, -1, 0.f, actParms);
actHead.x10_transform, std::move(mData), pInfo, EBodyType::WallWalker, 0.f, advanceWpRadius,
f2, alignAngVel, f4, 0.2f, 0.4f, 0.f, 0.f, 0.f, 0.f, 0.f, 1.f, forwardMoveWeight, 0.f, 0.f,
playerObstructionMinDist, haltDelay, false, CWallWalker::EWalkerType::Geemer,
CDamageVulnerability::NormalVulnerabilty(), CDamageInfo(), haltSfx, getUpSfx, crouchSfx, -1,
-1, 0.f, actParms);
}
CEntity* ScriptLoader::LoadSpindleCamera(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
@ -3051,13 +3054,12 @@ CEntity* ScriptLoader::LoadSpindleCamera(CStateManager& mgr, CInputStream& in, i
SSpindleProperty recoverClampedAzimuthFromHintDir(in);
recoverClampedAzimuthFromHintDir.FixupAngles();
return new CScriptSpindleCamera(mgr.AllocateUniqueId(), aHead.x0_name, info, aHead.x10_transform, active, flags,
hintToCamDistMin, hintToCamDistMax, hintToCamVOffMin, hintToCamVOffMax,
targetHintToCamDeltaAngleVel, deltaAngleScaleWithCamDist, hintToCamDist,
distOffsetFromBallDist, hintBallToCamAzimuth, unused, maxHintBallToCamAzimuth,
camLookRelAzimuth, lookPosZOffset, camPosZOffset, clampedAzimuthFromHintDir,
dampingAzimuthSpeed, targetHintToCamDeltaAngleVelRange, deleteHintBallDist,
recoverClampedAzimuthFromHintDir);
return new CScriptSpindleCamera(
mgr.AllocateUniqueId(), aHead.x0_name, info, aHead.x10_transform, active, flags, hintToCamDistMin,
hintToCamDistMax, hintToCamVOffMin, hintToCamVOffMax, targetHintToCamDeltaAngleVel, deltaAngleScaleWithCamDist,
hintToCamDist, distOffsetFromBallDist, hintBallToCamAzimuth, unused, maxHintBallToCamAzimuth, camLookRelAzimuth,
lookPosZOffset, camPosZOffset, clampedAzimuthFromHintDir, dampingAzimuthSpeed, targetHintToCamDeltaAngleVelRange,
deleteHintBallDist, recoverClampedAzimuthFromHintDir);
}
CEntity* ScriptLoader::LoadAtomicAlpha(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
@ -3102,8 +3104,8 @@ CEntity* ScriptLoader::LoadCameraHintTrigger(CStateManager& mgr, CInputStream& i
zeus::CTransform xfRot = aHead.x10_transform.getRotation();
if (xfRot == zeus::CTransform())
return new CScriptTrigger(mgr.AllocateUniqueId(), aHead.x0_name, info, aHead.x10_transform.origin,
zeus::CAABox(-scale, scale), CDamageInfo(), zeus::skZero3f,
ETriggerFlags::DetectPlayer, active, deactivateOnEnter, deactivateOnExit);
zeus::CAABox(-scale, scale), CDamageInfo(), zeus::skZero3f, ETriggerFlags::DetectPlayer,
active, deactivateOnEnter, deactivateOnExit);
return new CScriptCameraHintTrigger(mgr.AllocateUniqueId(), active, aHead.x0_name, info, scale, aHead.x10_transform,
deactivateOnEnter, deactivateOnExit);
@ -3123,8 +3125,8 @@ CEntity* ScriptLoader::LoadRumbleEffect(CStateManager& mgr, CInputStream& in, in
return new CScriptSpecialFunction(
mgr.AllocateUniqueId(), name, info, ConvertEditorEulerToTransform4f(zeus::skZero3f, position),
CScriptSpecialFunction::ESpecialFunction::RumbleEffect, "", f1, w1, pFlags, 0.f, zeus::skZero3f,
zeus::skBlack, active, {}, {}, {}, CPlayerState::EItemType::Invalid, -1, -1, -1);
CScriptSpecialFunction::ESpecialFunction::RumbleEffect, "", f1, w1, pFlags, 0.f, zeus::skZero3f, zeus::skBlack,
active, {}, {}, {}, CPlayerState::EItemType::Invalid, -1, -1, -1);
}
CEntity* ScriptLoader::LoadAmbientAI(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
@ -3218,9 +3220,8 @@ CEntity* ScriptLoader::LoadIceZoomer(CStateManager& mgr, CInputStream& in, int p
CDamageVulnerability dVuln(in);
float iceZoomerJointHP = in.readFloatBig();
CModelData mData(
CAnimRes(animParms.GetACSFile(), animParms.GetCharacter(), actHead.x40_scale, animParms.GetInitialAnimation(),
true));
CModelData mData(CAnimRes(animParms.GetACSFile(), animParms.GetCharacter(), actHead.x40_scale,
animParms.GetInitialAnimation(), true));
return new MP1::CParasite(mgr.AllocateUniqueId(), actHead.x0_name, CPatterned::EFlavorType::Zero, info,
actHead.x10_transform, std::move(mData), pInfo, EBodyType::WallWalker, 0.f, advanceWpRadius,
f2, alignAngleVel, f4, 0.2f, 0.4f, 0.f, 0.f, 0.f, 0.f, 0.f, 1.f, moveFowardWeight, 0.f, 0.f,
@ -3347,9 +3348,8 @@ CEntity* ScriptLoader::LoadThermalHeatFader(CStateManager& mgr, CInputStream& in
bool active = in.readBool();
float fadedLevel = in.readFloatBig();
float initialLevel = in.readFloatBig();
return new CScriptDistanceFog(mgr.AllocateUniqueId(), name, info, ERglFogMode::None, zeus::skBlack,
zeus::CVector2f(), 0.f, zeus::CVector2f(), false, active, fadedLevel, initialLevel, 0.f,
0.f);
return new CScriptDistanceFog(mgr.AllocateUniqueId(), name, info, ERglFogMode::None, zeus::skBlack, zeus::CVector2f(),
0.f, zeus::CVector2f(), false, active, fadedLevel, initialLevel, 0.f, 0.f);
}
CEntity* ScriptLoader::LoadBurrower(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
@ -3411,8 +3411,8 @@ CEntity* ScriptLoader::LoadWorldLightFader(CStateManager& mgr, CInputStream& in,
float f1 = in.readFloatBig();
float f2 = in.readFloatBig();
return new CScriptDistanceFog(mgr.AllocateUniqueId(), name, info, ERglFogMode::None, zeus::skBlack,
zeus::skZero2f, 0.f, zeus::skZero2f, false, active, 0.f, 0.f, f1, f2);
return new CScriptDistanceFog(mgr.AllocateUniqueId(), name, info, ERglFogMode::None, zeus::skBlack, zeus::skZero2f,
0.f, zeus::skZero2f, false, active, 0.f, 0.f, f1, f2);
}
CEntity* ScriptLoader::LoadMetroidPrimeStage2(CStateManager& mgr, CInputStream& in, int propCount,