Example #1
0
        public void CreateFormationPattern(Vector3 pos, Vector3 facing, bool vFormation)
        {
            if ((double)facing.LengthSquared <= 9.99999974737875E-06 || !facing.IsFinite() || this.m_ships.Count == 0)
            {
                return;
            }
            Matrix world = Matrix.CreateWorld(ShipFormation.GetCenterOfMass(this.m_ships), facing, Vector3.UnitY);

            this.m_formationPattern = !vFormation?FormationPatternCreator.CreateLineAbreastPattern(this.m_ships, world) : FormationPatternCreator.CreateVFormationPattern(this.m_ships, world);

            float val2 = 0.0f;

            foreach (FormationPatternData formationPatternData in this.m_formationPattern)
            {
                val2 = Math.Max(formationPatternData.Position.Z, val2);
            }
            List <FormationPatternData> lineAbreastPattern = FormationPatternCreator.CreateLineAbreastPattern(this.m_shipsOnBackLine, Matrix.CreateWorld(ShipFormation.GetCenterOfMass(this.m_shipsOnBackLine), facing, Vector3.UnitY));

            foreach (FormationPatternData formationPatternData in lineAbreastPattern)
            {
                Vector3 position = formationPatternData.Position;
                position.Z += this.m_BackLineOffsetDist + val2;
                formationPatternData.IsLead   = formationPatternData.IsLead && this.m_formationPattern.Count == 0;
                formationPatternData.Position = position;
            }
            this.m_formationPattern.AddRange((IEnumerable <FormationPatternData>)lineAbreastPattern);
        }
Example #2
0
 public FormationDefinition()
 {
     this.m_CurrentPosition    = new Vector3(0.0f, 0.0f, 0.0f);
     this.m_formationPattern   = new List <FormationPatternData>();
     this._parentShipFormation = (ShipFormation)null;
 }