Esempio n. 1
0
        public void Remove(Component component)
        {
            Debug.WarnIf(_componentsToRemove.Contains(component), "You are trying to remove a Component ({0}) that you already removed", component);

            // this may not be a live Component so we have to watch out for if it hasnt been processed yet but it is being removed in the same frame
            if (_componentsToAdd.Contains(component))
            {
                _componentsToAdd.Remove(component);
                return;
            }

            _componentsToRemove.Add(component);
        }
Esempio n. 2
0
        /// <summary>
        /// removes an Entity from the list. All lifecycle methods will be called in the next frame.
        /// </summary>
        /// <param name="entity">Entity.</param>
        public void Remove(Entity entity)
        {
            Debug.WarnIf(_entitiesToRemove.Contains(entity), "You are trying to remove an entity ({0}) that you already removed", entity.Name);

            // guard against adding and then removing an Entity in the same frame
            if (_entitiesToAdd.Contains(entity))
            {
                _entitiesToAdd.Remove(entity);
                return;
            }

            if (!_entitiesToRemove.Contains(entity))
            {
                _entitiesToRemove.Add(entity);
            }
        }
Esempio n. 3
0
        public override void OnAddedToEntity()
        {
            if (_colliderRequiresAutoSizing)
            {
                // we only deal with boxes and circles here
                Insist.IsTrue(this is BoxCollider || this is CircleCollider,
                              "Only box and circle colliders can be created automatically");

                var renderable = Entity.GetComponent <RenderableComponent>();
                Debug.WarnIf(renderable == null,
                             "Collider has no shape and no RenderableComponent. Can't figure out how to size it.");
                if (renderable != null)
                {
                    var renderableBounds = renderable.Bounds;

                    // we need the size * inverse scale here because when we autosize the Collider it needs to be without a scaled Renderable
                    var width  = renderableBounds.Width / Entity.Transform.Scale.X;
                    var height = renderableBounds.Height / Entity.Transform.Scale.Y;

                    // circle colliders need special care with the origin
                    if (this is CircleCollider)
                    {
                        var circleCollider = this as CircleCollider;
                        circleCollider.Radius = Math.Max(width, height) * 0.5f;

                        // fetch the Renderable's center, transfer it to local coordinates and use that as the localOffset of our collider
                        LocalOffset = renderableBounds.Center - Entity.Transform.Position;
                    }
                    else
                    {
                        var boxCollider = this as BoxCollider;
                        boxCollider.Width  = width;
                        boxCollider.Height = height;

                        // fetch the Renderable's center, transfer it to local coordinates and use that as the localOffset of our collider
                        LocalOffset = renderableBounds.Center - Entity.Transform.Position;
                    }
                }
            }

            _isParentEntityAddedToScene = true;
            RegisterColliderWithPhysicsSystem();
        }
Esempio n. 4
0
 public override void OnAddedToEntity()
 {
     _collider = Entity.GetComponent <Collider>();
     Debug.WarnIf(_collider == null, "ProjectileMover has no Collider. ProjectilMover requires a Collider!");
 }
Esempio n. 5
0
 public override void OnAddedToEntity()
 {
     _collider = Entity.GetComponent <Collider>();
     Debug.WarnIf(_collider == null, "ArcadeRigidbody has no Collider. ArcadeRigidbody requires a Collider!");
 }
Esempio n. 6
0
 public override void OnAddedToEntity()
 {
     _collider = Entity.GetComponent <Collider>();
     Debug.WarnIf(_collider == null, "Collision Listener has no collider, CollisionListener requires a Collider to work!");
     base.OnAddedToEntity();
 }