コード例 #1
0
ファイル: Touch.cs プロジェクト: bmjoy/voxel-editor
    private void CollisionStart(Collider c, Vector3 relativeVelocity)
    {
        if (relativeVelocity == Vector3.zero)
        {
            Rigidbody thisRigidbody = GetComponent <Rigidbody>();
            if (c.attachedRigidbody != null && thisRigidbody != null)
            {
                // TODO: should directions be compared? maybe project vectors?
                relativeVelocity = c.attachedRigidbody.velocity - thisRigidbody.velocity;
            }
        }

        EntityComponent entity = EntityComponent.FindEntityComponent(c);

        if (entity != null && entity != ignoreEntity &&
            filter.EntityMatches(entity) && relativeVelocity.magnitude >= minVelocity &&
            direction.MatchesDirection(entity.transform.position, relativeVelocity) &&
            !rejectedColliders.Contains(c))
        {
            touchingColliders.Add(c);
            touchingEntities.Add(entity);
            AddActivator(entity);
        }
        else
        {
            // could contain multiple instances if touching multiple voxels
            rejectedColliders.Add(c);
        }
    }
コード例 #2
0
ファイル: Touch.cs プロジェクト: kustomzone/voxel-editor
 private void CollisionEnd(Collider c)
 {
     if (!rejectedColliders.Remove(c))
     {
         touchingColliders.Remove(c);
         if (!touchingColliders.Contains(c)) // could have multiple instances
         {
             RemoveActivator(EntityComponent.FindEntityComponent(c));
         }
     }
 }