Files
FPS-Kit-2.0/Assets/FPS Kit Version 2.0/_CustomAssets/Detonator/System/DetonatorSmoke.cs
T
reedgamingstudio 5b8ebb7a35 test
testing
2014-12-16 00:23:12 -06:00

1 line
5.0 KiB
C#

using UnityEngine;
using System.Collections;
[RequireComponent (typeof (Detonator))]
[AddComponentMenu("Detonator/Smoke")]
public class DetonatorSmoke : DetonatorComponent
{
private const float _baseSize = 1f;
private const float _baseDuration = 8f;
private Color _baseColor = new Color(.5f, .5f, .5f, .5f);
private const float _baseDamping = 0.1300004f;
private float _scaledDuration;
private GameObject _smokeA;
private DetonatorBurstEmitter _smokeAEmitter;
public Material smokeAMaterial;
private GameObject _smokeB;
private DetonatorBurstEmitter _smokeBEmitter;
public Material smokeBMaterial;
public bool drawSmokeA = true;
public bool drawSmokeB = true;
override public void Init()
{
FillMaterials(false);
BuildSmokeA();
BuildSmokeB();
}
public void FillMaterials(bool wipe)
{
if (!smokeAMaterial || wipe)
{
smokeAMaterial = MyDetonator().smokeAMaterial;
}
if (!smokeBMaterial || wipe)
{
smokeBMaterial = MyDetonator().smokeBMaterial;
}
}
public void BuildSmokeA()
{
_smokeA = new GameObject("SmokeA");
_smokeAEmitter = (DetonatorBurstEmitter)_smokeA.AddComponent("DetonatorBurstEmitter");
_smokeA.transform.parent = this.transform;
_smokeA.transform.localPosition = localPosition;
_smokeA.transform.localRotation = Quaternion.identity;
_smokeAEmitter.material = smokeAMaterial;
_smokeAEmitter.exponentialGrowth = false;
_smokeAEmitter.sizeGrow = 0.095f;
_smokeAEmitter.useWorldSpace = MyDetonator().useWorldSpace;
_smokeAEmitter.upwardsBias = MyDetonator().upwardsBias;
}
public void UpdateSmokeA()
{
_smokeA.transform.localPosition = Vector3.Scale(localPosition,(new Vector3(size, size, size)));
//move slightly away from the main camera so it sorts properly
_smokeA.transform.LookAt(Camera.main.transform);
_smokeA.transform.localPosition = -(Vector3.forward * -1.5f);
_smokeAEmitter.color = color;
_smokeAEmitter.duration = duration * .5f;
_smokeAEmitter.durationVariation = 0f;
_smokeAEmitter.timeScale = timeScale;
_smokeAEmitter.count = 4f;
_smokeAEmitter.particleSize = 25f;
_smokeAEmitter.sizeVariation = 3f;
_smokeAEmitter.velocity = velocity;
_smokeAEmitter.startRadius = 10f;
_smokeAEmitter.size = size;
_smokeAEmitter.useExplicitColorAnimation = true;
_smokeAEmitter.explodeDelayMin = explodeDelayMin;
_smokeAEmitter.explodeDelayMax = explodeDelayMax;
Color color1 = new Color(.2f, .2f, .2f, .4f);
Color color2 = new Color(.2f, .2f, .2f, .7f);
Color color3 = new Color(.2f, .2f, .2f, .4f);
Color color4 = new Color(.2f, .2f, .2f, 0f);
_smokeAEmitter.colorAnimation[0] = color1;
_smokeAEmitter.colorAnimation[1] = color2;
_smokeAEmitter.colorAnimation[2] = color2;
_smokeAEmitter.colorAnimation[3] = color3;
_smokeAEmitter.colorAnimation[4] = color4;
}
public void BuildSmokeB()
{
_smokeB = new GameObject("SmokeB");
_smokeBEmitter = (DetonatorBurstEmitter)_smokeB.AddComponent("DetonatorBurstEmitter");
_smokeB.transform.parent = this.transform;
_smokeB.transform.localPosition = localPosition;
_smokeB.transform.localRotation = Quaternion.identity;
_smokeBEmitter.material = smokeBMaterial;
_smokeBEmitter.exponentialGrowth = false;
_smokeBEmitter.sizeGrow = 0.095f;
_smokeBEmitter.useWorldSpace = MyDetonator().useWorldSpace;
_smokeBEmitter.upwardsBias = MyDetonator().upwardsBias;
}
public void UpdateSmokeB()
{
_smokeB.transform.localPosition = Vector3.Scale(localPosition,(new Vector3(size, size, size)));
//move slightly away from the main camera so it sorts properly
_smokeB.transform.LookAt(Camera.main.transform);
_smokeB.transform.localPosition = -(Vector3.forward * -1f);
_smokeBEmitter.color = color;
_smokeBEmitter.duration = duration * .5f;
_smokeBEmitter.durationVariation = 0f;
_smokeBEmitter.count = 2f;
_smokeBEmitter.particleSize = 25f;
_smokeBEmitter.sizeVariation = 3f;
_smokeBEmitter.velocity = velocity;
_smokeBEmitter.startRadius = 10f;
_smokeBEmitter.size = size;
_smokeBEmitter.useExplicitColorAnimation = true;
_smokeBEmitter.explodeDelayMin = explodeDelayMin;
_smokeBEmitter.explodeDelayMax = explodeDelayMax;
Color color1 = new Color(.2f, .2f, .2f, .4f);
Color color2 = new Color(.2f, .2f, .2f, .7f);
Color color3 = new Color(.2f, .2f, .2f, .4f);
Color color4 = new Color(.2f, .2f, .2f, 0f);
_smokeBEmitter.colorAnimation[0] = color1;
_smokeBEmitter.colorAnimation[1] = color2;
_smokeBEmitter.colorAnimation[2] = color2;
_smokeBEmitter.colorAnimation[3] = color3;
_smokeBEmitter.colorAnimation[4] = color4;
}
public void Reset()
{
FillMaterials(true);
on = true;
size = _baseSize;
duration = _baseDuration;
explodeDelayMin = 0f;
explodeDelayMax = 0f;
color = _baseColor;
velocity = new Vector3(3f,3f,3f);
}
override public void Explode()
{
if (detailThreshold > detail) return;
if (on)
{
UpdateSmokeA();
UpdateSmokeB();
if (drawSmokeA) _smokeAEmitter.Explode();
if (drawSmokeB) _smokeBEmitter.Explode();
}
}
}