Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

111 lines
2.2 KiB
C++

#pragma once
#ifndef AI_FIREDATA_HPP
#define AI_FIREDATA_HPP
#include <Adept\Entity.hpp>
#include <Stuff\Line.hpp>
#include <Stuff\Normal.hpp>
#include <Stuff\Point3D.hpp>
namespace MechWarrior4
{
class Weapon;
};
namespace MW4AI
{
class FireData
{
public:
FireData(Adept::Entity& source,
const Stuff::Point3D& src,
const Stuff::Point3D& dest);
FireData(Adept::Entity& source,
MechWarrior4::Weapon& weapon,
const Stuff::Point3D& dest);
FireData(const FireData& copy_from);
Adept::Entity* Project();
inline Adept::Entity& GetSource() const;
inline const Stuff::Point3D& GetOrigin() const;
inline Stuff::Point3D GetDest();
inline const Stuff::Line3D& GetLine() const;
inline Stuff::Line3D& GetLine();
inline Adept::Entity__CollisionQuery& GetQuery();
inline Adept::Entity* GetRaySource() const;
inline void SetLineLength(Stuff::Scalar length);
enum HIT_RESULT
{
HIT_TARGET,
HIT_SOMETHING_ELSE,
HIT_NOTHING
};
HIT_RESULT GetHitResult(Adept::Entity* desired_target = 0, bool ignore_dead_components = false) const;
bool HitsGround() const;
private:
void CreateLine(const Stuff::Point3D& src,
const Stuff::Point3D& dest);
private:
Adept::Entity__CollisionQuery m_Query;
Stuff::Line3D m_Line;
Stuff::Normal3D m_Normal;
Adept::Entity& m_Source;
};
inline const Stuff::Line3D& FireData::GetLine() const
{
return (m_Line);
}
inline Stuff::Line3D& FireData::GetLine()
{
return (m_Line);
}
inline Adept::Entity__CollisionQuery& FireData::GetQuery()
{
return (m_Query);
}
inline Adept::Entity* FireData::GetRaySource() const
{
return (m_Query.m_raySource);
}
inline Adept::Entity& FireData::GetSource() const
{
return (m_Source);
}
inline const Stuff::Point3D& FireData::GetOrigin() const
{
return (m_Line.m_origin);
}
inline Stuff::Point3D FireData::GetDest()
{
Stuff::Point3D rv;
m_Line.FindEnd(&rv);
return (rv);
}
inline void FireData::SetLineLength(Stuff::Scalar length)
{
Verify(length > 0);
m_Line.m_length = length;
}
};
#endif // AI_FIREDATA_HPP