5b8ebb7a35
testing
109 lines
2.9 KiB
JavaScript
109 lines
2.9 KiB
JavaScript
public var currentDetonator:GameObject;
|
|
private var _currentExpIdx = -1;
|
|
private var buttonClicked = false;
|
|
var detonatorPrefabs : GameObject[];
|
|
var explosionLife : float = 10;
|
|
var timeScale : float = 1.0;
|
|
var detailLevel : float = 1.0;
|
|
|
|
var wall : GameObject;
|
|
private var _currentWall : GameObject;
|
|
private var _spawnWallTime = -1000;
|
|
private var _guiRect;
|
|
|
|
function Start()
|
|
{
|
|
SpawnWall();
|
|
if (!currentDetonator) NextExplosion();
|
|
else _currentExpIdx = 0;
|
|
}
|
|
|
|
private var toggleBool : boolean = false;
|
|
function OnGUI()
|
|
{
|
|
_guiRect = Rect (7,Screen.height-180,250,200);
|
|
GUILayout.BeginArea (_guiRect);
|
|
|
|
GUILayout.BeginVertical();
|
|
var expName : String = currentDetonator.name;
|
|
if (GUILayout.Button (expName+" (Click For Next)"))
|
|
{
|
|
NextExplosion();
|
|
}
|
|
if (GUILayout.Button ("Rebuild Wall"))
|
|
{
|
|
SpawnWall();
|
|
}
|
|
if (GUILayout.Button ("Camera Far"))
|
|
{
|
|
Camera.main.transform.position = Vector3(0,0,-7);
|
|
Camera.main.transform.eulerAngles = Vector3(13.5,0,0);
|
|
}
|
|
if (GUILayout.Button ("Camera Near"))
|
|
{
|
|
Camera.main.transform.position = Vector3(0,-8.664466,31.38269);
|
|
Camera.main.transform.eulerAngles = Vector3(1.213462,0,0);
|
|
}
|
|
|
|
GUILayout.Label("Time Scale");
|
|
timeScale = GUILayout.HorizontalSlider (timeScale, 0.0, 1.0);
|
|
|
|
GUILayout.Label("Detail Level (re-explode after change)");
|
|
detailLevel = GUILayout.HorizontalSlider (detailLevel, 0.0, 1.0);
|
|
|
|
GUILayout.EndVertical();
|
|
GUILayout.EndArea();
|
|
}
|
|
|
|
function NextExplosion()
|
|
{
|
|
if (_currentExpIdx >= detonatorPrefabs.Length-1) _currentExpIdx = 0;
|
|
else _currentExpIdx++;
|
|
currentDetonator = detonatorPrefabs[_currentExpIdx];
|
|
}
|
|
|
|
function SpawnWall()
|
|
{
|
|
if (_currentWall) Destroy(_currentWall);
|
|
_currentWall = Instantiate (wall, Vector3(-7,-12,48), Quaternion.identity);
|
|
_spawnWallTime = Time.time;
|
|
}
|
|
|
|
//is this a bug? We can't use the same rect for placing the GUI as for checking if the mouse contains it...
|
|
private var checkRect: Rect = Rect (0,0,260,180);
|
|
function Update()
|
|
{
|
|
//keeps the UI in the corner in case of resize...
|
|
_guiRect = Rect (7,Screen.height-150,250,200);
|
|
|
|
//keeps the play button from making an explosion
|
|
if ((Time.time + _spawnWallTime) > 0.5)
|
|
{
|
|
//don't spawn an explosion if we're using the UI
|
|
if (!checkRect.Contains(Input.mousePosition))
|
|
{
|
|
if(Input.GetMouseButtonDown(0))
|
|
{
|
|
SpawnExplosion();
|
|
}
|
|
}
|
|
Time.timeScale = timeScale;
|
|
}
|
|
}
|
|
|
|
|
|
function SpawnExplosion()
|
|
{
|
|
var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
|
|
|
|
var hit : RaycastHit;
|
|
if (Physics.Raycast (ray, hit, 1000))
|
|
{
|
|
var offsetSize = currentDetonator.GetComponent("Detonator").size / 3;
|
|
var hitPoint = hit.point + ((Vector3.Scale(hit.normal, Vector3(offsetSize,offsetSize,offsetSize))));
|
|
var exp : GameObject = Instantiate (currentDetonator, hitPoint, Quaternion.identity);
|
|
exp.GetComponent("Detonator").detail = detailLevel;
|
|
}
|
|
Destroy(exp, explosionLife);
|
|
|
|
} |