Exemple #1
0
        protected override void Update()
        {
            base.Update();
            for (int i = 0; i < this._collisions.Count; i++)
            {
                CollisionEntry entry = this._collisions[i];
                if (entry != null)
                {
                    entry.timer -= Time.deltaTime * this.TimeScale;
                    if ((entry.collider == null) || (entry.timer <= 0f))
                    {
                        Singleton <EffectManager> .Instance.SetDestroyIndexedEffectPattern(entry.patternIx);

                        this._collisions[i] = null;
                    }
                    else
                    {
                        for (int j = 0; j < entry.effectLs.Count; j++)
                        {
                            entry.effectLs[j].transform.position = this.GetCollisoinPointOnWall(entry.collider.transform);
                            entry.effectLs[j].transform.forward  = base.transform.forward;
                        }
                    }
                }
            }
        }
Exemple #2
0
        private void CreateOrRefreshCollisionEntry(Collision collision)
        {
            for (int i = 0; i < this._collisions.Count; i++)
            {
                CollisionEntry entry = this._collisions[i];
                if ((entry != null) && (entry.collider == collision.collider))
                {
                    entry.timer = 0.5f;
                    return;
                }
            }
            int patternIx = Singleton <EffectManager> .Instance.CreateIndexedEntityEffectPattern(this.CollisionEffectPattern, this.GetCollisoinPointOnWall(collision.collider.transform), base.transform.forward, Vector3.one, this);

            List <MonoEffect> indexedEntityEffectPattern = Singleton <EffectManager> .Instance.GetIndexedEntityEffectPattern(patternIx);

            int            num3   = this._collisions.SeekAddPosition <CollisionEntry>();
            CollisionEntry entry2 = new CollisionEntry {
                collider  = collision.collider,
                timer     = 0.5f,
                patternIx = patternIx,
                effectLs  = indexedEntityEffectPattern
            };

            this._collisions[num3] = entry2;
        }
Exemple #3
0
        /**
         * Creates a child rule to this node by applying the rule to its current entries
         * Open to method name suggestions.
         */
        internal Node ChildByRule(Rule rule)
        {
            List <CollisionEntry> passed = new List <CollisionEntry>();
            List <CollisionEntry> failed = new List <CollisionEntry>();

            CollisionEntry.EvaluateEntries(currentEntries, failed, passed, rule);

            List <Rule> childRules = new List <Rule>(usedRules)
            {
                rule
            };

            headersToIgnore.Add(rule.v1);
            Node child = new Node(passed, depth + 1, childRules, this, headersToIgnore);

            if (children == null)
            {
                children = new List <Node>()
                {
                    child
                }
            }
            ;
            else
            {
                children.Add(child);
            }
            return(child);
        }
Exemple #4
0
        public void createChildrenFromRule(Rule rule)
        {
            List <CollisionEntry> failed = new List <CollisionEntry>();
            List <CollisionEntry> passed = new List <CollisionEntry>();

            CollisionEntry.EvaluateEntries(currentEntries, failed, passed, rule);
            if (failed.Count < 1)
            {
                return;
            }
            currentEntries = null;
            Rule        failedRule  = rule.Invert();
            List <Rule> failedRules = new List <Rule>(usedRules)
            {
                failedRule
            };
            List <Rule> passedRules = new List <Rule>(usedRules)
            {
                rule
            };

            children = new List <Node>();
            Node c1 = new Node(failed, depth + 1, failedRules, this, this.headersToIgnore);
            Node c2 = new Node(passed, depth + 1, passedRules, this, this.headersToIgnore);

            children.Add(c1); children.Add(c2);
            C4p5.nextIterationNodes.Add(c1);
            C4p5.nextIterationNodes.Add(c2);
        }
