void Start() { sr = gameObject.GetComponent <SpriteRenderer>(); invulnerabilityColor.a = 0.75f; particleManager = FindObjectOfType <ParticleSystemsManager>(); wiperManager = FindObjectOfType <WiperManager>(); }
void Start() { roadsManager = GetComponent <RoadsManager>(); roadsManager.StartSpawning(); wiperManager = GetComponent <WiperManager>(); tutorialManager = GetComponent <TutorialManager>(); warningManager = FindObjectOfType <WarningManager>(); particleManager = FindObjectOfType <ParticleSystemsManager>(); }
//TODO: DO THE TWIST!!! FLIP A READ AND WRITE BUFFER void Start() { //Application.targetFrameRate = 60; ParticleSystemsManager.inst = this; particleSystemProperties.AddRange(this.gameObject.GetComponents <PartSysProp>()); int sqrtCount = (int)Mathf.Sqrt(maxParticleCount); DataBuffer[READ] = new ComputeBuffer(maxParticleCount, ParticleData.stride, ComputeBufferType.Default); DataBuffer[WRITE] = new ComputeBuffer(maxParticleCount, ParticleData.stride, ComputeBufferType.Default); ArgBufferTrue = new ComputeBuffer(4, sizeof(uint), ComputeBufferType.DrawIndirect); AppendRenderBuffer = new ComputeBuffer(maxParticleCount, ParticleData.stride, ComputeBufferType.Append); ParticlePropertyBuffer = new ComputeBuffer(maxParticleTypeCount, PartSysPropComputeModel.stride, ComputeBufferType.Default); PartSysPropComputeModel[] propList = new PartSysPropComputeModel[maxParticleTypeCount]; for (int j = 0; j < particleSystemProperties.Count; j++) { propList[j] = particleSystemProperties[j].toCompute; } ParticlePropertyBuffer.SetData(propList); ParticleData[] pdatas = new ParticleData[maxParticleCount]; int IDitterator = 0; for (int i = 0; i < maxParticleCount; i++) { pdatas[i].typeIDnum = -1; } DataBuffer[READ].SetData(pdatas); DataBuffer[WRITE].SetData(pdatas); cShade.SetBuffer(cShade.FindKernel("CSAddNewParticles"), "RaddPartData", DataBuffer[READ]); cShade.SetBuffer(cShade.FindKernel("CSAddNewParticles"), "WaddPartData", DataBuffer[WRITE]); cShade.SetBuffer(cShade.FindKernel("CSAddNewParticles"), "RaddPartSysProperties", ParticlePropertyBuffer); cShade.SetInt("totalMaxParticles", maxParticleCount); cShade.SetInt("typeIDtoAdd", 1); cShade.Dispatch(cShade.FindKernel("CSAddNewParticles"), 10000, 1, 1); Swap(DataBuffer); cShade.SetBuffer(cShade.FindKernel("CSAddNewParticles"), "RaddPartData", DataBuffer[READ]); cShade.SetBuffer(cShade.FindKernel("CSAddNewParticles"), "WaddPartData", DataBuffer[WRITE]); cShade.SetInt("typeIDtoAdd", 0); cShade.Dispatch(cShade.FindKernel("CSAddNewParticles"), 4096, 1, 1); Swap(DataBuffer); }
// Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Alpha1)) // Slow PowerUp Type: 1 { if (isPowerUpActive == false && GamePlayManager.slowPowerUps > 0) { GetComponent <MeshRenderer>().material = slowPower; GamePlayManager.speed = 0; powerUpType = 1; isPowerUpActive = true; buffTimer = 2f; GamePlayManager.slowPowerUps--; GamePlayManager.points += 50; ParticleSystemsManager.UpdateDraft(); } } else if (Input.GetKeyDown(KeyCode.Alpha2)) // Break PowerUp Type: 2 { if (isPowerUpActive == false && GamePlayManager.breakPowerUps > 0) { GetComponent <MeshRenderer>().material = breakPower; GamePlayManager.speed = GamePlayManager.speed * 2; powerUpType = 2; isPowerUpActive = true; buffTimer = 2f; GamePlayManager.isInvincible = true; GamePlayManager.breakPowerUps--; GamePlayManager.points += 50; ChangeDraftColor(breakPower.color); ParticleSystemsManager.UpdateDraft(); } } else if (Input.GetKeyDown(KeyCode.Alpha3)) // Attract PowerUp Type: 3 { if (isPowerUpActive == false && GamePlayManager.attractPowerUps > 0) { GetComponent <MeshRenderer>().material = attractPower; powerUpType = 3; isPowerUpActive = true; buffTimer = 2f; GamePlayManager.isAttractive = true; GamePlayManager.attractPowerUps--; GamePlayManager.points += 50; ChangeDraftColor(attractPower.color); } } if (isPowerUpActive == true) { if (buffTimer > 0) { buffTimer -= Time.deltaTime; } else { switch (powerUpType) { case 1: GetComponent <MeshRenderer>().material = playerColor; GamePlayManager.speed = GamePlayManager.baseSpeed; break; case 2: GetComponent <MeshRenderer>().material = playerColor; GamePlayManager.speed = GamePlayManager.baseSpeed; GamePlayManager.isInvincible = false; break; case 3: GetComponent <MeshRenderer>().material = playerColor; GamePlayManager.isAttractive = false; break; } ParticleSystem ps = ParticleSystemsManager.particleSystems[0].GetComponent <ParticleSystem>(); var main = ps.main; main.startColor = playerColor.color; ParticleSystemsManager.UpdateDraft(); powerUpType = 0; isPowerUpActive = false; } } }