0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

言語実装Advent Calendar 2023

Day 18

NeosVR コンパイラ その12

Last updated at Posted at 2023-12-27

概要

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);  
}





成果物

実行確認の手順。

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

2023-09-28 01.21.16.jpg

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

以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?