public override void OnStateEnter(NpcInput input) { pathgrid = Pathgrid.LoadPathGrid(input.transform.position); if (pathgrid != null) { movementTarget = pathgrid.GetNearestPoint(input.transform.position); var offset = new Vector3(Mathf.FloorToInt(input.transform.position.x / 8192) * 8192, 0, Mathf.FloorToInt(input.transform.position.z / 8192) * 8192); targetPos = movementTarget.Position + offset;; } else { var pos = Random.insideUnitCircle * input.WanderData.Distance; targetPos = input.transform.position + new Vector3(pos.x, 0, pos.y); } }
public static void Create(BinaryReader reader) { var header = new RecordHeader(reader); switch (header.Type) { case RecordType.BirthSign: BirthSignRecord.Create(reader, header); break; case RecordType.BodyPart: BodyPartRecord.Create(reader, header); break; case RecordType.Cell: CellRecord.Create(reader, header); break; case RecordType.Dialogue: DialogRecord.Create(reader, header); break; case RecordType.GameSetting: GameSetting.Create(reader, header); break; case RecordType.Info: InfoRecord.Create(reader, header); break; case RecordType.Land: LandRecord.Create(reader, header); break; case RecordType.LandTexture: LandTextureRecord.Create(reader, header); break; case RecordType.MagicEffect: MagicEffectRecord.Create(reader, header); break; case RecordType.PathGrid: Pathgrid.Create(reader, header); break; case RecordType.Script: Script.Create(reader, header); break; case RecordType.Skill: SkillRecord.Create(reader, header); break; case RecordType.SoundGenerator: SoundGenerator.Create(reader, header); break; case RecordType.Tes3: Tes3Record.Create(reader, header); break; default: { var size = GotoSubrecord(SubRecordType.Id, header); var id = reader.ReadString(size); reader.BaseStream.Position = header.DataOffset + header.DataSize; var recordData = CreateRecordData(header.Type); recordData.Header = header; Records.Add(id, recordData); break; } } }