Ejemplo n.º 1
0
        public void UpdateHitBox(IGameEntity gameEntity)
        {
            var position        = gameEntity.Position.Value;
            var rotation        = gameEntity.GetComponent <Orientation>().RotationYaw;
            var hitBoxComponent = GetHitBoxComponent(gameEntity.EntityKey);

            if (hitBoxComponent != null)
            {
                hitBoxComponent.HitBoxGameObject.transform.position = position;
                hitBoxComponent.HitBoxGameObject.transform.rotation = rotation;

                var playerEntity = GetPlayerEntity(gameEntity);

                playerEntity.thirdPersonAnimator.UnityAnimator.cullingMode = AnimatorCullingMode.AlwaysAnimate;
                var provider = new HitBoxTransformProvider(playerEntity.thirdPersonModel.Value, position, rotation);
                HitBoxGameObjectUpdater.Update(hitBoxComponent.HitBoxGameObject.transform, provider);
                playerEntity.thirdPersonAnimator.UnityAnimator.cullingMode = AnimatorCullingMode.CullUpdateTransforms;

                if (_logger.IsDebugEnabled)
                {
                    StringBuilder s = new StringBuilder();
                    hitBoxComponent.HitBoxGameObject.transform.Recursively(t => s.Append("[n " + t.name + ", p " + t.position.ToStringExt() + ", r " + t.rotation.ToStringExt() + "]"));
                    _logger.DebugFormat("hitbox pos {0}, rot {1}, transforms {2}, ", position, rotation, s);
                }
            }
        }
Ejemplo n.º 2
0
        public string GetCollidersDebugDatas(EntityKey entityKey)
        {
            var entity = _playerContext.GetEntityWithEntityKey(entityKey);

            if (entity != null && entity.hasPosition && entity.hasHitBox)
            {
                HitBoxTransformProvider provider = SingletonManager.Get <HitBoxTransformProviderCache>().GetProvider(entity.thirdPersonModel.Value);
                if (provider != null)
                {
                    _stringBuilder.Length = 0;
                    var colliders = provider.GetHitBoxColliders();
                    foreach (KeyValuePair <string, Collider> keyPair in colliders)
                    {
                        _stringBuilder.AppendFormat("<{0}=>trans:{1}>\n", keyPair.Key,
                                                    keyPair.Value.transform.position);
                        // _stringBuilder.AppendFormat("Key:{0},ctrans:{1},bounds:{2}", keyPair.Key,
                        // keyPair.Value.transform.position,keyPair.Value.bounds.ToString("f3"));
                    }

                    // var list = GetCollidersTransform(entityKey);
                    // foreach (var val in list)
                    // {
                    //     _stringBuilder.AppendFormat("trans:{0}", val.position);
                    // }
                    return(_stringBuilder.ToString());
                }
            }
            return(string.Empty);
        }
Ejemplo n.º 3
0
 public string GetCollidersDebugDatas(PlayerEntity entity)
 {
     if (entity.hasPosition && entity.hasHitBox)
     {
         HitBoxTransformProvider provider = SingletonManager.Get <HitBoxTransformProviderCache>().GetProvider(entity.thirdPersonModel.Value);
         if (provider != null)
         {
             stringBuilder.Length = 0;
             var colliders = provider.GetHitBoxColliders();
             foreach (KeyValuePair <string, Collider> keyPair in colliders)
             {
                 stringBuilder.AppendFormat("<{0}=>trans:{1}>\n", keyPair.Key,
                                            keyPair.Value.transform.position);
             }
             return(stringBuilder.ToString());
         }
     }
     return(string.Empty);
 }
Ejemplo n.º 4
0
        public static void InitHitBoxComponent(EntityKey entityKey, IHitBox playerEntity,
                                               HitBoxTransformProvider provider)
        {
            provider.SetActive(false);
            playerEntity.ReplaceHitBox(-1, new BoundingSphere(provider.BoundSpherePosition(), provider.BoundSphereRadius()),
                                       null, false);
            var trans = provider.GetHitBoxTransforms();

            foreach (var item in trans)
            {
                var comp = item.Value.gameObject.GetComponent <HitBoxOwnerComponent>();
                if (comp == null)
                {
                    comp = item.Value.gameObject.AddComponent <HitBoxOwnerComponent>();
                }
                comp.OwnerEntityKey = entityKey;
            }
            provider.FlushLayerOfHitBox();
        }