NeosVR コンパイラ その12

# 概要
NeosVRのオブジェクトを外部で生成するコンパイラを開発した。
俺コードのコンパイラ仕様を見直しする。

# 俺コードのコンパイラ仕様変更
- elixir製オブジェクトサーバーを取りやめる。
- obj.jsを採用。


# サンプルコード

```

var out = document.getElementById("out");
var src = document.getElementById("src"); 
var a = {};

function run() {
  var str = src.value;
  var lines = str.split("\n");
  for (var i = 0; i < lines.length; i++)
  {
		if (lines[i].substring(0, 1) == "{")
		{	
			lines[i] = lines[i].replace("{", "");
	    var code = lines[i].split("} =");
			var va = code[0].split(",");
			var vb = code[1].split(" ");
      switch (va[0])
      {
      case "a":
				switch (vb[1])
      	{
      	case "LogiX.T":
					a.Source = LogiX.T.Components.Data[0].Data.ID;
					a.SetupSource = LogiX.T.Components.Data[0].Data.ID;
					a.TargetSlot = LogiX.T.Children[0].Children[0].Children[0].Children[0].Children[0].ID;
      	break;
      	case "LogiX.Display":
      	  alert("d")
      	break;
      	default:
      	break;
      	}
      break;
      case "":
				switch (vb[1])
      	{
      	case "LogiX.T":
					switch (vb[2])
      		{
      		case "":
      		  alert("t3")
      		break;
      		case "a":
      		  alert("d3")
      		break;
      		default:
      		break;
      		}
      	break;
      	case "LogiX.Display":
					switch (vb[2])
      		{
      		case "":
      		  alert("t4")
      		break;
      		case "a":
						LogiX.Display.Components.Data[1].Data.Source.Data = a.Source;
						LogiX.Display.Children[0].Children[0].Children[0].Children[0].Children[0].Components.Data[0].Data.SetupSource.Data = a.SetupSource;
						LogiX.Display.Children[0].Children[0].Children[0].Children[0].Children[0].Components.Data[0].Data.TargetSlot.Data = a.TargetSlot;
						LogiX.Display.Children[0].Children[0].Children[0].Children[0].Children[0].Children[0].Active.Data = true
      		break;
      		default:
      		break;
      		}
      	break;
      	default:
      	break;
      	}
      break;
      default:
      break;
      }
		}
		else
		{
	    var code = lines[i].split(" ");
  	  switch (code[0])
    	{
	  	case "use":
      	switch (code[1])
      	{
      	case "Ore":
      	  Ore.Object.Name.Data = code[2];
      	break;
      	default:
      	  alert(i);
      	break;
      	}
    	break;
    	case "new":
      	switch (code[1])
    	  {
      	case "LogiX.T":
      	  //make("LogiX.T");
      	break;
      	case "LogiX.Display":
      	  //make("LogiX.Display");
      	break;
      	default:
     	 	break;
      	}
    	break;
    	case "add":
    	  switch (code[1])
    	  {
    	  case "LogiX.T":
    	    Ore.Object.Children.push(LogiX.T);
    	  break;
    	  case "LogiX.Display":
    	    Ore.Object.Children.push(LogiX.Display);
    	  break;
    	  default:
   	   	break;
      	}
    	break;
    	default:
				//alert(lines[i]);
    	break;
    	}
		}
  }
	out.value = JSON.stringify(Ore);  
}





```

# 成果物

https://embed.plnkr.co/plunk/rZOafzAGrs32PIKK


# 実行確認の手順。
- 環境は、windows10
- NeosVRは、Streemじゃない方
- 上のページで生成されたjsonを、メモ帳で「test2.json」で保存する。
- NeosVRを起動して、セッションに入る。
- NeosVRでファイルブラウザを開いて、「test2.json」をダブルクリックする。
- NeosVRで以下のように表示されれば、成功です。

![2023-09-28 01.21.16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/007b16a0-558a-c5a6-8ac1-439f505da10e.jpeg)

- できれば、実行確認の報告、お願いします。



以上。