public override void OnLoad(ISynapseObject synapseObject, ArraySegment <string> args) { if (!(synapseObject is SynapseDoorObject door)) { return; } if (args.Count == 0 || !int.TryParse(args.At(0), out var leftschematicID) || !SchematicHandler.Get.IsIDRegistered(leftschematicID)) { return; } var leftDoor = door.GameObject.transform.GetChild(2).GetChild(1).GetChild(0); var leftschematic = SchematicHandler.Get.SpawnSchematic(leftschematicID, leftDoor.transform.position); leftschematic.GameObject.transform.parent = leftDoor.transform; if (door.DoorType != Enum.SpawnableDoorType.EZ) { if (args.Count < 2 || !int.TryParse(args.At(1), out var righttschematicID) || !SchematicHandler.Get.IsIDRegistered(righttschematicID)) { return; } var rightDoor = door.GameObject.transform.GetChild(2).GetChild(1).GetChild(1); var rightschematic = SchematicHandler.Get.SpawnSchematic(righttschematicID, rightDoor.transform.position); rightschematic.GameObject.transform.parent = rightDoor.transform; } }
public override void OnUpdate(ISynapseObject synapseObject) { foreach (var player in Server.Get.Players) { if (Vector3.Distance(player.Position, synapseObject.Position) < Distance[synapseObject]) { player.Position = GetTeleportPosition(Args[synapseObject], synapseObject); } } }
public override Vector3 GetTeleportPosition(ArraySegment <string> args, ISynapseObject synapseObject) { if (args.Count >= 5 && MapPoint.TryParse($"{args.At(1)}:{args.At(2)}:{args.At(3)}:{args.At(4)}", out var point)) { return(point.Position); } Logger.Get.Warn($"Synapse-Schematic: Teleporter with Invalid Arguments at {synapseObject.Position}. Player will be send to Position 0"); return(Vector3.zero); }
public override void OnLoad(ISynapseObject synapseObject, ArraySegment <string> args) { Args[synapseObject] = args; if (args.Count > 0 && float.TryParse(args.At(0), out var distance)) { Distance[synapseObject] = distance; } else { Distance[synapseObject] = 1; } }
public override Vector3 GetTeleportPosition(ArraySegment <string> args, ISynapseObject synapseObject) { if (args.Count == 2 && float.TryParse(args.At(1), out var result)) { return(new Vector3(result, result, result)); } if (args.Count >= 4 && float.TryParse(args.At(1), out var x) && float.TryParse(args.At(2), out var y) && float.TryParse(args.At(3), out var z)) { return(new Vector3(x, y, z)); } Logger.Get.Warn($"Synapse-Schematic: Teleporter with Invalid Arguments at {synapseObject.Position}. Player will be send to Position 0"); return(Vector3.zero); }
public abstract Vector3 GetTeleportPosition(ArraySegment <string> args, ISynapseObject synapseObject);
public override void OnDestroy(ISynapseObject synapseObject) { Args.Remove(synapseObject); Distance.Remove(synapseObject); }
public void AttachSynapseObject(ISynapseObject so, Vector3 offset) { so.Rotation = transform.rotation; so.Position = transform.TransformPoint(offset); so.GameObject.transform.parent = transform; }
internal SOEventArgs(ISynapseObject so) => Object = so;
public virtual void OnUpdate(ISynapseObject synapseObject) { }
public virtual void OnDestroy(ISynapseObject synapseObject) { }
public virtual void OnLoad(ISynapseObject synapseObject, System.ArraySegment <string> args) { }