// activate/deactivate the character when going into the store. The GUIManager will manage the preview public void ShowStore(bool show) { // ensure the correct character is used if (!show) { SpawnCharacter(); } InfiniteRunnerStarterPackUtility.ActiveRecursively(character.transform, !show); }
private Vector3 GetCurvePoint(float distance, bool updateMapIndex) { int index = curveDistanceMapIndex; float segmentDistance = platformObject.curveIndexDistanceMap[index]; if (distance > segmentDistance && index < platformObject.curveIndexDistanceMap.Count - 1) { index++; if (updateMapIndex) { curveDistanceMapIndex = index; } } float time = 0; if (index > 0) { float prevDistance = platformObject.curveIndexDistanceMap[index - 1]; time = (distance - prevDistance) / (platformObject.curveIndexDistanceMap[index] - prevDistance); } else { time = distance / platformObject.curveIndexDistanceMap[index]; } time = Mathf.Clamp01(time); Vector3 p0, p1, p2; if (index == 0) { p0 = platformObject.controlPoints[index]; } else { p0 = (platformObject.controlPoints[index] + platformObject.controlPoints[index + 1]) / 2; } p1 = platformObject.controlPoints[index + 1]; if (index + 2 == platformObject.controlPoints.Count - 1) { p2 = platformObject.controlPoints[index + 2]; } else { p2 = (platformObject.controlPoints[index + 1] + platformObject.controlPoints[index + 2]) / 2; } return(platformObject.GetTransform().TransformPoint(InfiniteRunnerStarterPackUtility.CalculateBezierPoint(p0, p1, p2, time))); }
public virtual void Activate() { if (optimizeDeactivation) { for (int i = 0; i < childRenderers.Length; ++i) { childRenderers[i].enabled = transform; } for (int i = 0; i < childColliders.Length; ++i) { childColliders[i].enabled = transform; } enabled = true; } else { InfiniteRunnerStarterPackUtility.ActiveRecursively(thisTransform, true); } }
public virtual void Deactivate() { if (destroyOnDeactivation) { // don't destroy the collision particle effect ParticleSystem[] particleSystems = GetComponentsInChildren <ParticleSystem>(); if (PlayerController.instance) { ParticleSystem collisionParticleSystem = PlayerController.instance.collisionParticleSystem; for (int i = 0; i < particleSystems.Length; ++i) { if (particleSystems[i] == collisionParticleSystem) { particleSystems[i].transform.parent = null; } } } Destroy(gameObject); return; } thisTransform.parent = startParent; infiniteObjectParent = null; if (optimizeDeactivation) { foreach (Renderer child in childRenderers) { child.enabled = false; } foreach (Collider child in childColliders) { child.enabled = false; } enabled = false; } else { InfiniteRunnerStarterPackUtility.ActiveRecursively(thisTransform, false); } }
private void ComputeBezierCurve(bool draw /*if false, will compute length*/) { PlatformObject platformObject = (PlatformObject)target; if (platformObject.controlPoints == null || platformObject.controlPoints.Count < 3) { platformObject.curveLength = 0; EditorUtility.SetDirty(target); return; } if (!draw) { platformObject.curveIndexDistanceMap = new List <float>(); } Vector3 p0, p1, p2; Vector3 q0, q1; float t; float length = 0; Handles.color = Color.white; Vector3 platformPosition = platformObject.transform.position; for (int i = 0; i < platformObject.controlPoints.Count - 2; ++i) { if (i == 0) { p0 = platformObject.controlPoints[i]; } else { p0 = (platformObject.controlPoints[i] + platformObject.controlPoints[i + 1]) / 2; } p1 = platformObject.controlPoints[i + 1]; if (i + 2 == platformObject.controlPoints.Count - 1) { p2 = platformObject.controlPoints[i + 2]; } else { p2 = (platformObject.controlPoints[i + 1] + platformObject.controlPoints[i + 2]) / 2; } t = 0; q0 = InfiniteRunnerStarterPackUtility.CalculateBezierPoint(p0, p1, p2, t); for (int j = 1; j <= StepCount; j++) { t = j / (float)StepCount; q1 = InfiniteRunnerStarterPackUtility.CalculateBezierPoint(p0, p1, p2, t); if (draw) { Handles.DrawLine(platformPosition + q0, platformPosition + q1); } else { length += Vector3.Distance(q0, q1); } q0 = q1; } if (!draw) { platformObject.curveIndexDistanceMap.Add(length); } } if (!draw) { platformObject.curveLength = length; EditorUtility.SetDirty(target); } }