Files
FueraDeEscala/Assets/Game Kit Controller/Scripts/Editor/createPhysicalObjectToGrabEditor.cs
Robii Aragon fd87a6ffd5 add ckg
plantilla base para movimiento básico
2026-02-05 05:07:55 -08:00

701 lines
28 KiB
C#

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using System.IO;
using UnityEngine.EventSystems;
#if UNITY_EDITOR
using UnityEditor;
public class createPhysicalObjectToGrabEditor : EditorWindow
{
GUISkin guiSkin;
Rect windowRect = new Rect ();
Vector2 rectSize = new Vector2 (550, 600);
bool objectToGrabCreated;
float timeToBuild = 0.2f;
float timer;
string assetsPath;
GUIStyle style = new GUIStyle ();
float windowHeightPercentage = 0.3f;
Vector2 screenResolution;
grabPhysicalObjectSystem currentGrabPhysicalObjectSystem;
public string [] objectToGrabList;
public int objectToGrabIndex;
string newObjectToGrabName;
bool objectToGrabListAssigned;
GameObject newObjectToGrabMesh;
public bool configureObjectColliderAutomatically = true;
public bool useBoxCollider;
public bool useMeshCollider;
[Range (0.01f, 5)] float newObjectMeshScale = 1;
static string prefabsPath = "";
static string editorTitle = "Grab Objects";
static string editorDescription = "Create New Object To Grab";
static string editorSecondaryTitle = "Create Object To Grab Physically";
static string editorInstructions = "Select an Object To Grab Type from the 'Object To Grab Type' list and press the button 'Create Object'. \n\n" +
"After that, make sure to adjust the collider size and shape for the new object created as you consider better.";
public string temporalPrefabsPath;
public string temporalEditorTitle;
public string temporalEditorDescription;
public string temporalEditorSecondaryTitle;
public string temporalEditorInstructions;
bool creatingMeleeWeapon;
bool addMeleeWeaponToInventory = true;
public string relativePathWeaponsMesh = "Inventory/Mesh/Melee Weapons";
public string relativePathMeleeWeapons = "Melee Combat System/Melee Weapons";
Texture weaponIconTexture;
string weaponInventoryDescription;
float objectWeight = 5;
bool canBeSold = true;
float vendorPrice = 1000;
float sellPrice = 500;
bool useDurability = true;
float durabilityAmount = 100;
float maxDurabilityAmount = 100;
float durabilityUsedOnAttack = 4;
bool useObjectDurabilityOnBlock = true;
float durabilityUsedOnBlock = 4;
Vector2 previousRectSize;
float minHeight;
string currentWeaponName = "New Weapon";
public bool useBowWeaponType;
public bool useNewPathForMeleeWeapon;
[TextArea (3, 5)] public string newPathForMeleeWeapon;
bool showInventoryObjectNameAlreadyExistsMessage;
Vector2 scrollPos1;
float maxLayoutWidht = 200;
[MenuItem ("Game Kit Controller/Create New Object To Grab Physically", false, 21)]
public static void createPhysicalObjectToGrab ()
{
createPhysicalObjectToGrabEditor editorWindow = EditorWindow.GetWindow<createPhysicalObjectToGrabEditor> ();
prefabsPath = pathInfoValues.getPhysicalObjectsPath ();
editorWindow.setTemporalPrefabsPath (prefabsPath, editorTitle, editorDescription, editorSecondaryTitle, editorInstructions, false);
}
public void setTemporalPrefabsPath (string newPrefabsPath, string newEditorTitle, string newEditorDescription,
string newEditorSecondaryTitle, string newEditorInstructions, bool creatingMeleeWeaponValue)
{
temporalPrefabsPath = newPrefabsPath;
temporalEditorTitle = newEditorTitle;
temporalEditorDescription = newEditorDescription;
temporalEditorSecondaryTitle = newEditorSecondaryTitle;
temporalEditorInstructions = newEditorInstructions;
creatingMeleeWeapon = creatingMeleeWeaponValue;
objectToGrabListAssigned = false;
newObjectToGrabName = "";
screenResolution = new Vector2 (Screen.currentResolution.width, Screen.currentResolution.height);
// Debug.Log (screenResolution + " " + partsHeight + " " + settingsHeight + " " + previewHeight);
float totalHeight = screenResolution.y * windowHeightPercentage;
if (totalHeight < 400) {
totalHeight = 400;
}
if (creatingMeleeWeapon) {
totalHeight += 150;
}
minHeight = totalHeight;
rectSize = new Vector2 (550, totalHeight);
resetCreatorValues ();
getGrabObjectPrefabsList ();
}
void getGrabObjectPrefabsList ()
{
if (!Directory.Exists (temporalPrefabsPath)) {
Debug.Log ("WARNING: " + temporalPrefabsPath + " path doesn't exist, make sure the path is from an existing folder in the project");
return;
}
string [] search_results = null;
search_results = System.IO.Directory.GetFiles (temporalPrefabsPath, "*.prefab");
if (search_results.Length > 0) {
objectToGrabList = new string [search_results.Length];
int currentObjectToGrabIndex = 0;
foreach (string file in search_results) {
//must convert file path to relative-to-unity path (and watch for '\' character between Win/Mac)
GameObject currentPrefab = UnityEditor.AssetDatabase.LoadAssetAtPath (file, typeof (GameObject)) as GameObject;
if (currentPrefab) {
string currentObjectToGrabName = currentPrefab.name;
objectToGrabList [currentObjectToGrabIndex] = currentObjectToGrabName;
currentObjectToGrabIndex++;
} else {
Debug.Log ("WARNING: something went wrong when trying to get the prefab in the path " + file);
}
}
objectToGrabListAssigned = true;
} else {
Debug.Log ("Object To Grab prefab not found in path " + temporalPrefabsPath);
objectToGrabList = new string [0];
}
useNewPathForMeleeWeapon = false;
newPathForMeleeWeapon = pathInfoValues.getMainPrefabsFolderPath () + relativePathMeleeWeapons;
}
void OnDisable ()
{
resetCreatorValues ();
}
void resetCreatorValues ()
{
if (objectToGrabCreated) {
} else {
}
currentGrabPhysicalObjectSystem = null;
objectToGrabCreated = false;
objectToGrabListAssigned = false;
newObjectMeshScale = 1;
configureObjectColliderAutomatically = true;
currentWeaponName = "New Weapon";
showInventoryObjectNameAlreadyExistsMessage = false;
useBowWeaponType = false;
Debug.Log ("Object To Grab window closed");
}
void OnGUI ()
{
if (!guiSkin) {
guiSkin = Resources.Load ("GUI") as GUISkin;
}
GUI.skin = guiSkin;
this.minSize = rectSize;
this.titleContent = new GUIContent (temporalEditorTitle, null, temporalEditorDescription);
GUILayout.BeginVertical (temporalEditorSecondaryTitle, "window");
EditorGUILayout.Space ();
EditorGUILayout.Space ();
EditorGUILayout.Space ();
windowRect = GUILayoutUtility.GetLastRect ();
// windowRect.position = new Vector2 (0, windowRect.position.y);
windowRect.width = this.maxSize.x;
GUILayout.BeginHorizontal ();
EditorGUILayout.HelpBox ("", MessageType.Info);
style = new GUIStyle (EditorStyles.helpBox);
style.richText = true;
style.fontStyle = FontStyle.Bold;
style.fontSize = 17;
string extraInstructions = "";
if (showInventoryObjectNameAlreadyExistsMessage) {
extraInstructions = "WARNING: The weapon name used for the inventory is already in use. Make sure to use an unique name for it.";
}
EditorGUILayout.LabelField ((temporalEditorInstructions + extraInstructions), style);
GUILayout.EndHorizontal ();
if (objectToGrabListAssigned) {
if (objectToGrabList.Length > 0) {
GUILayout.FlexibleSpace ();
EditorGUILayout.Space ();
scrollPos1 = EditorGUILayout.BeginScrollView (scrollPos1, false, false);
if (objectToGrabIndex < objectToGrabList.Length) {
GUILayout.BeginHorizontal ();
GUILayout.Label ("Object Type", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
objectToGrabIndex = EditorGUILayout.Popup (objectToGrabIndex, objectToGrabList);
newObjectToGrabName = objectToGrabList [objectToGrabIndex];
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
}
GUILayout.BeginHorizontal ();
GUILayout.Label ("New Object Mesh", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
newObjectToGrabMesh = EditorGUILayout.ObjectField (newObjectToGrabMesh, typeof (GameObject), true, GUILayout.ExpandWidth (true)) as GameObject;
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
GUILayout.Label ("Configure Collider\nAutomatically", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
configureObjectColliderAutomatically = (bool)EditorGUILayout.Toggle ("", configureObjectColliderAutomatically);
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
if (!configureObjectColliderAutomatically) {
GUILayout.BeginHorizontal ();
GUILayout.Label ("Use Box Collider", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
useBoxCollider = (bool)EditorGUILayout.Toggle (useBoxCollider);
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
GUILayout.Label ("Use Mesh Collider", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
useMeshCollider = (bool)EditorGUILayout.Toggle (useMeshCollider);
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
}
GUILayout.BeginHorizontal ();
GUILayout.Label ("Object Mesh Scale", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
newObjectMeshScale = EditorGUILayout.Slider (newObjectMeshScale, 0.01f, 5, GUILayout.ExpandWidth (true));
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
if (creatingMeleeWeapon) {
GUILayout.BeginHorizontal ();
GUILayout.Label ("Melee Weapon Name", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
currentWeaponName = (string)EditorGUILayout.TextField (currentWeaponName, GUILayout.ExpandWidth (true));
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
GUILayout.Label ("Weapon Is Bow Type", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
useBowWeaponType = (bool)EditorGUILayout.Toggle ("", useBowWeaponType);
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
GUILayout.Label ("Add Melee Weapon\nTo Inventory", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
addMeleeWeaponToInventory = (bool)EditorGUILayout.Toggle ("", addMeleeWeaponToInventory);
GUILayout.EndHorizontal ();
if (addMeleeWeaponToInventory) {
EditorGUILayout.Space ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
GUILayout.Label ("Weapon Icon", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
weaponIconTexture = EditorGUILayout.ObjectField (weaponIconTexture, typeof (Texture), true, GUILayout.ExpandWidth (true)) as Texture;
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
EditorGUILayout.BeginHorizontal ();
EditorGUILayout.LabelField ("Weapon Description ", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
weaponInventoryDescription = EditorGUILayout.TextArea (weaponInventoryDescription, EditorStyles.textArea, GUILayout.Height (40), GUILayout.ExpandWidth (true));
EditorGUILayout.EndHorizontal ();
EditorGUILayout.Space ();
EditorGUILayout.BeginHorizontal ();
EditorGUILayout.LabelField ("Object Weight ", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
objectWeight = EditorGUILayout.FloatField ("", objectWeight);
EditorGUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
GUILayout.Label ("Can Be Sold", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
canBeSold = (bool)EditorGUILayout.Toggle (canBeSold, GUILayout.ExpandWidth (true));
GUILayout.EndHorizontal ();
if (canBeSold) {
GUILayout.BeginHorizontal ();
GUILayout.Label ("Vendor Price", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
vendorPrice = EditorGUILayout.FloatField ("", vendorPrice);
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
GUILayout.Label ("Sell Price", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
sellPrice = EditorGUILayout.FloatField ("", sellPrice);
GUILayout.EndHorizontal ();
}
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
GUILayout.Label ("Use Durability", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
useDurability = (bool)EditorGUILayout.Toggle (useDurability, GUILayout.ExpandWidth (true));
GUILayout.EndHorizontal ();
if (useDurability) {
GUILayout.BeginHorizontal ();
GUILayout.Label ("Durability Amount", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
durabilityAmount = EditorGUILayout.FloatField ("", durabilityAmount);
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
GUILayout.Label ("Max Durability Amount", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
maxDurabilityAmount = EditorGUILayout.FloatField ("", maxDurabilityAmount);
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
GUILayout.Label ("Durability Used On Attack", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
durabilityUsedOnAttack = EditorGUILayout.FloatField ("", durabilityUsedOnAttack);
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
GUILayout.Label ("Use Durability On Block", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
useObjectDurabilityOnBlock = (bool)EditorGUILayout.Toggle (useObjectDurabilityOnBlock, GUILayout.ExpandWidth (true));
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
GUILayout.Label ("Durability Used On Block", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
durabilityUsedOnBlock = EditorGUILayout.FloatField ("", durabilityUsedOnBlock);
GUILayout.EndHorizontal ();
}
EditorGUILayout.Space ();
}
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
GUILayout.Label ("Use New Path For\nMelee Weapon Prefab", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
useNewPathForMeleeWeapon = (bool)EditorGUILayout.Toggle ("", useNewPathForMeleeWeapon);
GUILayout.EndHorizontal ();
if (useNewPathForMeleeWeapon) {
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
GUILayout.Label ("New Path", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
newPathForMeleeWeapon = (string)EditorGUILayout.TextField (newPathForMeleeWeapon, GUILayout.ExpandWidth (true));
GUILayout.EndHorizontal ();
}
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
GUILayout.Label ("Window Height", EditorStyles.boldLabel, GUILayout.MaxWidth (maxLayoutWidht));
if (previousRectSize != rectSize) {
previousRectSize = rectSize;
this.maxSize = rectSize;
}
rectSize.y = EditorGUILayout.Slider (rectSize.y, minHeight, screenResolution.y, GUILayout.ExpandWidth (true));
GUILayout.EndHorizontal ();
}
EditorGUILayout.EndScrollView ();
EditorGUILayout.Space ();
if (newObjectToGrabMesh != null) {
if (GUILayout.Button ("Create Object")) {
createObjectToGrab ();
}
}
if (GUILayout.Button ("Cancel")) {
this.Close ();
}
}
} else {
GUILayout.FlexibleSpace ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
EditorGUILayout.HelpBox ("", MessageType.Warning);
style = new GUIStyle (EditorStyles.helpBox);
style.richText = true;
style.fontStyle = FontStyle.Bold;
style.fontSize = 17;
EditorGUILayout.LabelField ("WARNING: No Object prefabs where found on the path " + temporalPrefabsPath, style);
GUILayout.EndHorizontal ();
}
GUILayout.EndVertical ();
}
void createObjectToGrab ()
{
if (creatingMeleeWeapon && addMeleeWeaponToInventory) {
showInventoryObjectNameAlreadyExistsMessage = false;
if (GKC_Utils.checkIfInventoryObjectNameExits (currentWeaponName)) {
Debug.Log ("Weapon name already exists");
showInventoryObjectNameAlreadyExistsMessage = true;
rectSize.y += 70;
return;
}
}
string pathForObject = temporalPrefabsPath + newObjectToGrabName + ".prefab";
GameObject currentPrefab = UnityEditor.AssetDatabase.LoadAssetAtPath (pathForObject, typeof (GameObject)) as GameObject;
if (currentPrefab != null) {
GameObject newObjectToGrabCreated = (GameObject)Instantiate (currentPrefab, Vector3.zero, Quaternion.identity);
newObjectToGrabCreated.name = newObjectToGrabName;
objectToGrabCreated = true;
currentGrabPhysicalObjectSystem = newObjectToGrabCreated.GetComponent<grabPhysicalObjectSystem> ();
if (currentGrabPhysicalObjectSystem != null) {
if (!configureObjectColliderAutomatically) {
currentGrabPhysicalObjectSystem.useMeshCollider = useMeshCollider;
currentGrabPhysicalObjectSystem.useBoxCollider = useBoxCollider;
}
if (newObjectToGrabMesh != null) {
if (currentGrabPhysicalObjectSystem.objectMeshInsideMainParent) {
GameObject newObjectToGrabMeshCreated = (GameObject)Instantiate (newObjectToGrabMesh, Vector3.zero, Quaternion.identity);
newObjectToGrabMeshCreated.transform.SetParent (currentGrabPhysicalObjectSystem.objectMeshMainParent);
newObjectToGrabMeshCreated.transform.localPosition = Vector3.zero;
newObjectToGrabMeshCreated.transform.localRotation = Quaternion.identity;
newObjectToGrabMeshCreated.transform.localScale = Vector3.one * newObjectMeshScale;
grabPhysicalObjectMeleeAttackSystem currentGrabPhysicalObjectMeleeAttackSystem = newObjectToGrabCreated.GetComponent<grabPhysicalObjectMeleeAttackSystem> ();
if (currentGrabPhysicalObjectMeleeAttackSystem != null) {
currentGrabPhysicalObjectMeleeAttackSystem.weaponName = currentWeaponName;
if (currentGrabPhysicalObjectMeleeAttackSystem.weaponMesh != null) {
Transform weaponMeshChild = currentGrabPhysicalObjectMeleeAttackSystem.weaponMesh.transform.GetChild (0);
if (weaponMeshChild != null) {
if (weaponMeshChild != newObjectToGrabMeshCreated.transform) {
DestroyImmediate (weaponMeshChild.gameObject);
}
}
}
currentGrabPhysicalObjectMeleeAttackSystem.setUseObjectDurabilityOnAttackValueFromEditor (useDurability);
currentGrabPhysicalObjectMeleeAttackSystem.setDurabilityUsedOnAttackValueFromEditor (durabilityUsedOnAttack);
currentGrabPhysicalObjectMeleeAttackSystem.setUseObjectDurabilityOnBlockValueFromEditor (useObjectDurabilityOnBlock);
currentGrabPhysicalObjectMeleeAttackSystem.setDurabilityUsedOnBlockValueFromEditor (durabilityUsedOnBlock);
currentGrabPhysicalObjectMeleeAttackSystem.setObjectNameFromEditor (currentWeaponName);
currentGrabPhysicalObjectMeleeAttackSystem.setMaxDurabilityAmountFromEditor (maxDurabilityAmount);
currentGrabPhysicalObjectMeleeAttackSystem.setDurabilityAmountFromEditor (durabilityAmount);
if (creatingMeleeWeapon && addMeleeWeaponToInventory) {
newObjectToGrabCreated.name = currentWeaponName + " (to grab physically with Melee Attacks)";
GameObject weaponMesh = newObjectToGrabMeshCreated;
string weaponMeshPath = pathInfoValues.getMainPrefabsFolderPath () + relativePathWeaponsMesh;
GKC_Utils.createInventoryWeapon (currentWeaponName, "Melee Weapons", weaponMesh,
weaponInventoryDescription, weaponIconTexture, weaponMeshPath, true,
useDurability, durabilityAmount, maxDurabilityAmount, objectWeight, canBeSold, vendorPrice, sellPrice);
string currentPrefabPath = pathInfoValues.getMainPrefabsFolderPath () + relativePathMeleeWeapons;
if (useNewPathForMeleeWeapon) {
currentPrefabPath = newPathForMeleeWeapon;
}
GameObject newMeleeWeaponPrefab = GKC_Utils.createPrefab (currentPrefabPath, currentWeaponName, newObjectToGrabCreated);
if (newMeleeWeaponPrefab != null) {
meleeWeaponsGrabbedManager [] meleeWeaponsGrabbedManagerList = FindObjectsOfType<meleeWeaponsGrabbedManager> ();
foreach (meleeWeaponsGrabbedManager currentMeleeWeaponsGrabbedManager in meleeWeaponsGrabbedManagerList) {
currentMeleeWeaponsGrabbedManager.addNewMeleeWeaponPrefab (newMeleeWeaponPrefab, currentWeaponName, useBowWeaponType);
}
GKC_Utils.updateDirtyScene ("Create Object To Grab", newObjectToGrabCreated);
DestroyImmediate (newObjectToGrabCreated);
}
}
}
} else {
MeshRenderer newObjectToGrabMeshRenderer = newObjectToGrabMesh.GetComponent<MeshRenderer> ();
MeshRenderer newObjectToGrabCreatedMeshRenderer = newObjectToGrabCreated.GetComponent<MeshRenderer> ();
if (newObjectToGrabMeshRenderer && newObjectToGrabCreatedMeshRenderer) {
newObjectToGrabCreatedMeshRenderer.sharedMaterials = newObjectToGrabMeshRenderer.sharedMaterials;
}
MeshFilter newObjectToGrabMeshFilter = newObjectToGrabMesh.GetComponent<MeshFilter> ();
MeshFilter newObjectToGrabCreatedMeshFilter = newObjectToGrabCreated.GetComponent<MeshFilter> ();
if (newObjectToGrabMeshFilter != null && newObjectToGrabCreatedMeshFilter != null) {
newObjectToGrabCreatedMeshFilter.sharedMesh = newObjectToGrabMeshFilter.sharedMesh;
}
if (currentGrabPhysicalObjectSystem.useMeshCollider) {
MeshCollider newObjectToGrabCreatedMeshCollider = newObjectToGrabCreated.GetComponent<MeshCollider> ();
if (newObjectToGrabCreatedMeshCollider == null) {
newObjectToGrabCreatedMeshCollider = newObjectToGrabCreated.AddComponent<MeshCollider> ();
}
newObjectToGrabCreatedMeshCollider.convex = true;
}
if (currentGrabPhysicalObjectSystem.useBoxCollider) {
BoxCollider newObjectToGrabCreatedBoxCollider = newObjectToGrabCreated.GetComponent<BoxCollider> ();
if (newObjectToGrabCreatedBoxCollider == null) {
newObjectToGrabCreatedBoxCollider = newObjectToGrabCreated.AddComponent<BoxCollider> ();
}
}
}
}
}
if (newObjectToGrabCreated != null) {
GKC_Utils.setActiveGameObjectInEditor (newObjectToGrabCreated);
Camera currentCameraEditor = GKC_Utils.getCameraEditor ();
if (currentCameraEditor != null) {
Vector3 editorCameraPosition = currentCameraEditor.transform.position;
Vector3 editorCameraForward = currentCameraEditor.transform.forward;
RaycastHit hit;
if (Physics.Raycast (editorCameraPosition, editorCameraForward, out hit, Mathf.Infinity)) {
newObjectToGrabCreated.transform.position = hit.point + Vector3.up * 0.2f;
}
}
GKC_Utils.updateDirtyScene ("Create Object To Grab", newObjectToGrabCreated);
}
} else {
Debug.Log ("WARNING: no prefab found on path " + temporalPrefabsPath + newObjectToGrabName);
}
}
void Update ()
{
if (objectToGrabCreated) {
if (timer < timeToBuild) {
timer += 0.01f;
if (timer > timeToBuild) {
timer = 0;
this.Close ();
}
}
}
}
}
#endif