void Start() { Coverflow[] coverflows = transform.GetComponentsInChildren <Coverflow>(); for (int i = 0; i < coverflows.Length; i++) { mCategoryIcons.Add(coverflows[i]); } mAnimRotation = GetComponent <AnimRotation>(); mAnimRotation.setListener(this); mIntialRotation = transform.localEulerAngles; InputController.addInputListener(this); }
private void SetupAnimation() { if (!SpatialUnderstandingManager.Instance.AllowSpatialUnderstanding) { return; } // Calculate the forward distance for the animation start point Vector3 rayPos = CameraCache.Main.transform.position; Vector3 rayVec = CameraCache.Main.transform.forward * InitialPositionForwardMaxDistance; IntPtr raycastResultPtr = SpatialUnderstandingManager.Instance.UnderstandingDLL.GetStaticRaycastResultPtr(); SpatialUnderstandingDll.Imports.PlayspaceRaycast( rayPos.x, rayPos.y, rayPos.z, rayVec.x, rayVec.y, rayVec.z, raycastResultPtr); SpatialUnderstandingDll.Imports.RaycastResult rayCastResult = SpatialUnderstandingManager.Instance.UnderstandingDLL.GetStaticRaycastResult(); Vector3 animOrigin = (rayCastResult.SurfaceType != SpatialUnderstandingDll.Imports.RaycastResult.SurfaceTypes.Invalid) ? rayPos + rayVec.normalized * Mathf.Max((rayCastResult.IntersectPoint - rayPos).magnitude - 0.3f, 0.0f) : rayPos + rayVec * InitialPositionForwardMaxDistance; // Create the animation (starting it on the ground in front of the camera SpatialUnderstandingDll.Imports.QueryPlayspaceAlignment(SpatialUnderstandingManager.Instance.UnderstandingDLL.GetStaticPlayspaceAlignmentPtr()); SpatialUnderstandingDll.Imports.PlayspaceAlignment alignment = SpatialUnderstandingManager.Instance.UnderstandingDLL.GetStaticPlayspaceAlignment(); AnimPosition.AddKey(TimeDelay + 0.0f, new Vector3(animOrigin.x, alignment.FloorYValue, animOrigin.z)); AnimPosition.AddKey(TimeDelay + AnimationTime * 0.5f, new Vector3(animOrigin.x, alignment.FloorYValue + 1.25f, animOrigin.z)); AnimPosition.AddKey(TimeDelay + AnimationTime * 0.6f, new Vector3(animOrigin.x, alignment.FloorYValue + 1.0f, animOrigin.z)); AnimPosition.AddKey(TimeDelay + AnimationTime * 0.95f, Center); AnimPosition.AddKey(TimeDelay + AnimationTime * 1.0f, Center); AnimScale.AddKey(TimeDelay + 0.0f, 0.0f); AnimScale.AddKey(TimeDelay + AnimationTime * 0.5f, 0.5f); AnimScale.AddKey(TimeDelay + AnimationTime * 0.8f, 1.0f); AnimScale.AddKey(TimeDelay + AnimationTime * 1.0f, 1.0f); AnimRotation.AddKey(TimeDelay + 0.0f, -1.5f); AnimRotation.AddKey(TimeDelay + AnimationTime * 0.2f, -0.5f); AnimRotation.AddKey(TimeDelay + AnimationTime * 0.9f, 0.0f); AnimRotation.AddKey(TimeDelay + AnimationTime * 1.0f, 0.0f); IsAnimationSetup = true; }