public static InteractionObjectData CreateData() { InteractionObjectData asset = ScriptableObject.CreateInstance <InteractionObjectData>(); AssetDatabase.CreateAsset(asset, "Assets/SpaceDetective/ContactSystemObjects/ObjectReferences/InteractionObjectData.asset"); AssetDatabase.SaveAssets(); return(asset); }
void AddItem() { InteractionObjectData newData = CreateInteractionObjectList.CreateData(); if (newData) { string relPath = AssetDatabase.GetAssetPath(newData); EditorPrefs.SetString("ObjectPath", relPath); interactionObjectList.objectList.Add(newData); viewIndex = interactionObjectList.objectList.Count; } }
public override void OnInspectorGUI() { InteractionObjectData myTarget = (InteractionObjectData)target; myTarget.myObject = (InteractionObject)CustomGUILayout.ObjectField <InteractionObject>("Object:", myTarget.myObject, true); if (myTarget.myObject == null) { GUILayout.Label("Please choose an Interaction Object to continue."); return; } else { myTarget.myObject.interactionConstantID = ObjectFieldToID(myTarget.myObject.interactionObject, myTarget.myObject.interactionConstantID); myTarget.myObject.interactionObject = ObjectIDToField(myTarget.myObject.interactionObject, myTarget.myObject.interactionConstantID); EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); GUILayout.BeginVertical("Box"); GUILayout.Label(myTarget.myObject.objectName, EditorStyles.boldLabel); EditorGUILayout.ObjectField("Parent Object:", myTarget.myObject.objectParent, typeof(Transform), true); EditorGUILayout.ObjectField("Right Hold Position:", myTarget.myObject.rHandPosition, typeof(Transform), true); EditorGUILayout.ObjectField("Left Hold Position:", myTarget.myObject.lHandPosition, typeof(Transform), true); EditorGUILayout.ObjectField("Drop Position:", myTarget.myObject.dropPosition, typeof(Transform), true); EditorGUILayout.ObjectField("Right Target:", myTarget.myObject.rHandTarget, typeof(Transform), true); EditorGUILayout.ObjectField("Left Target:", myTarget.myObject.lHandTarget, typeof(Transform), true); EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); GUILayout.Label("Sound FX", EditorStyles.boldLabel); EditorGUILayout.ObjectField("Pick Up Sound:", myTarget.myObject.pickUpSound, typeof(AudioClip), true); EditorGUILayout.ObjectField("Drop Sound:", myTarget.myObject.dropSound, typeof(AudioClip), true); EditorGUILayout.ObjectField("Interaction Sound:", myTarget.myObject.interactSound, typeof(AudioClip), true); EditorGUILayout.ObjectField("Inventory Sound:", myTarget.myObject.inventorySound, typeof(AudioClip), true); GUILayout.Label("Inventory Properties", EditorStyles.boldLabel); if (myTarget.myObject.isInventoryItem) { GUILayout.Label("This is an inventory item.", EditorStyles.miniBoldLabel); GUILayout.Label("Inventory Item: " + AC.KickStarter.inventoryManager.items[myTarget.myObject.invID].label, EditorStyles.miniBoldLabel); EditorGUILayout.ObjectField("Prefab Reference:", AC.KickStarter.inventoryManager.items[myTarget.myObject.invID].linkedPrefab, typeof(GameObject), true); } else { GUILayout.Label("This is not an inventory item.", EditorStyles.miniBoldLabel); } GUILayout.EndVertical(); } }
/*void OnEnable() * { * if (EditorPrefs.HasKey("ObjectPath")) * { * string objectPath = EditorPrefs.GetString("ObjectPath"); * interactionObjectList = AssetDatabase.LoadAssetAtPath(objectPath, typeof(InteractionObjectList)) as InteractionObjectList; * } * * }*/ void OnGUI() { GUILayout.BeginVertical(); GUILayout.Label("Inventory Object Editor", EditorStyles.largeLabel); interactionObjectList = EditorGUILayout.ObjectField("Object List:", interactionObjectList, typeof(InteractionObjectList), true) as InteractionObjectList; GUILayout.EndVertical(); GUILayout.BeginHorizontal(); if (interactionObjectList) { if (GUILayout.Button("Show Object List")) { EditorUtility.FocusProjectWindow(); Selection.activeObject = interactionObjectList; } } if (GUILayout.Button("Open Object List")) { OpenItemList(); } GUILayout.EndHorizontal(); if (interactionObjectList == null) { GUILayout.BeginHorizontal(); GUILayout.Space(10); if (GUILayout.Button("Create New Object List", GUILayout.ExpandWidth(false))) { CreateNewItemList(); } if (GUILayout.Button("Open Existing Object List", GUILayout.ExpandWidth(false))) { OpenItemList(); } GUILayout.EndHorizontal(); } GUILayout.Space(20); if (interactionObjectList) { GUILayout.BeginHorizontal(); GUILayout.Space(10); if (GUILayout.Button("Prev", GUILayout.ExpandWidth(false))) { if (viewIndex > 1) { viewIndex--; } } GUILayout.Space(5); if (GUILayout.Button("Next", GUILayout.ExpandWidth(false))) { if (viewIndex < interactionObjectList.objectList.Count) { viewIndex++; } } GUILayout.Space(60); if (GUILayout.Button("Add Object", GUILayout.ExpandWidth(false))) { AddItem(); } if (GUILayout.Button("Delete Object", GUILayout.ExpandWidth(false))) { DeleteItem(viewIndex - 1); } GUILayout.EndHorizontal(); if (interactionObjectList.objectList == null) { return; } //Debug.Log("wtf"); if (interactionObjectList.objectList.Count > 0) { GUILayout.BeginHorizontal(); viewIndex = Mathf.Clamp(EditorGUILayout.IntField("Current Object:", viewIndex, GUILayout.ExpandWidth(false)), 1, interactionObjectList.objectList.Count); EditorGUILayout.LabelField("of " + interactionObjectList.objectList.Count.ToString() + " items", "", GUILayout.ExpandWidth(false)); GUILayout.EndHorizontal(); interactionObjectList.objectList[viewIndex - 1] = EditorGUILayout.ObjectField("Object Data:", interactionObjectList.objectList[viewIndex - 1], typeof(InteractionObjectData), true) as InteractionObjectData; InteractionObjectData dataStuff = interactionObjectList.objectList[viewIndex - 1]; if (dataStuff.myObject) { GUILayout.Space(10); EditorGUILayout.Separator(); GUILayout.Space(10); EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); GUILayout.BeginVertical("Box"); GUILayout.Label(dataStuff.myObject.objectName, EditorStyles.boldLabel); EditorGUILayout.ObjectField("Parent Object:", dataStuff.myObject.objectParent, typeof(Transform), true); EditorGUILayout.ObjectField("Right Hold Position:", dataStuff.myObject.rHandPosition, typeof(Transform), true); EditorGUILayout.ObjectField("Left Hold Position:", dataStuff.myObject.lHandPosition, typeof(Transform), true); EditorGUILayout.ObjectField("Drop Position:", dataStuff.myObject.dropPosition, typeof(Transform), true); EditorGUILayout.ObjectField("Right Target:", dataStuff.myObject.rHandTarget, typeof(Transform), true); EditorGUILayout.ObjectField("Left Target:", dataStuff.myObject.lHandTarget, typeof(Transform), true); EditorGUILayout.LabelField("", GUI.skin.horizontalSlider); GUILayout.Label("Sound FX", EditorStyles.boldLabel); EditorGUILayout.ObjectField("Pick Up Sound:", dataStuff.myObject.pickUpSound, typeof(AudioClip), true); EditorGUILayout.ObjectField("Drop Sound:", dataStuff.myObject.dropSound, typeof(AudioClip), true); EditorGUILayout.ObjectField("Interaction Sound:", dataStuff.myObject.interactSound, typeof(AudioClip), true); EditorGUILayout.ObjectField("Inventory Sound:", dataStuff.myObject.inventorySound, typeof(AudioClip), true); GUILayout.Label("Inventory Properties", EditorStyles.boldLabel); if (dataStuff.myObject.isInventoryItem) { GUILayout.Label("This is an inventory item.", EditorStyles.miniBoldLabel); GUILayout.Label("Inventory Item: " + AC.KickStarter.inventoryManager.items[dataStuff.myObject.invID].label, EditorStyles.miniBoldLabel); EditorGUILayout.ObjectField("Prefab Reference:", AC.KickStarter.inventoryManager.items[dataStuff.myObject.invID].linkedPrefab, typeof(GameObject), true); } else { GUILayout.Label("This is not an inventory item.", EditorStyles.miniBoldLabel); } GUILayout.EndVertical(); } } else { GUILayout.Label("This Object List is Empty."); return; } } if (GUI.changed) { EditorUtility.SetDirty(interactionObjectList); } }