public Node create_node(IPositionable position, object prefab) { if (!(prefab is string) && !(prefab is NetPrefab)) { throw new Exception("Prefab must be string or NetPrefab"); } CreateNodeMessage msg = new CreateNodeMessage() { Position = position.position, Type = prefab is NetPrefab ? ((NetPrefab)prefab).name : (string)prefab }; Node shell = ObjectStorage.Instance.Nodes.CreateShell(); client.RemoteCall(Contracts.CreateNode, msg, (ret, error) => { if (error != null) { shell.AssignData(null, error); return(null); } NetNodeData data = (NetNodeData)ret; ObjectStorage.Instance.Nodes.AddDataToDictionary(data); shell.AssignData(data); return(null); }); return(shell); }
public Node create_node(IPositionable position, object prefab) { if (!(prefab is string) && !(prefab is NetPrefab)) { throw new Exception("Prefab must be string or NetPrefab"); } CreateNodeMessage msg = new CreateNodeMessage() { Position = position.position, Type = prefab is NetPrefab ? ((NetPrefab)prefab).name : (string)prefab }; return(new Node(client.RemoteCall <NetNodeMessage>(Contracts.CreateNode, msg), this)); }