Beispiel #1
0
        private bool SelectTrigger()
        {
            var position  = MyAPIGateway.Session.Camera.Position;
            var minLength = double.MaxValue;

            if (m_selectedTrigger != null)
            {
                m_selectedTrigger.CustomDebugColor = Color.Red;
            }

            foreach (var trigger in m_queriedTriggers)
            {
                var length = (trigger.Center - position).LengthSquared();
                if (length < minLength)
                {
                    minLength         = length;
                    m_selectedTrigger = trigger;
                }
            }

            if (Math.Abs(minLength - double.MaxValue) < double.Epsilon)
            {
                m_selectedTrigger = null;
            }

            if (m_selectedTrigger != null)
            {
                m_selectedTrigger.CustomDebugColor = Color.Yellow;
            }

            return(true);
        }
Beispiel #2
0
        private void AttachTriggerOnClick(MyGuiControlButton myGuiControlButton)
        {
            if (m_transformSys.ControlledEntity == null)
            {
                return;
            }

            var selectedEntity = m_transformSys.ControlledEntity;
            var dialog         = new ValueGetScreenWithCaption("Entity Spawn on: " + m_transformSys.ControlledEntity.DisplayName,
                                                               "",
                                                               delegate(string text)
            {
                var areaTrigger = new MyAreaTriggerComponent(text);
                m_triggerManipulator.SelectedTrigger = areaTrigger;

                if (!selectedEntity.Components.Contains(typeof(MyTriggerAggregate)))
                {
                    // Add agregate if its missing
                    selectedEntity.Components.Add(typeof(MyTriggerAggregate), new MyTriggerAggregate());
                }
                // add trigger it self
                selectedEntity.Components.Get <MyTriggerAggregate>().AddComponent(m_triggerManipulator.SelectedTrigger);
                // Init trigger dimensions
                areaTrigger.Center = MyAPIGateway.Session.Camera.Position;
                areaTrigger.Radius = 2;
                // Selected color
                areaTrigger.CustomDebugColor = Color.Yellow;

                return(true);
            });

            MyGuiSandbox.AddScreen(dialog);
        }
Beispiel #3
0
        public bool DeleteTrigger()
        {
            if (m_selectedTrigger == null)
            {
                return(false);
            }

            if (m_selectedTrigger.Entity.DisplayName == "TriggerHolder")
            {
                m_selectedTrigger.Entity.Close();
            }
            else
            {
                m_selectedTrigger.Entity.Components.Remove(typeof(MyAreaTriggerComponent), m_selectedTrigger);
            }

            m_selectedTrigger = null;

            return(true);
        }
Beispiel #4
0
        private bool TryPutTriggerOnEntity()
        {
            var worldMatrix = MyAPIGateway.Session.Camera.WorldMatrix;
            List <MyPhysics.HitInfo> hits = new List <MyPhysics.HitInfo>();

            MyPhysics.CastRay(worldMatrix.Translation, worldMatrix.Translation + worldMatrix.Forward * 30, hits, 15);

            foreach (var hitInfo in hits)
            {
                var body = (MyPhysicsBody)hitInfo.HkHitInfo.Body.UserObject;
                if (body.Entity is MyCubeGrid)
                {
                    var rayEntity = (MyEntity)body.Entity;
                    var dialog    = new ValueGetScreenWithCaption("Entity Spawn on: " + rayEntity.DisplayName, "", delegate(string text)
                    {
                        if (m_selectedTrigger != null)
                        {
                            m_selectedTrigger.CustomDebugColor = Color.Red;
                        }

                        m_selectedTrigger = new MyAreaTriggerComponent(text);
                        if (!rayEntity.Components.Contains(typeof(MyTriggerAggregate)))
                        {
                            rayEntity.Components.Add(typeof(MyTriggerAggregate), new MyTriggerAggregate());
                        }
                        rayEntity.Components.Get <MyTriggerAggregate>().AddComponent(m_selectedTrigger);
                        m_selectedTrigger.Center = MyAPIGateway.Session.Camera.Position;
                        m_selectedTrigger.Radius = 2;

                        m_selectedTrigger.CustomDebugColor = Color.Yellow;

                        return(true);
                    });
                    MyGuiSandbox.AddScreen(dialog);
                    return(true);
                }
            }
            return(false);
        }
Beispiel #5
0
        public bool SpawnTrigger()
        {
            var dialog = new ValueGetScreenWithCaption("Spawn new Trigger", "", delegate(string text)
            {
                var trigger    = new MyAreaTriggerComponent(text);
                var entity     = new MyEntity();
                trigger.Radius = 2;
                trigger.Center = MyAPIGateway.Session.Camera.Position;
                entity.PositionComp.SetPosition(MyAPIGateway.Session.Camera.Position);
                entity.PositionComp.LocalVolume = new BoundingSphere(Vector3.Zero, 0.5f);
                entity.EntityId = MyEntityIdentifier.AllocateId();
                entity.Components.Remove <MyPhysicsComponentBase>();
                entity.Components.Remove <MyRenderComponentBase>();
                entity.DisplayName = "TriggerHolder";
                MyEntities.Add(entity);

                if (!entity.Components.Contains(typeof(MyTriggerAggregate)))
                {
                    entity.Components.Add(typeof(MyTriggerAggregate), new MyTriggerAggregate());
                }
                entity.Components.Get <MyTriggerAggregate>().AddComponent(trigger);


                if (m_selectedTrigger != null)
                {
                    m_selectedTrigger.CustomDebugColor = Color.Red;
                }
                ;

                m_selectedTrigger = trigger;
                m_selectedTrigger.CustomDebugColor = Color.Yellow;
                return(true);
            });

            MyGuiSandbox.AddScreen(dialog);

            return(true);
        }