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"> <component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173"> <code_scheme name="Project" version="173">
<MarkdownNavigatorCodeStyleSettings>
<option name="RIGHT_MARGIN" value="72" />
</MarkdownNavigatorCodeStyleSettings>
<Objective-C> <Objective-C>
<option name="INDENT_NAMESPACE_MEMBERS" value="0" /> <option name="INDENT_NAMESPACE_MEMBERS" value="0" />
<option name="INDENT_C_STRUCT_MEMBERS" value="2" /> <option name="INDENT_C_STRUCT_MEMBERS" value="2" />

View File

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

View File

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

View File

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

View File

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

View File

@ -10,15 +10,15 @@ struct AreaAttributes : IScriptObject {
AT_DECL_DNAV AT_DECL_DNAV
enum class EWeatherType : atUint32 { None, Snow, Rain }; 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<bool> skyboxEnabled;
Value<EWeatherType> weather; Value<EWeatherType> weather;
Value<float> unknown2; Value<float> envFxDensity;
Value<float> unknown3; Value<float> thermalHeat;
Value<float> unknown4; Value<float> xrayFogDistance;
Value<float> unknown5; Value<float> worldLightingLevel;
UniqueID32 skybox; UniqueID32 skybox;
Value<atUint32> unknown6; Value<atUint32> phazonType;
void gatherDependencies(std::vector<hecl::ProjectPath>& pathsOut, std::vector<hecl::ProjectPath>& lazyOut) const { void gatherDependencies(std::vector<hecl::ProjectPath>& pathsOut, std::vector<hecl::ProjectPath>& lazyOut) const {
g_curSpec->flattenDependencies(skybox, pathsOut); g_curSpec->flattenDependencies(skybox, pathsOut);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -10,26 +10,26 @@ struct WorldTeleporter : IScriptObject {
AT_DECL_EXPLICIT_DNA_YAML AT_DECL_EXPLICIT_DNA_YAML
AT_DECL_DNAV AT_DECL_DNAV
String<-1> name; String<-1> name;
Value<bool> unknown1; Value<bool> active;
UniqueID32 mlvl; UniqueID32 mlvl;
UniqueID32 mrea; UniqueID32 mrea;
AnimationParameters animationParameters; AnimationParameters animationParameters;
Value<atVec3f> unknown2; Value<atVec3f> playerScale;
UniqueID32 model1; UniqueID32 platformModel;
Value<atVec3f> unknown3; Value<atVec3f> platformScale;
UniqueID32 model2; UniqueID32 backgroundModel;
Value<atVec3f> unknown4; Value<atVec3f> backgroundScale;
Value<bool> unknown5; Value<bool> upElevator;
Value<atUint32> soundID; // needs verifcation Value<atUint32> elevatorSound; // needs verifcation
Value<atUint32> unknown6; Value<atUint32> volume;
Value<atUint32> unknown7; Value<atUint32> panning;
Value<bool> unknown8; Value<bool> showText;
UniqueID32 font; UniqueID32 font;
UniqueID32 strg; UniqueID32 strg;
Value<bool> unknown9; Value<bool> fadeWhite;
Value<float> unknown10; Value<float> charFadeInTime;
Value<float> unknown11; Value<float> charsPerSecond;
Value<float> unknown12; Value<float> showDelay;
/* Trilogy additions (property count 26) */ /* Trilogy additions (property count 26) */
String<-1> audioStream; String<-1> audioStream;
@ -39,12 +39,12 @@ struct WorldTeleporter : IScriptObject {
Value<float> unknown16; Value<float> unknown16;
void nameIDs(PAKRouter<PAKBridge>& pakRouter) const { void nameIDs(PAKRouter<PAKBridge>& pakRouter) const {
if (model1) { if (platformModel) {
PAK::Entry* ent = (PAK::Entry*)pakRouter.lookupEntry(model1); PAK::Entry* ent = (PAK::Entry*)pakRouter.lookupEntry(platformModel);
ent->name = name + "_model1"; ent->name = name + "_model1";
} }
if (model2) { if (backgroundModel) {
PAK::Entry* ent = (PAK::Entry*)pakRouter.lookupEntry(model2); PAK::Entry* ent = (PAK::Entry*)pakRouter.lookupEntry(backgroundModel);
ent->name = name + "_model2"; ent->name = name + "_model2";
} }
if (strg) { if (strg) {
@ -54,8 +54,8 @@ struct WorldTeleporter : IScriptObject {
} }
void gatherDependencies(std::vector<hecl::ProjectPath>& pathsOut, std::vector<hecl::ProjectPath>& lazyOut) const { void gatherDependencies(std::vector<hecl::ProjectPath>& pathsOut, std::vector<hecl::ProjectPath>& lazyOut) const {
g_curSpec->flattenDependencies(model1, pathsOut); g_curSpec->flattenDependencies(platformModel, pathsOut);
g_curSpec->flattenDependencies(model2, pathsOut); g_curSpec->flattenDependencies(backgroundModel, pathsOut);
g_curSpec->flattenDependencies(strg, 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 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
# the logo to the output directory. # 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 # 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 # 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); mgr.BuildNearList(nearList, GetTranslation(), dir, 2.f, CMaterialFilter::skPassEverything, nullptr);
for (TUniqueId id : nearList) { for (TUniqueId id : nearList) {
if (TCastToConstPtr<CScriptWater> water = mgr.GetObjectById(id)) if (TCastToConstPtr<CScriptWater>(mgr.GetObjectById(id)))
return true; 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, CFlickerBat::CFlickerBat(TUniqueId uid, std::string_view name, CPatterned::EFlavorType flavor, const CEntityInfo& info,
const zeus::CTransform& xf, CModelData&& mData, const CPatternedInfo& pInfo, 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, : CPatterned(ECharacter::FlickerBat, uid, name, flavor, info, xf, std::move(mData), pInfo, EMovementType::Flyer,
colType, EBodyType::Pitchable, actParms, EKnockBackVariant::Small) colType, EBodyType::Pitchable, actParms, EKnockBackVariant::Small)
, x574_state(EFlickerBatState(b1)) , x574_state(EFlickerBatState(startsHidden))
, x580_24_wasInXray(false) , x580_24_wasInXray(false)
, x580_25_heardShot(false) , x580_25_heardShot(false)
, x580_26_inLOS(false) , x580_26_inLOS(false)
, x580_27_enableLOSCheck(b2) { , x580_27_enableLOSCheck(enableLineOfSight) {
SetupPlayerCollision(b1); SetupPlayerCollision(startsHidden);
x3d8_xDamageThreshold = 0.f; x3d8_xDamageThreshold = 0.f;
x402_27_noXrayModel = false; x402_27_noXrayModel = false;
} }

View File

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

View File

@ -6,10 +6,10 @@
namespace urde { namespace urde {
CScriptAiJumpPoint::CScriptAiJumpPoint(TUniqueId uid, std::string_view name, const CEntityInfo& info, 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), : CActor(uid, active, name, info, xf, CModelData::CModelDataNull(), CMaterialList(EMaterialTypes::NoStepLogic),
CActorParameters::None(), kInvalidUniqueId) CActorParameters::None(), kInvalidUniqueId)
, xe8_apex(f1) , xe8_apex(apex)
, xec_touchBounds(xf.origin, xf.origin) {} , xec_touchBounds(xf.origin, xf.origin) {}
void CScriptAiJumpPoint::Accept(IVisitor& visitor) { visitor.Visit(this); } 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, CScriptCameraPitchVolume::CScriptCameraPitchVolume(TUniqueId uid, bool active, std::string_view name,
const CEntityInfo& info, const zeus::CVector3f& scale, const CEntityInfo& info, const zeus::CVector3f& scale,
const zeus::CTransform& xf, const zeus::CRelAngle& r1, const zeus::CTransform& xf, const zeus::CRelAngle& upPitch,
const zeus::CRelAngle& r2, float maxInterpDistance) const zeus::CRelAngle& downPitch, float maxInterpDistance)
: CActor(uid, active, name, info, xf, CModelData::CModelDataNull(), CMaterialList(EMaterialTypes::Trigger), : CActor(uid, active, name, info, xf, CModelData::CModelDataNull(), CMaterialList(EMaterialTypes::Trigger),
CActorParameters::None(), kInvalidUniqueId) CActorParameters::None(), kInvalidUniqueId)
, xe8_obbox(xf, scale * skScaleFactor) , xe8_obbox(xf, scale * skScaleFactor)
, x124_upPitch(r1) , x124_upPitch(upPitch)
, x128_downPitch(r2) , x128_downPitch(downPitch)
, x12c_scale(scale * skScaleFactor) , x12c_scale(scale * skScaleFactor)
, x138_maxInterpDistance(maxInterpDistance) {} , x138_maxInterpDistance(maxInterpDistance) {}

View File

@ -560,12 +560,12 @@ CEntity* ScriptLoader::LoadCounter(CStateManager& mgr, CInputStream& in, int pro
std::string name = mgr.HashInstanceName(in); std::string name = mgr.HashInstanceName(in);
u32 w1 = in.readUint32Big(); u32 initial = in.readUint32Big();
u32 w2 = in.readUint32Big(); u32 max = in.readUint32Big();
bool b1 = in.readBool(); bool autoReset = in.readBool();
bool b2 = 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) { 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); CPatternedInfo pInfo(in, pair.second);
CActorParameters actParms = LoadActorParameters(in); CActorParameters actParms = LoadActorParameters(in);
bool b1 = in.readBool(); bool collider = in.readBool();
bool b2 = in.readBool(); bool excludePlayer = in.readBool();
bool b3 = in.readBool(); bool enableLineOfSight = in.readBool();
if (g_ResFactory->GetResourceTypeById(pInfo.GetAnimationParameters().GetACSFile()) != SBIG('ANCS')) if (g_ResFactory->GetResourceTypeById(pInfo.GetAnimationParameters().GetACSFile()) != SBIG('ANCS'))
return nullptr; return nullptr;
@ -1567,7 +1567,7 @@ CEntity* ScriptLoader::LoadFlickerBat(CStateManager& mgr, CInputStream& in, int
CModelData mData(CAnimRes(pInfo.GetAnimationParameters().GetACSFile(), pInfo.GetAnimationParameters().GetCharacter(), CModelData mData(CAnimRes(pInfo.GetAnimationParameters().GetACSFile(), pInfo.GetAnimationParameters().GetCharacter(),
scale, pInfo.GetAnimationParameters().GetInitialAnimation(), true)); scale, pInfo.GetAnimationParameters().GetInitialAnimation(), true));
return new MP1::CFlickerBat(mgr.AllocateUniqueId(), name, flavor, info, xf, std::move(mData), pInfo, 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) { CEntity* ScriptLoader::LoadPathCamera(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
@ -1631,7 +1631,7 @@ CEntity* ScriptLoader::LoadPuddleSpore(CStateManager& mgr, CInputStream& in, int
return nullptr; return nullptr;
CModelData mData( CModelData mData(
CAnimRes(animParms.GetACSFile(), animParms.GetCharacter(), scale, animParms.GetInitialAnimation(), true)); CAnimRes(animParms.GetACSFile(), animParms.GetCharacter(), scale, animParms.GetInitialAnimation(), true));
return new MP1::CPuddleSpore(mgr.AllocateUniqueId(), name, flavor, info, xf, std::move(mData), pInfo, return new MP1::CPuddleSpore(mgr.AllocateUniqueId(), name, flavor, info, xf, std::move(mData), pInfo,
CPatterned::EColliderType(b1), w1, f1, f2, f3, f4, f5, actParms, w2, dInfo); CPatterned::EColliderType(b1), w1, f1, f2, f3, f4, f5, actParms, w2, dInfo);
} }
@ -1831,8 +1831,8 @@ CEntity* ScriptLoader::LoadSpecialFunction(CStateManager& mgr, CInputStream& in,
return nullptr; return nullptr;
return new CScriptSpecialFunction(mgr.AllocateUniqueId(), head.x0_name, info, head.x10_transform, specialFunction, return new CScriptSpecialFunction(mgr.AllocateUniqueId(), head.x0_name, info, head.x10_transform, specialFunction,
str, f1, f2, f3, f4, zeus::skZero3f, zeus::skBlack, active1, str, f1, f2, f3, f4, zeus::skZero3f, zeus::skBlack, active1, CDamageInfo(), w2, w3,
CDamageInfo(), w2, w3, w4, w5, w6, w7); w4, w5, w6, w7);
} }
CEntity* ScriptLoader::LoadSpankWeed(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) { 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); CPatternedInfo pInfo(in, pair.second);
CActorParameters actParms = LoadActorParameters(in); CActorParameters actParms = LoadActorParameters(in);
in.readBool(); in.readBool();
float f1 = in.readFloatBig(); float maxDetectionRange = in.readFloatBig();
float f2 = in.readFloatBig(); float maxHearingRange = in.readFloatBig();
float f3 = in.readFloatBig(); float maxSightRange = in.readFloatBig();
float f4 = in.readFloatBig(); float hideTime = in.readFloatBig();
const CAnimationParameters& animParms = pInfo.GetAnimationParameters(); const CAnimationParameters& animParms = pInfo.GetAnimationParameters();
if (!animParms.GetACSFile().IsValid()) 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, CModelData mData(CAnimRes(animParms.GetACSFile(), animParms.GetCharacter(), aHead.x40_scale,
animParms.GetInitialAnimation(), true)); animParms.GetInitialAnimation(), true));
return new MP1::CSpankWeed(mgr.AllocateUniqueId(), aHead.x0_name, info, aHead.x10_transform, std::move(mData), 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) { 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); SActorHead aHead = LoadActorHead(in, mgr);
bool active = in.readBool(); bool active = in.readBool();
u32 w2 = LoadParameterFlags(in); u32 overrideFlags = LoadParameterFlags(in);
u32 w1 = in.readUint32Big(); 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) { 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) { 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; return nullptr;
} }
@ -1949,10 +1954,10 @@ CEntity* ScriptLoader::LoadPointOfInterest(CStateManager& mgr, CInputStream& in,
SActorHead aHead = LoadActorHead(in, mgr); SActorHead aHead = LoadActorHead(in, mgr);
bool active = in.readBool(); bool active = in.readBool();
CScannableParameters sParms = LoadScannableParameters(in); 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, 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) { CEntity* ScriptLoader::LoadDrone(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) {
@ -1979,7 +1984,7 @@ CEntity* ScriptLoader::LoadMetroid(CStateManager& mgr, CInputStream& in, int pro
return nullptr; return nullptr;
CModelData mData( CModelData mData(
CAnimRes(animParms.GetACSFile(), animParms.GetCharacter(), scale, animParms.GetInitialAnimation(), true)); CAnimRes(animParms.GetACSFile(), animParms.GetCharacter(), scale, animParms.GetInitialAnimation(), true));
return new MP1::CMetroid(mgr.AllocateUniqueId(), name, flavor, info, xf, std::move(mData), pInfo, actParms, metData, return new MP1::CMetroid(mgr.AllocateUniqueId(), name, flavor, info, xf, std::move(mData), pInfo, actParms, metData,
kInvalidUniqueId); kInvalidUniqueId);
} }
@ -2030,7 +2035,7 @@ CEntity* ScriptLoader::LoadDebrisExtended(CStateManager& mgr, CInputStream& in,
CScriptDebris::EOrientationType particle2Or = CScriptDebris::EOrientationType(in.readUint32Big()); CScriptDebris::EOrientationType particle2Or = CScriptDebris::EOrientationType(in.readUint32Big());
CAssetId particle3 = 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()); CScriptDebris::EOrientationType particle3Or = CScriptDebris::EOrientationType(in.readUint32Big());
bool solid = in.readBool(); bool solid = in.readBool();
@ -2275,8 +2280,8 @@ CEntity* ScriptLoader::LoadFishCloud(CStateManager& mgr, CInputStream& in, int p
bool hotInThermal = in.readBool(); bool hotInThermal = in.readBool();
CModelData mData(CStaticRes(model, zeus::skOne3f)); CModelData mData(CStaticRes(model, zeus::skOne3f));
CAnimRes animRes(animParms.GetACSFile(), animParms.GetCharacter(), zeus::skOne3f, CAnimRes animRes(animParms.GetACSFile(), animParms.GetCharacter(), zeus::skOne3f, animParms.GetInitialAnimation(),
animParms.GetInitialAnimation(), true); true);
return new CFishCloud(mgr.AllocateUniqueId(), active, aHead.x0_name, info, aHead.x40_scale, aHead.x10_transform, return new CFishCloud(mgr.AllocateUniqueId(), active, aHead.x0_name, info, aHead.x40_scale, aHead.x10_transform,
std::move(mData), animRes, numBoids, speed, separationRadius, cohesionMagnitude, std::move(mData), animRes, numBoids, speed, separationRadius, cohesionMagnitude,
alignmentWeight, separationMagnitude, weaponRepelMagnitude, playerRepelMagnitude, alignmentWeight, separationMagnitude, weaponRepelMagnitude, playerRepelMagnitude,
@ -2526,15 +2531,13 @@ CEntity* ScriptLoader::LoadWallCrawlerSwarm(CStateManager& mgr, CInputStream& in
u32 launchSfx = in.readUint32Big(); u32 launchSfx = in.readUint32Big();
u32 scatterSfx = in.readUint32Big(); u32 scatterSfx = in.readUint32Big();
return new CWallCrawlerSwarm(mgr.AllocateUniqueId(), active, aHead.x0_name, info, aHead.x40_scale, return new CWallCrawlerSwarm(
aHead.x10_transform, flavor, mgr.AllocateUniqueId(), active, aHead.x0_name, info, aHead.x40_scale, aHead.x10_transform, flavor,
CAnimRes(actor, charIdx, zeus::CVector3f(1.5f), defaultAnim, true), CAnimRes(actor, charIdx, zeus::CVector3f(1.5f), defaultAnim, true), launchAnim, attractAnim, part1, part2, part3,
launchAnim, attractAnim, part1, part2, part3, part4, crabDamage, scarabExplodeDamage, part4, crabDamage, scarabExplodeDamage, crabDamageCooldown, boidRadius, touchRadius, playerTouchRadius, numBoids,
crabDamageCooldown, boidRadius, touchRadius, playerTouchRadius, numBoids, maxCreatedBoids, animPlaybackSpeed, separationRadius, cohesionMagnitude, alignmentWeight, separationMagnitude,
maxCreatedBoids, animPlaybackSpeed, separationRadius, cohesionMagnitude, alignmentWeight, moveToWaypointWeight, attractionMagnitude, attractionRadius, boidGenRate, maxLaunches, scarabBoxMargin,
separationMagnitude, moveToWaypointWeight, attractionMagnitude, attractionRadius, scarabScatterXYVelocity, scarabTimeToExplode, hInfo, dVulns, launchSfx, scatterSfx, aParams);
boidGenRate, maxLaunches, scarabBoxMargin, scarabScatterXYVelocity, scarabTimeToExplode,
hInfo, dVulns, launchSfx, scatterSfx, aParams);
} }
CEntity* ScriptLoader::LoadAiJumpPoint(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) { 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); SActorHead aHead = LoadActorHead(in, mgr);
bool active = in.readBool(); 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, 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(); float radius = in.readFloatBig();
zeus::CTransform xf = ConvertEditorEulerToTransform4f(zeus::skZero3f, center); zeus::CTransform xf = ConvertEditorEulerToTransform4f(zeus::skZero3f, center);
return new CScriptSpecialFunction(mgr.AllocateUniqueId(), name, info, xf, return new CScriptSpecialFunction(
CScriptSpecialFunction::ESpecialFunction::RadialDamage, "", radius, 0.f, 0.f, 0.f, mgr.AllocateUniqueId(), name, info, xf, CScriptSpecialFunction::ESpecialFunction::RadialDamage, "", radius, 0.f,
zeus::skZero3f, zeus::skBlack, active, dInfo, -1, -1, 0.f, 0.f, zeus::skZero3f, zeus::skBlack, active, dInfo, -1, -1, CPlayerState::EItemType::Invalid, -1, -1, -1);
CPlayerState::EItemType::Invalid, -1, -1, -1);
} }
CEntity* ScriptLoader::LoadCameraPitchVolume(CStateManager& mgr, CInputStream& in, int propCount, 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); SScaledActorHead aHead = LoadScaledActorHead(in, mgr);
bool active = in.readBool(); bool active = in.readBool();
zeus::CRelAngle f1 = zeus::CRelAngle::FromDegrees(in.readFloatBig()); zeus::CRelAngle upPitch = zeus::CRelAngle::FromDegrees(in.readFloatBig());
zeus::CRelAngle f2 = zeus::CRelAngle::FromDegrees(in.readFloatBig()); zeus::CRelAngle downPitch = zeus::CRelAngle::FromDegrees(in.readFloatBig());
float f3 = in.readFloatBig(); float scale = in.readFloatBig();
return new CScriptCameraPitchVolume(mgr.AllocateUniqueId(), active, aHead.x0_name, info, aHead.x40_scale, 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, 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); std::string name = mgr.HashInstanceName(in);
bool active = in.readBool(); bool active = in.readBool();
float density = in.readFloatBig(); float density = in.readFloatBig();
u32 w1 = in.readUint32Big(); u32 maxDensityDeltaSpeed = in.readUint32Big();
return new CScriptSpecialFunction(mgr.AllocateUniqueId(), name, info, zeus::CTransform(), return new CScriptSpecialFunction(mgr.AllocateUniqueId(), name, info, zeus::CTransform(),
CScriptSpecialFunction::ESpecialFunction::EnvFxDensityController, "", density, w1, CScriptSpecialFunction::ESpecialFunction::EnvFxDensityController, "", density,
0.f, 0.f, zeus::skZero3f, zeus::skBlack, active, CDamageInfo(), -1, maxDensityDeltaSpeed, 0.f, 0.f, zeus::skZero3f, zeus::skBlack, active,
-1, CPlayerState::EItemType::Invalid, -1, -1, -1); CDamageInfo(), -1, -1, CPlayerState::EItemType::Invalid, -1, -1, -1);
} }
CEntity* ScriptLoader::LoadMagdolite(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) { 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()) if (pInfo.GetAnimationParameters().GetACSFile() == CAssetId())
return nullptr; return nullptr;
float f1 = in.readFloatBig(); float advanceWpRadius = in.readFloatBig();
float f2 = in.readFloatBig(); float f2 = in.readFloatBig();
float f3 = in.readFloatBig(); float alignAngVel = in.readFloatBig();
float f4 = in.readFloatBig(); float f4 = in.readFloatBig();
float f5 = in.readFloatBig(); float playerObstructionMinDist = in.readFloatBig();
float f6 = in.readFloatBig(); float haltDelay = in.readFloatBig();
float f7 = in.readFloatBig(); float forwardMoveWeight = in.readFloatBig();
u16 sId1 = in.readUint32Big() & 0xFFFF; u16 haltSfx = in.readUint32Big() & 0xFFFF;
u16 sId2 = in.readUint32Big() & 0xFFFF; u16 getUpSfx = in.readUint32Big() & 0xFFFF;
u16 sId3 = in.readUint32Big() & 0xFFFF; u16 crouchSfx = in.readUint32Big() & 0xFFFF;
CModelData mData(CAnimRes(pInfo.GetAnimationParameters().GetACSFile(), pInfo.GetAnimationParameters().GetCharacter(), CModelData mData(CAnimRes(pInfo.GetAnimationParameters().GetACSFile(), pInfo.GetAnimationParameters().GetCharacter(),
actHead.x40_scale, pInfo.GetAnimationParameters().GetInitialAnimation(), true)); actHead.x40_scale, pInfo.GetAnimationParameters().GetInitialAnimation(), true));
return new MP1::CParasite(mgr.AllocateUniqueId(), actHead.x0_name, CPatterned::EFlavorType::Zero, info, 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, actHead.x10_transform, std::move(mData), pInfo, EBodyType::WallWalker, 0.f, advanceWpRadius,
0.2f, 0.4f, 0.f, 0.f, 0.f, 0.f, 0.f, 1.f, f7, 0.f, 0.f, f5, f6, false, f2, alignAngVel, f4, 0.2f, 0.4f, 0.f, 0.f, 0.f, 0.f, 0.f, 1.f, forwardMoveWeight, 0.f, 0.f,
CWallWalker::EWalkerType::Geemer, CDamageVulnerability::NormalVulnerabilty(), CDamageInfo(), playerObstructionMinDist, haltDelay, false, CWallWalker::EWalkerType::Geemer,
sId1, sId2, sId3, -1, -1, 0.f, actParms); CDamageVulnerability::NormalVulnerabilty(), CDamageInfo(), haltSfx, getUpSfx, crouchSfx, -1,
-1, 0.f, actParms);
} }
CEntity* ScriptLoader::LoadSpindleCamera(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) { 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); SSpindleProperty recoverClampedAzimuthFromHintDir(in);
recoverClampedAzimuthFromHintDir.FixupAngles(); recoverClampedAzimuthFromHintDir.FixupAngles();
return new CScriptSpindleCamera(mgr.AllocateUniqueId(), aHead.x0_name, info, aHead.x10_transform, active, flags, return new CScriptSpindleCamera(
hintToCamDistMin, hintToCamDistMax, hintToCamVOffMin, hintToCamVOffMax, mgr.AllocateUniqueId(), aHead.x0_name, info, aHead.x10_transform, active, flags, hintToCamDistMin,
targetHintToCamDeltaAngleVel, deltaAngleScaleWithCamDist, hintToCamDist, hintToCamDistMax, hintToCamVOffMin, hintToCamVOffMax, targetHintToCamDeltaAngleVel, deltaAngleScaleWithCamDist,
distOffsetFromBallDist, hintBallToCamAzimuth, unused, maxHintBallToCamAzimuth, hintToCamDist, distOffsetFromBallDist, hintBallToCamAzimuth, unused, maxHintBallToCamAzimuth, camLookRelAzimuth,
camLookRelAzimuth, lookPosZOffset, camPosZOffset, clampedAzimuthFromHintDir, lookPosZOffset, camPosZOffset, clampedAzimuthFromHintDir, dampingAzimuthSpeed, targetHintToCamDeltaAngleVelRange,
dampingAzimuthSpeed, targetHintToCamDeltaAngleVelRange, deleteHintBallDist, deleteHintBallDist, recoverClampedAzimuthFromHintDir);
recoverClampedAzimuthFromHintDir);
} }
CEntity* ScriptLoader::LoadAtomicAlpha(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) { 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(); zeus::CTransform xfRot = aHead.x10_transform.getRotation();
if (xfRot == zeus::CTransform()) if (xfRot == zeus::CTransform())
return new CScriptTrigger(mgr.AllocateUniqueId(), aHead.x0_name, info, aHead.x10_transform.origin, return new CScriptTrigger(mgr.AllocateUniqueId(), aHead.x0_name, info, aHead.x10_transform.origin,
zeus::CAABox(-scale, scale), CDamageInfo(), zeus::skZero3f, zeus::CAABox(-scale, scale), CDamageInfo(), zeus::skZero3f, ETriggerFlags::DetectPlayer,
ETriggerFlags::DetectPlayer, active, deactivateOnEnter, deactivateOnExit); active, deactivateOnEnter, deactivateOnExit);
return new CScriptCameraHintTrigger(mgr.AllocateUniqueId(), active, aHead.x0_name, info, scale, aHead.x10_transform, return new CScriptCameraHintTrigger(mgr.AllocateUniqueId(), active, aHead.x0_name, info, scale, aHead.x10_transform,
deactivateOnEnter, deactivateOnExit); deactivateOnEnter, deactivateOnExit);
@ -3123,8 +3125,8 @@ CEntity* ScriptLoader::LoadRumbleEffect(CStateManager& mgr, CInputStream& in, in
return new CScriptSpecialFunction( return new CScriptSpecialFunction(
mgr.AllocateUniqueId(), name, info, ConvertEditorEulerToTransform4f(zeus::skZero3f, position), mgr.AllocateUniqueId(), name, info, ConvertEditorEulerToTransform4f(zeus::skZero3f, position),
CScriptSpecialFunction::ESpecialFunction::RumbleEffect, "", f1, w1, pFlags, 0.f, zeus::skZero3f, CScriptSpecialFunction::ESpecialFunction::RumbleEffect, "", f1, w1, pFlags, 0.f, zeus::skZero3f, zeus::skBlack,
zeus::skBlack, active, {}, {}, {}, CPlayerState::EItemType::Invalid, -1, -1, -1); active, {}, {}, {}, CPlayerState::EItemType::Invalid, -1, -1, -1);
} }
CEntity* ScriptLoader::LoadAmbientAI(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) { 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); CDamageVulnerability dVuln(in);
float iceZoomerJointHP = in.readFloatBig(); float iceZoomerJointHP = in.readFloatBig();
CModelData mData( CModelData mData(CAnimRes(animParms.GetACSFile(), animParms.GetCharacter(), actHead.x40_scale,
CAnimRes(animParms.GetACSFile(), animParms.GetCharacter(), actHead.x40_scale, animParms.GetInitialAnimation(), animParms.GetInitialAnimation(), true));
true));
return new MP1::CParasite(mgr.AllocateUniqueId(), actHead.x0_name, CPatterned::EFlavorType::Zero, info, 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, 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, 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(); bool active = in.readBool();
float fadedLevel = in.readFloatBig(); float fadedLevel = in.readFloatBig();
float initialLevel = in.readFloatBig(); float initialLevel = in.readFloatBig();
return new CScriptDistanceFog(mgr.AllocateUniqueId(), name, info, ERglFogMode::None, zeus::skBlack, return new CScriptDistanceFog(mgr.AllocateUniqueId(), name, info, ERglFogMode::None, zeus::skBlack, zeus::CVector2f(),
zeus::CVector2f(), 0.f, zeus::CVector2f(), false, active, fadedLevel, initialLevel, 0.f, 0.f, zeus::CVector2f(), false, active, fadedLevel, initialLevel, 0.f, 0.f);
0.f);
} }
CEntity* ScriptLoader::LoadBurrower(CStateManager& mgr, CInputStream& in, int propCount, const CEntityInfo& info) { 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 f1 = in.readFloatBig();
float f2 = in.readFloatBig(); float f2 = in.readFloatBig();
return new CScriptDistanceFog(mgr.AllocateUniqueId(), name, info, ERglFogMode::None, zeus::skBlack, return new CScriptDistanceFog(mgr.AllocateUniqueId(), name, info, ERglFogMode::None, zeus::skBlack, zeus::skZero2f,
zeus::skZero2f, 0.f, zeus::skZero2f, false, active, 0.f, 0.f, f1, f2); 0.f, zeus::skZero2f, false, active, 0.f, 0.f, f1, f2);
} }
CEntity* ScriptLoader::LoadMetroidPrimeStage2(CStateManager& mgr, CInputStream& in, int propCount, CEntity* ScriptLoader::LoadMetroidPrimeStage2(CStateManager& mgr, CInputStream& in, int propCount,