public void AddActor(ActorBase actor)
        {
            IBaseComponentContainer container = actor as IBaseComponentContainer;
            var init = container.GetInitData();

            //actor.CreateBody(factory.CreateRectangleBody(init.point_x, init.point_y, 10, 10));

            //判断是否是激光
            if (actor.GetActorType() != ActorTypeBaseDefine.ContinuousLaserActor && actor.GetActorType() != ActorTypeBaseDefine.PowerLaserActor)
            {
                actor.CreateBody(factory.CreateSpaceWonderBody(new Vector2(init.point_x, init.point_y), init.angle, actor.GetGameModelByActorType(), new UserData(actor.GetActorID(), actor.GetActorType())));
            }
            //是持续激光
            else if (actor.GetActorType() == ActorTypeBaseDefine.ContinuousLaserActor)
            {
                //获取长宽属性
                var WH = ActorHelper.GetLaserShapeByShip(actor.GetActorType());
                actor.CreateBody(factory.CreateSpaceWonderLaser(new Vector2(init.point_x, init.point_y), init.angle, new UserData(actor.GetActorID(), actor.GetActorType()), WH.X, WH.Y));
            }
            //是蓄力激光
            else if (actor.GetActorType() == ActorTypeBaseDefine.PowerLaserActor)
            {
                var WH = ActorHelper.GetLaserShapeByShip(actor.GetActorType(), heightpro: actor.GetActorInitPro());

                //Log.Trace("AddActor: actorID" + actor.GetActorID() + " InitDate" + init.point_x + " " + init.point_y + " " + init.angle + " WeaponDemage:" + ((IWeaponBaseComponentContainer)actor).GetWeaponDamage() + " WH" + WH.X + " " + WH.Y + " InitPro:" + actor.GetActorInitPro());

                actor.CreateBody(factory.CreateSpaceWonderLaser(new Vector2(init.point_x, init.point_y), init.angle, new UserData(actor.GetActorID(), actor.GetActorType()), WH.X, WH.Y));
            }
            //Log.Trace("AddActor: actorID" + actor.GetActorID() + " InitDate" + init.point_x + " " + init.point_y + " " + init.angle);
            //Log.Trace("actor id" + actor.GetActorID() + " 生成一个Actor Position:" + actor.GetPosition() + " Forward:" + actor.GetForward());

            _actorList.Add(actor);
        }
예제 #2
0
 public static float GetBodyMassByActor(this ActorBase actor)
 {
     return(BodyExtensions.GetSpaceWanderMass(actor.GetGameModelByActorType()));
 }