private void CreateObjectAlias()
        {
            objectEntity    = OriginalObject.GetComponentInParent <EntityData>();
            anchorFace      = objectEntity.anchorSide;
            coloredMaterial = RenderingUtility.CreateColoredMaterial(collisionPositionColor);
            aliasObject     = Instantiate(OriginalObject);
            PhysicsUtility.SetColliderConvex(aliasObject, true);
            originalHeadingOffset          = aliasObject.transform.eulerAngles.y;
            aliasObject.transform.rotation = Quaternion.identity;
            Bounds bounds = PhysicsUtility.GetColliderBounds(aliasObject);

            aliasObjBoundAnchor = MathUtility.GetBoundsFaceCenter(bounds, anchorFace) - aliasObject.transform.position;
            aliasObject.transform.SetParent(transform);
            currentHeadingOffset = 0;// aliasObject.transform.eulerAngles.y;
            collisionOffset      = 0;
            RenderingUtility.ChangeLayerRecursive(aliasObject, "Ignore Raycast");
            RenderingUtility.BackupMaterials(aliasObject, originalMaterialMap);
            RenderingUtility.ReplaceMaterials(aliasObject, coloredMaterial);
            collisionState                      = aliasObject.AddComponent <CollisionState>();
            aliasObjectRigidbody                = aliasObject.AddComponent <Rigidbody>();
            aliasObjectRigidbody.useGravity     = false;
            aliasObjectRigidbody.freezeRotation = true;
            aliasObjectRigidbody.drag           = 1000;
            //rb.isKinematic = true;
        }
예제 #2
0
 public virtual bool IsValid(GameObject aliasObject, EntityData entityData, EntityData bearingSurfaceEntity, EntityData collidingEntity, CollisionState collisionState)
 {
     if (!CanBeLeantAgainst(entityData, bearingSurfaceEntity) ||
         !CanCollideWith(entityData, bearingSurfaceEntity, collidingEntity, collisionState))
     {
         return(false);
     }
     // other tests...
     return(true);
 }
예제 #3
0
 public virtual bool CanCollideWith(EntityData entityData, EntityData bearingSurfaceEntity, EntityData collidingEntity, CollisionState collisionState)
 {
     return(!collisionState.IsColliding || collidingEntity == bearingSurfaceEntity);
 }