예제 #1
0
 internal void PromoteEngineObjectStatus(GameObjectStatus value)
 {
     if (value == GameObjectStatus.Pending)
     {
         throw new ArgumentOutOfRangeException(nameof(value), "Can not revert to pending status. Create a new object instead.");
     }
     this._engineObjectStatus = value;
 }
예제 #2
0
        protected override GameObjectStatus OnCheckStatus()
        {
            GameObjectStatus gameObjectStatus = base.OnCheckStatus();

            if (gameObjectStatus != GameObjectStatus.Ready)
            {
                return(gameObjectStatus);
            }
            return(GameObjectStatus.Ready);
        }
예제 #3
0
        protected override GameObjectStatus OnCheckStatus()
        {
            GameObjectStatus gameObjectStatus = base.OnCheckStatus();

            if (gameObjectStatus != GameObjectStatus.Ready)
            {
                return(gameObjectStatus);
            }
            if (this._objects.Any <IGameObject>((Func <IGameObject, bool>)(x => x.ObjectStatus == GameObjectStatus.Pending)))
            {
                return(GameObjectStatus.Pending);
            }
            if (!this._checkStatusBootstrapped)
            {
                this._checkStatusBootstrapped = true;
                ShipDummy.ShipDummyPart shipDummyPart = this._dummyParts.First <ShipDummy.ShipDummyPart>((Func <ShipDummy.ShipDummyPart, bool>)(x =>
                {
                    if (x.IsSection)
                    {
                        return(x.AttachedModel == null);
                    }
                    return(false);
                }));
                foreach (ShipDummy.ShipDummyPart dummyPart in this._dummyParts)
                {
                    if (dummyPart != shipDummyPart)
                    {
                        if (dummyPart.IsSection)
                        {
                            dummyPart.Model.PostSetParent(dummyPart.AttachedModel, dummyPart.AttachedNodeName, dummyPart.AttachedNodeName);
                        }
                        else
                        {
                            dummyPart.Model.PostSetParent(dummyPart.AttachedModel, dummyPart.AttachedNodeName);
                        }
                    }
                }
                shipDummyPart.Model.PostSetParent((IGameObject)this.RigidBody);
                this.PostObjectAddObjects(((IEnumerable <IGameObject>) new IGameObject[1]
                {
                    (IGameObject)this.RigidBody
                }).Concat <IGameObject>((IEnumerable <IGameObject>) this._dummyParts.Select <ShipDummy.ShipDummyPart, StaticModel>((Func <ShipDummy.ShipDummyPart, StaticModel>)(x => x.Model))).ToArray <IGameObject>());
                this.RigidBody.PostSetAggregate((IGameObject)this);
                List <StaticModel> list       = this._dummyParts.Where <ShipDummy.ShipDummyPart>((Func <ShipDummy.ShipDummyPart, bool>)(x => x.IsSection)).Select <ShipDummy.ShipDummyPart, StaticModel>((Func <ShipDummy.ShipDummyPart, StaticModel>)(y => y.Model)).ToList <StaticModel>();
                List <object>      objectList = new List <object>();
                objectList.Add((object)list.Count);
                foreach (StaticModel staticModel in list)
                {
                    objectList.Add((object)staticModel.ObjectID);
                }
                this.PostSetProp("CreateBoundingBox", objectList.ToArray());
                this.PostSetProp("Activate");
            }
            return(GameObjectStatus.Ready);
        }
예제 #4
0
        protected override GameObjectStatus OnCheckStatus()
        {
            GameObjectStatus gameObjectStatus = base.OnCheckStatus();

            if (gameObjectStatus != GameObjectStatus.Ready)
            {
                return(gameObjectStatus);
            }
            this.PostSetActive(true);
            return(GameObjectStatus.Ready);
        }
예제 #5
0
 public GameObjectStatus CheckStatus()
 {
     foreach (IGameObject gameObject in this._pending)
     {
         GameObjectStatus objectStatus = gameObject.ObjectStatus;
         if (objectStatus != GameObjectStatus.Ready)
         {
             return(objectStatus);
         }
     }
     return(GameObjectStatus.Ready);
 }
예제 #6
0
        public void OnObjectStatus(int objectID, GameObjectStatus objectStatus)
        {
            IGameObject gameObject;

            if (!this._pending.TryGetValue(objectID, out gameObject))
            {
                return;
            }
            (gameObject as GameObject).PromoteEngineObjectStatus(objectStatus);
            if (objectStatus == GameObjectStatus.Pending)
            {
                return;
            }
            this._pending.Remove(objectID);
        }
예제 #7
0
        public GameObjectStatusChangedEventArg(GameObjectStatus newStatus, GameObject obj)
        {
            Status = newStatus;

            GameObject = obj;
        }