Skip to content

Commit

Permalink
add inspector modifiable and name
Browse files Browse the repository at this point in the history
  • Loading branch information
memelotsqui committed Feb 6, 2023
1 parent 5e8ae41 commit fd20d29
Show file tree
Hide file tree
Showing 7 changed files with 250 additions and 1 deletion.
34 changes: 34 additions & 0 deletions RoateObjectTS.jsmart
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
class RotateObject extends ObjectComponent{
//test:GameObject
tt:string
num:number
cold:string
newValue:number



onEnable(){
console.log(this.test)
}
onLoad(){

}
start(){

}

update(){

}


//constructor(object, smart){
//super(object)
//const userData = object.userData.RotateObject

// int, float, string, array


//this.value = userData.value; // int
//}
}
7 changes: 7 additions & 0 deletions RoateObjectTS.jsmart.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,87 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;

namespace WEBGL_EXPORTER.GLTF
{
[CustomEditor(typeof(SmartObjectBehaviour),true)]
public class SmartObjectBehaviour_Editor : Editor
{
SmartObjectBehaviour myScript;

private void OnEnable()
{
myScript = (SmartObjectBehaviour)target;



if (myScript.javascript == null)
{
// find th js code
}
string displayTitle = StringUtilities.GetFileNameFromPath(StringUtilities.GetFullPathFromAsset(myScript.javascript));
var inspectorTitles = ObjectNamesUtility.GetInternalInspectorTitlesCache();
inspectorTitles[typeof(SmartObjectBehaviour)] = displayTitle + " (JS Smart)";

if (myScript.javascript != null)
{

string file_path = StringUtilities.GetFullPathFromAsset(myScript.javascript);
StreamReader inp_stm = new StreamReader(file_path);
List<JSVar> jsvars = new List<JSVar>();
while (!inp_stm.EndOfStream)
{

string inp_ln = inp_stm.ReadLine();
//Debug.Log(inp_ln);
string lineVal = inp_ln.Replace('\t', ' ').Replace(" ", "").Replace(";", "");
if (lineVal.Contains(":") && !lineVal.StartsWith("//")) {

string[] splitString = lineVal.Split(":");
AddVar(splitString[0], splitString[1], ref jsvars);
}
}
inp_stm.Close();
myScript.allVars = jsvars;
}
}

private void AddVar(string var_name, string type_name, ref List<JSVar> final_list)
{
//Debug.Log("enters");

JSVar v = myScript.getExistingJSVar(var_name, type_name);

if (v != null)
final_list.Add(v);
else
final_list.Add(new JSVar(var_name, type_name));
}

public override void OnInspectorGUI()
{
GUI.enabled = false;
myScript.javascript = EditorGUILayout.ObjectField("Javascript",myScript.javascript,typeof(Object), false);
GUI.enabled = true;
for (int i =0; i < myScript.allVars.Count; i++)
{
JSVar jsvar = myScript.allVars[i];
switch (myScript.allVars[i].getJsVarName())
{
case "number":
jsvar.numberValue = EditorGUILayout.FloatField(jsvar.varName, jsvar.numberValue);

break;
case "string":
jsvar.stringValue = EditorGUILayout.TextField(jsvar.varName, jsvar.stringValue);
break;
//default:
// JSScript sc = myScript.allVars[i] as JSScript;
// sc.varValue = (SmartObjectBehaviour)EditorGUILayout.ObjectField(sc.varName, sc.varValue, typeof(SmartObjectBehaviour), true);
// break;
}
}
}
}
}
8 changes: 8 additions & 0 deletions Scripts/Editor/Utilities.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions Scripts/Editor/Utilities/ObjectNamesUtility.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Reflection;
using UnityEditor;


public static class ObjectNamesUtility
{
public static Dictionary<Type, string> GetInternalInspectorTitlesCache()
{
Type inspectorTitlesType = typeof(ObjectNames).GetNestedType("InspectorTitles", BindingFlags.Static | BindingFlags.NonPublic);
var inspectorTitlesField = inspectorTitlesType.GetField("s_InspectorTitles", BindingFlags.Static | BindingFlags.NonPublic);
return (Dictionary<Type, string>)inspectorTitlesField.GetValue(null);
}
}
11 changes: 11 additions & 0 deletions Scripts/Editor/Utilities/ObjectNamesUtility.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,15 +1,124 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

namespace WEBGL_EXPORTER.GLTF
{
public class SmartObjectBehaviour : MonoBehaviour
{
public Object javascript;

[SerializeField]
public List<JSVar> allVars;


public UnityEngine.Object javascript;

private void Start()
{
// do nothing, just need the checkbox
}

public JSVar getExistingJSVar(string var_name, string type = "")
{
if (allVars == null)
return null;

foreach (JSVar jsvar in allVars)
{
if (jsvar.isSame(var_name, type))
return jsvar;
}
return null;
}

}


[Serializable]
public class JSVar
{
[SerializeField]
public string varName = "";
[SerializeField]
public string typeName = "";

public SmartObjectBehaviour scriptValue;
public string stringValue;
public float numberValue;
public JSVar(string var_name, string type_name)
{
varName = var_name;
typeName = type_name;
}
public virtual bool isSame(string var_name, string var_type)
{
return varName == var_name;
}

public virtual string getJsVarName()
{
return typeName;
}
}
//[Serializable]
//public class JSScript : JSVar
//{
// [SerializeField]
// public SmartObjectBehaviour varValue;

// public JSScript(string var_name, string type_name)
// {
// varName = var_name;
// typeName = type_name;
// }
// public override bool isSame(string var_name, string var_type)
// {
// if (var_type == "")
// {
// return false;
// }
// return base.isSame(var_name, "");
// }
//}
//[Serializable]
//public class JSString : JSVar
//{

// [SerializeField]
// public string varValue;
// public JSString(string var_name)
// {
// varName = var_name;
// varValue = "";
// typeName = "string";
// }
// public override bool isSame(string var_name, string var_type)
// {
// if (var_type != "string")
// {
// return false;
// }
// return base.isSame(var_name, "");
// }
//}
//[Serializable]
//public class JSNumber : JSVar
//{
// [SerializeField]
// public float varValue;
// public JSNumber(string var_name)
// {
// varName = var_name;
// varValue = 0f;
// typeName = "number";
// }
// public override bool isSame(string var_name, string var_type)
// {
// if (var_type != "number")
// return false;
// return base.isSame(var_name, "");
// }

//}
}

0 comments on commit fd20d29

Please sign in to comment.