Ah, help? Error occurs about halfway down…
EDIT: I’ve put the whole script in here for context, just in case. That being said, there’s a repeated chunk of text halfway down that says “THIS IS WHERE THE ERROR KICKS IN” to make it easy to see the actual troublesome part.
public var MarkerHolder:GameObject;
public var prefabMarker:GameObject;
public var cameraPivot:GameObject;
public var MainCamera:GameObject;
private var makePinURL:String = "makePin.php";
private var getPinsURL:String = "getPins.php";
private var parsedData_HT:Hashtable;
private var rawVectorData:Hashtable;
private var output:String;
// These are three string variables that will hold
// out GUI input values before they are sent to PHP/DB
private var inputXString:String;
private var inputYString:String;
private var inputZString:String;
function Start () {
inputXString = "";
inputYString = "";
inputZString = "";
output = "";
// retrieve the data from the server
yield requestData(getPinsURL);
//
parseVectorPointData(parsedData_HT);
}
function Update () {
}
function OnGUI () {
GUI.Label(new Rect(10, 400, 600, 50), output);
// Capture user input
inputXString = GUI.TextField(new Rect(10, 10, 200, 20), inputXString);
inputYString = GUI.TextField(new Rect(10, 30, 200, 20), inputYString);
inputZString = GUI.TextField(new Rect(10, 50, 200, 20), inputZString);
if (GUI.Button(new Rect(10, 80, 100, 20), "Submit")) {
SubmitClicked();
}
}
function SubmitClicked() {
// Retrieve input data from front end
var xVal:String = inputXString;
var yVal:String = inputYString;
var zVal:String = inputZString;
// Create form data to POST to PHP
var formData:WWWForm = new WWWForm();
formData.AddField("xPos", xVal);
formData.AddField("yPos", yVal);
formData.AddField("zPos", zVal);
// add data to the DB
yield requestData(makePinURL, formData);
// retrieve the data from the server
yield requestData(getPinsURL);
// Parse the data and create the markers in the scene
parseVectorPointData(parsedData_HT);
// Move the pivot to center the camera on the newly created marker
// (uses iTween plugin in Plugin folder)
var newPivot:Vector3 = new Vector3(parseFloat(inputXString),parseFloat(inputYString), parseFloat(inputZString));
iTween.MoveTo(cameraPivot,iTween.Hash("position",newPivot,"time",2,"onupdate","repositionCameraNoMouse","onupdatetarget", MainCamera));
Debug.Log("Submit clicked!");
}
function parseVectorPointData(vect3Data:Hashtable) {
Debug.Log("parseVectorPointData");
// Clear old markers
for (var h:int = MarkerHolder.transform.childCount - 1; h >= 0; h--) {
Destroy(MarkerHolder.transform.GetChild(h).gameObject);
}
// Cycle through the retrieved data and create visual representation
// of each object that is positioned in 3D space
for (var de:DictionaryEntry in vect3Data) {
// The data currently returned for each index is a series of three values
// x, y, z (Vector3). Data must be split; comma is split point
var parsedValueString:String[] = de.Value.Split([','], System.StringSplitOptions.None);
// convert each point from a string to a float value e.g., '1' -> 1
var xVal:float = parseFloat(parsedValueString[0]);
var yVal:float = parseFloat(parsedValueString[1]);
var zVal:float = parseFloat(parsedValueString[2]);
// store values in vector3 for use in Instantiate
var v3:Vector3 = new Vector3(xVal, yVal, zVal);
// Create a new marker for data point
var marker:GameObject = Instantiate(prefabMarker, v3, Quaternion.identity);
// Make the marker a child of the MarkerHolder object already in the scene Hierarchy
marker.transform.parent = MarkerHolder.transform;
}
}
//THIS IS WHERE THE ERROR KICKS IN
//THIS IS WHERE THE ERROR KICKS IN
//THIS IS WHERE THE ERROR KICKS IN
//THIS IS WHERE THE ERROR KICKS IN
//THIS IS WHERE THE ERROR KICKS IN
//THIS IS WHERE THE ERROR KICKS IN
//THIS IS WHERE THE ERROR KICKS IN
//THIS IS WHERE THE ERROR KICKS IN
// Use this for parsing string or URL encoded text
function parseData (stringToParse:String):Hashtable {
var unparsedString:String = stringToParse;
var parsedString:String[] = unparsedString.Split(['&'], System.StringSplitOptions.None);
var parsedData:Hashtable = new Hashtable();
for (var i:int = 0; i < parsedString.Length; i++) {
Debug.Log(parsedString*);*
var nameValuePair:String = parsedString*;*
var parsedNameValueString:String[] = nameValuePair.Split([‘=’], System.StringSplitOptions.None);
parsedData.Add(parsedNameValueString[0], parsedNameValueString[1]);
}
// Output the name value pairs
for (var de:DictionaryEntry in parsedData) {
Debug.Log("Key = " + de.Key + " : Value = " + de.Value);
}
return parsedData;
}
function requestData(url:String) {
var wwwRequest:WWW = new WWW(url);
// Wait for download to complete
yield wwwRequest;
//output = wwwRequest.text;
output = ‘’;
// Parse the data
parsedData_HT = parseData(wwwRequest.text);
/for (var de:DictionaryEntry in parsedData_HT) {
output += ("Key = " + de.Key + " : Value = " + de.Value);
_}/_
Debug.Log(“Succes: Request Data String”);
}
function requestData(url:String, wwwForm:WWWForm) {
var wwwRequest:WWW = new WWW(url, wwwForm);
// Wait for download to complete
yield wwwRequest;
//output = wwwRequest.text;
output = ‘’;
// Parse the data
parsedData_HT = parseData(wwwRequest.text);
/* for (var de:DictionaryEntry in parsedData_HT) {
output += ("Key = " + de.Key + " : Value = " + de.Value);
}*/
Debug.Log(“Succes: Request Data String WWWForm”);
}
/*
//
// Object Rotation
// These functions are called by the ObjectBroadcaster.js script
// They originate on the markers but could be attached to any other GameObject
//
*/
function OnMouseDragged(go:GameObject) {
Debug.Log(“Dragged”);
gameObject.BroadcastMessage(“repositionCamera”, 0.0F);
}
function OnObjectClicked(tr:Transform) {
output = tr.position.ToString();
iTween.MoveTo(cameraPivot,iTween.Hash(“position”,tr.position,“time”,2,“onupdate”,“repositionCameraNoMouse”,“onupdatetarget”, MainCamera));
}
Thanks in advance!
- ess