public void Die() { DifficultyManager.instance.SetAvgLifeTime(Time.time - spawnTime); ParticleManager.instance.SpawnEnemyExplodeParticle(transform.position); AudioManager.instance.PlaySoundWithRandomPitch(deathSounds[Random.Range(0, deathSounds.Length)], 0.75f, 1.25f); DropExperience(); DropHealth(); SplineTracer tracer = GetComponent <SplineTracer>(); if (tracer != null) //is this enemy using a spline? { tracer.RemoveFromTrack(); //remove this enemy from the list in the splinetracer } if (poolBehaviour != null) //is this enemy pooled? { poolBehaviour.DisableInPool(); //disable this enemy if (!ignoreEnemyCount) //does this enemy count toward the wave's enemy count? { SpawnManager.instance.DecreaseEnemyCount(1); //decrease enemy count StatManager.instance.IncreaseKillCount(); //increase kill count } } StatManager.instance.IncreaseScore((int)scoreValue); }
public void RemoveTracer(SplineTracer tracer) { tracers.Remove(tracer); if (tracers.Count == 0 && destroy) { Destroy(this.gameObject); } }
void Start() { tracer = GetComponent <SplineTracer>(); //Subscribe to the onNode event to receive junction information automatically when a Node is passed tracer.onNode += OnJunction; //Subscribe to the onMotionApplied event so that we can immediately update the wagons' positions once the engine's position is set tracer.onMotionApplied += OnMotionApplied; }
public void Init(SplineTracer tracer, DistanceReceiver receiver, float totalLength) { rcv = receiver; length = totalLength; target = tracer; titleContent = new GUIContent("Set Distance"); minSize = maxSize = new Vector2(240, 90); }
private void Awake() { tracer = GetComponent <SplineTracer>(); //Wagon compoenent that is attached to the train engine and is marked as "isEngine" will //run a recursive setup for the rest of the wagons if (isEngine) { SetupRecursively(null, new SplineSegment(tracer.spline, -1, tracer.direction)); } }
protected override void OnEnable() { base.OnEnable(); SplineTracer tracer = (SplineTracer)target; motionEditor = new TransformModuleEditor(tracer, this, tracer.motion); tracers = new SplineTracer[targets.Length]; for (int i = 0; i < tracers.Length; i++) { tracers[i] = (SplineTracer)targets[i]; } }
protected void DrawResult(SplineSample result) { SplineTracer tracer = (SplineTracer)target; Handles.color = Color.white; Handles.DrawLine(tracer.transform.position, result.position); SplineEditorHandles.DrawSolidSphere(result.position, HandleUtility.GetHandleSize(result.position) * 0.2f); Handles.color = Color.blue; Handles.DrawLine(result.position, result.position + result.forward * HandleUtility.GetHandleSize(result.position) * 0.5f); Handles.color = Color.green; Handles.DrawLine(result.position, result.position + result.up * HandleUtility.GetHandleSize(result.position) * 0.5f); Handles.color = Color.red; Handles.DrawLine(result.position, result.position + result.right * HandleUtility.GetHandleSize(result.position) * 0.5f); Handles.color = Color.white; }
public void AddTracer(SplineTracer tracer) { tracers.Add(tracer); }
protected override void BodyGUI() { base.BodyGUI(); EditorGUILayout.LabelField("Tracing", EditorStyles.boldLabel); SplineTracer tracer = (SplineTracer)target; serializedObject.Update(); SerializedProperty useTriggers = serializedObject.FindProperty("useTriggers"); SerializedProperty triggerGroup = serializedObject.FindProperty("triggerGroup"); SerializedProperty direction = serializedObject.FindProperty("_direction"); SerializedProperty physicsMode = serializedObject.FindProperty("_physicsMode"); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(useTriggers); if (useTriggers.boolValue) { EditorGUILayout.PropertyField(triggerGroup); } EditorGUILayout.PropertyField(direction, new GUIContent("Direction")); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(physicsMode, new GUIContent("Physics Mode")); if (EditorGUI.EndChangeCheck()) { for (int i = 0; i < tracers.Length; i++) { tracers[i].EditorAwake(); } } if (tracer.physicsMode == SplineTracer.PhysicsMode.Rigidbody) { Rigidbody rb = tracer.GetComponent <Rigidbody>(); if (rb == null) { EditorGUILayout.HelpBox("Assign a Rigidbody component.", MessageType.Error); } else if (rb.interpolation == RigidbodyInterpolation.None && tracer.updateMethod != SplineUser.UpdateMethod.FixedUpdate) { EditorGUILayout.HelpBox("Switch to FixedUpdate mode to ensure smooth update for non-interpolated rigidbodies", MessageType.Warning); } } else if (tracer.physicsMode == SplineTracer.PhysicsMode.Rigidbody2D) { Rigidbody2D rb = tracer.GetComponent <Rigidbody2D>(); if (rb == null) { EditorGUILayout.HelpBox("Assign a Rigidbody2D component.", MessageType.Error); } else if (rb.interpolation == RigidbodyInterpolation2D.None && tracer.updateMethod != SplineUser.UpdateMethod.FixedUpdate) { EditorGUILayout.HelpBox("Switch to FixedUpdate mode to ensure smooth update for non-interpolated rigidbodies", MessageType.Warning); } } if (tracers.Length == 1) { motionEditor.DrawInspector(); cameraFoldout = EditorGUILayout.Foldout(cameraFoldout, "Camera preview"); if (cameraFoldout) { if (cam == null) { cam = tracer.GetComponentInChildren <Camera>(); } if (cam != null) { if (rt == null || rt.width != GetRTWidth() || rt.height != GetRTHeight()) { CreateRT(); } GUILayout.Box("", GUILayout.Width(rt.width), GUILayout.Height(rt.height)); RenderTexture prevTarget = cam.targetTexture; RenderTexture prevActive = RenderTexture.active; CameraClearFlags lastFlags = cam.clearFlags; Color lastColor = cam.backgroundColor; cam.targetTexture = rt; cam.clearFlags = CameraClearFlags.Color; cam.backgroundColor = Color.black; cam.Render(); RenderTexture.active = rt; renderCanvas.SetPixels(new Color[renderCanvas.width * renderCanvas.height]); renderCanvas.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0); renderCanvas.Apply(); RenderTexture.active = prevActive; cam.targetTexture = prevTarget; cam.clearFlags = lastFlags; cam.backgroundColor = lastColor; GUI.DrawTexture(GUILayoutUtility.GetLastRect(), renderCanvas, ScaleMode.StretchToFill); } else { EditorGUILayout.HelpBox("There is no camera attached to the selected object or its children.", MessageType.Info); } } } if (EditorGUI.EndChangeCheck()) { serializedObject.ApplyModifiedProperties(); for (int i = 0; i < tracers.Length; i++) { tracers[i].Rebuild(); } } }
protected override void OnSceneGUI() { base.OnSceneGUI(); SplineTracer tracer = (SplineTracer)target; }