public MotionTrigger(Stream stream) { if (!stream.CanRead || !stream.CanSeek) { throw new InvalidDataException($"Read or seek must be supported."); } BinaryReader reader = new BinaryReader(stream); byte rangeTriggerCount = reader.ReadByte(); byte frameTriggerCount = reader.ReadByte(); short frameTriggerOffset = reader.ReadInt16(); RangeTriggerList = new List <RangeTrigger>(); for (int i = 0; i < rangeTriggerCount; i++) { RangeTrigger rangeTrigger = new RangeTrigger(); rangeTrigger.StartFrame = reader.ReadInt16(); rangeTrigger.EndFrame = reader.ReadInt16(); rangeTrigger.Trigger = reader.ReadByte(); rangeTrigger.ParamSize = reader.ReadByte(); rangeTrigger.Param = new List <short>(); for (int j = 0; j < rangeTrigger.ParamSize; j++) { rangeTrigger.Param.Add(reader.ReadInt16()); } RangeTriggerList.Add(rangeTrigger); } FrameTriggerList = new List <FrameTrigger>(); for (int i = 0; i < frameTriggerCount; i++) { FrameTrigger frameTrigger = new FrameTrigger(); frameTrigger.Frame = reader.ReadInt16(); frameTrigger.Trigger = reader.ReadByte(); frameTrigger.ParamSize = reader.ReadByte(); frameTrigger.Param = new List <short>(); for (int j = 0; j < frameTrigger.ParamSize; j++) { frameTrigger.Param.Add(reader.ReadInt16()); } FrameTriggerList.Add(frameTrigger); } }
void Start() { WireframeBoxes = SimulatorManager.Instance.WireframeBoxes; if (RangeTrigger == null) { RangeTrigger = GetComponentInChildren <RangeTrigger>(); } RangeTrigger.SetCallbacks(WhileInRange); RangeTrigger.transform.localScale = MaxDistance * Vector3.one; MapOrigin = MapOrigin.Find(); Detected = new Dictionary <uint, Tuple <Detected3DObject, Collider> >(); CurrentIDs = new HashSet <uint>(); StartCoroutine(OnPublish()); }