コード例 #1
0
 private void SetMembers(EngineManager engineState)
 {
     this.EngineState    = engineState;
     AreaCompPolyHandler = new AreaCompPolyHandler(EngineState);
     DefCompPolyHandler  = new DefinitiveCompPolyHandler(EngineState);
     _entityBuilder      = new EntityBuilder(this);
     BumpersHandler      = new BumpersHandler(this);
     _rocketsHandler     = new RocketsHandler(this);
     ProjectionHandler   = new ProjectionHandler(this);
 }
コード例 #2
0
        public bool IsComponentsOverlapping()
        {
            var ovlpedPairs = new List <KeyValuePair <List <IntPoint>, List <IntPoint> > >();

            //String[] args = new string[2];
            //args[1] = this.LevelStr;
            //GenManager.GenerateGevaLevel(args, null);
            OverlappedComponents = 0;
            DefinitiveCompPolyHandler def   = new DefinitiveCompPolyHandler(StaticData.EngineManager);
            List <List <IntPoint> >   polys = new List <List <IntPoint> >();

            polys.AddRange(def.GetDefBubblesPolys());
            polys.AddRange(def.GetDefRocketsPolys());
            polys.AddRange(def.GetDefBumpersPolys());

            foreach (BlowerService blowerService in StaticData.EngineManager.BlowerManagerEngine.ListOfServices)
            {
                polys.Add(PolysHelper.GetShapeSquarePoly(blowerService.PositionXNACenter,
                                                         (int)StaticData.BlowerDimWidth / 2));
            }

            for (int i = 0; i < polys.Count - 1; i++)
            {
                var polyNow = polys[i];
                for (int j = i + 1; j < polys.Count; j++)
                {
                    var polyCompare = polys[j];
                    if (polyNow != polyCompare)
                    {
                        if (EntraSolver.IsPolyOperation(polyCompare, polyNow, ClipType.ctIntersection))
                        {
                            //List<KeyValuePair<List<IntPoint>, List<IntPoint>>>
                            var res = (from kv in ovlpedPairs
                                       where (kv.Key == polyCompare && kv.Value == polyNow) ||
                                       (kv.Key == polyNow && kv.Value == polyCompare)
                                       select kv).ToList();
                            if (res != null)
                            {
                                ovlpedPairs.Add(new KeyValuePair <List <IntPoint>, List <IntPoint> >(polyNow, polyCompare));
                                OverlappedComponents++;
                            }
                        }
                    }
                }
            }
            return(OverlappedComponents != 0);
        }