protected virtual void OnObstacleExited(int objectId)
 {
     if (CollisionNormalStateMap.ContainsKey(objectId))
     {
         CollisionNormalFlag &= ~CollisionNormalStateMap[objectId];
         CollisionNormalStateMap.Remove(objectId);
     }
 }
 protected virtual void OnObstacleCollided(
     int objectId,
     CollisionNormalFlags normalFlag
     )
 {
     if (!CollisionNormalStateMap.ContainsKey(objectId))
     {
         CollisionNormalFlag |= normalFlag;
         CollisionNormalStateMap.Add(objectId, normalFlag);
     }
 }