Ejemplo n.º 1
0
        private void ApplyRotation(bool instantRotation)
        {
            currentRotation = newWorldTileSurface.SurfaceRotation;

            Vector3 rotationEuler =
                PlayerSurfaceRotationConverter.
                SurfaceRotationToWorldRotation(newWorldTileSurface.SurfaceRotation);

            playerRotationHelper.transform.rotation = Quaternion.identity;

            playerRotationHelper.Rotate(rotationEuler, Space.Self);

            if (instantRotation)
            {
                player.transform.localRotation = playerRotationHelper.transform.localRotation;
            }
            else
            {
                transform.DOLocalRotateQuaternion(playerRotationHelper.transform.localRotation, smoothRotationTime).SetEase(Ease.OutBack);
            }

            Log("Applied rotation on surface: " + newWorldTileSurface.SurfaceRotation);

            Log("And the local rotation is: " + playerRotationHelper.transform.localEulerAngles);
        }
        /// <summary>
        /// The given value is based on local rotation.
        /// </summary>
        /// <param name="surfaceRotation"></param>
        /// <returns></returns>
        public static Vector3 SurfaceRotationToWorldRotation(SurfaceRotation surfaceRotation)
        {
            // Start rotation, as if standing on top of a world
            Vector3 rotation = Vector3.zero;

            switch (surfaceRotation)
            {
            case SurfaceRotation.Left:
                rotation.z += 90f;
                break;

            case SurfaceRotation.Right:
                rotation.z -= 90f;
                break;

            case SurfaceRotation.Bottom:
                rotation.z += 180f;
                break;

            case SurfaceRotation.Top:
                break;

            case SurfaceRotation.Front:
                rotation.x -= 90f;
                break;

            case SurfaceRotation.Rear:
                rotation.x += 90f;
                break;
            }

            return(rotation);
        }
Ejemplo n.º 3
0
        public void Add(SurfaceRotation surfaceRotation)
        {
            if (surfaceRotations.Contains(surfaceRotation))
            {
                return;
            }

            surfaceRotations.Add(surfaceRotation);
        }
Ejemplo n.º 4
0
        public MinicapAdapter(DeviceAdapter device, MinicapClient client)
        {
            Device = device;

            Client = client;

            _Rotation = SurfaceRotation.Rotation0;

            _ExecutableDirectory = AppDomain.CurrentDomain.BaseDirectory;
        }
Ejemplo n.º 5
0
		public void Setup(SurfaceRotation walkableSide, float offset)
		{
			this.surfaceRotation = walkableSide;
			
			Vector3 position = transform.parent.position;

			Vector3 rotation = transform.parent.localRotation.eulerAngles;

			switch (walkableSide)
			{
				case SurfaceRotation.Left:
					position.x -= offset;
					rotation.y += 90f;
					break;

				case SurfaceRotation.Right:
					position.x += offset;
					rotation.y -= 90f;
					break;

				case SurfaceRotation.Bottom:
					position.y -= offset;
					rotation.x -= 90f;
					break;

				case SurfaceRotation.Top:
					position.y += offset;
					rotation.x += 90f;
					break;

				case SurfaceRotation.Front:
					position.z -= offset;
					break;

				case SurfaceRotation.Rear:
					position.z += offset;
					rotation.y += 180f;
					break;
			}

			transform.position = position;

			transform.localRotation = Quaternion.Euler(rotation);
		}
Ejemplo n.º 6
0
        private void CreateWalkablePlanes()
        {
            // First destroy old walkable planes
            DestroyWalkablePlanes();

            for (int i = 0; i < surfaceRotations.SurfaceRotationList.Count; i++)
            {
                float worldTileHalfSize = GetComponent <Renderer>().bounds.size.x / 2f;

                float offset = worldTileHalfSize + walkablePlaneDistance;

                SurfaceRotation surfaceRotation = surfaceRotations.SurfaceRotationList[i];

                WorldTileSurface walkablePlane = Instantiate(GetWorldTileSurfacePrefab());

                walkablePlane.transform.parent = transform;

                walkablePlane.Setup(surfaceRotation, offset);

                surfaces.Add(walkablePlane);
            }
        }