Exemple #5
0
        /// <summary>
        /// Add a member to the group
        /// </summary>
        /// <param name="collider">Collider used to test the collision</param>
        /// <param name="action">Action to perform when collision occurs. May be null.</param>
        public void Add(Collider collider, OnCollision action)
        {
            CollisionEntry entry = new CollisionEntry();

            entry.collider    = collider;
            entry.onCollision = action;

            m_entries.Add(entry);
            collider.m_groups.Add(this);
        }
Exemple #6
0
        internal void ApplyAllRules(List <Rule> rules)
        {
            List <CollisionEntry> passed;
            List <CollisionEntry> failed;

            foreach (Rule rule in rules)
            {
                headersToIgnore.Add(rule.v1);
                passed = new List <CollisionEntry>();
                failed = new List <CollisionEntry>();
                //Console.WriteLine("Applying rule " + rule.ToString());
                CollisionEntry.EvaluateEntries(currentEntries, failed, passed, rule);
                currentEntries = passed;
            }
        }
Exemple #7
0
        public void add(GameEntity instance)
        {
            CollisionEntry entry = new CollisionEntry();
              entry.owner = instance;

              if(instance is Player){
            entry.type = CollisionEntityType.Player;
              } else if (instance is Cell){
            entry.type = CollisionEntityType.Cell;
              } else if (instance is WinSection || instance is TrashCan){
            entry.type = CollisionEntityType.Sensor;
              }

              entry.center = instance.GetCenter;
              entry.radius = instance.GetRadius;

              collisionEntries.Add(entry);
        }
Exemple #8
0
        public void createChildrenFromEntropy()
        {
            if (C4p5.Header_To_Predict == -1)
            {
                throw new Exception("You forgot to se the Header to predict");
            }
            //If they are all the same class we are done
            if (Helper.AllSame(currentEntries, C4p5.Header_To_Predict))
            {
                return;
            }

            int Header_To_Split = Helper.AttributeWithBestInfoGain(currentEntries, C4p5.Header_To_Predict);

            int[] values = Helper.GetValuesOfHeaders(currentEntries)[Header_To_Split];

            children = new List <Node>();
            foreach (int v in values)
            {
                Rule rule = new Rule(Header_To_Split, v, HValType.HeaderCompVal, Operator.Equals);
                List <CollisionEntry> passed = new List <CollisionEntry>();
                List <CollisionEntry> failed = new List <CollisionEntry>();
                CollisionEntry.EvaluateEntries(currentEntries, failed, passed, rule);
                if (passed.Count < 1)
                {
                    continue;
                }
                List <Rule> passedRules = new List <Rule>(usedRules)
                {
                    rule
                };
                Node n = new Node(passed, depth + 1, passedRules, this, this.headersToIgnore);
                children.Add(n);
                C4p5.nextIterationNodes.Add(n);
            }
            if (children.Count == 0)
            {
                children = null;
            }
            return;
        }
        /// <summary>
        /// Add a member to the group
        /// </summary>
        /// <param name="collider">Collider used to test the collision</param>
        /// <param name="action">Action to perform when collision occurs. May be null.</param>
        public void Add(Collider collider, OnCollision action)
        {
            CollisionEntry entry = new CollisionEntry();
            entry.collider = collider;
            entry.onCollision = action;

            m_entries.Add(entry);
            collider.m_groups.Add(this);
        }
Exemple #10
0
 public void Add(CollisionEntry entry)
 {
     List<CollisionEntry> entries = typed_entries [(int)entry.type];
     entries.Add (entry);
 }
Exemple #11
0
 public void Add(CollisionEntityType type, GameEntity owner, GetCenterDelegate center, GetRadiusDelegate radius)
 {
     CollisionEntry entry = new CollisionEntry () { type = type, owner = owner, center = center, radius = radius };
     List<CollisionEntry> entries = typed_entries [(int)type];
     entries.Add (entry);
 }
 public void Add(CollisionEntityType type, GameEntity owner, Node collider, GetCenterDelegate center, GetRadiusDelegate radius)
 {
     CollisionEntry entry = new CollisionEntry() { type = type, owner = owner, collider = collider, center = center, radius = radius };
     Add (entry);
 }