public CreatureObject GetFarthest(CreatureObject Source, List <CreatureObject> Creatures) { AreaObject SourceArea = Source.Area; Vector3 SourcePos = Source.Position; CreatureObject RetValue = null; if (Creatures.Count == 0) { return(RetValue); } float LongestDistance = -1.0f; foreach (CreatureObject Target in Creatures) { // Only interested in objects in the same area. if (SourceArea != Target.Area) { continue; } Vector3 TargetPos = Target.Position; float Distance = MathOps.DistanceSq(SourcePos, TargetPos); if ((LongestDistance < 0) || ((Distance > LongestDistance) && (Distance < 100.0f * 100.0f))) // 100 meters is about as far as we'd expect combat to reach. { LongestDistance = Distance; RetValue = Target; } } return(RetValue); }
public CreatureObject GetNearest(CreatureObject Source, List <CreatureObject> Creatures) { AreaObject SourceArea = Source.Area; Vector3 SourcePos = Source.Position; CreatureObject RetValue = null; if (Creatures.Count == 0) { return(RetValue); } float ShortestDistance = -1.0f; foreach (CreatureObject Target in Creatures) { // Only interested in objects in the same area. if (SourceArea != Target.Area) { continue; } Vector3 TargetPos = Target.Position; float Distance = MathOps.DistanceSq(SourcePos, TargetPos); if ((ShortestDistance < 0) || (Distance < ShortestDistance)) { ShortestDistance = Distance; RetValue = Target; } } return(RetValue); }
/// <summary> /// Add an instanced area object to the area object list. /// </summary> /// <param name="AreaObjectId">Supplies the area object id.</param> /// <returns>The C# area object.</returns> public AreaObject AddInstancedArea(uint AreaObjectId) { AreaObject Area = new AreaObject(AreaObjectId, ObjectManager); Areas.Add(Area); return Area; }
/// <summary> /// Add an instanced area object to the area object list. /// </summary> /// <param name="AreaObjectId">Supplies the area object id.</param> /// <returns>The C# area object.</returns> public AreaObject AddInstancedArea(uint AreaObjectId) { AreaObject Area = new AreaObject(AreaObjectId, ObjectManager); Areas.Add(Area); return(Area); }
/// <summary> /// Construct a module object and insert it into the object table. /// </summary> /// <param name="ObjectId">Supplies the object id.</param> /// <param name="ObjectManager">Supplies the object manager.</param> public ModuleObject(uint ObjectId, GameObjectManager ObjectManager) : base(ObjectId, GameObjectType.Module, ObjectManager) { // // Discover pre-created areas in the module. Instanced areas will // be discovered when they are created. // foreach (uint AreaObjectId in Script.GetAreas()) { AreaObject Area = new AreaObject(AreaObjectId, ObjectManager); } }
/// <summary> /// Construct a module object and insert it into the object table. /// </summary> /// <param name="ObjectId">Supplies the object id.</param> /// <param name="ObjectManager">Supplies the object manager.</param> public ModuleObject(uint ObjectId, GameObjectManager ObjectManager) : base(ObjectId, GameObjectType.Module, ObjectManager) { // // Discover pre-created areas in the module. Instanced areas will // be discovered when they are created. // foreach (uint AreaObjectId in Script.GetAreas()) { AreaObject Area = new AreaObject(AreaObjectId, ObjectManager); Areas.Add(Area); } }