internal override void Load(SaveFileReader reader) { reader.ReadVersion(2); base.Load(reader); var guardObjectId = reader.ReadObjectID(); var guardObjectId2 = reader.ReadObjectID(); var guardPosition = reader.ReadVector3(); var guardPolygonTriggerName = reader.ReadAsciiString(); }
internal override void Load(SaveFileReader reader) { reader.ReadVersion(1); base.Load(reader); var containerObjectId = reader.ReadObjectID(); }
internal override void Load(SaveFileReader reader) { reader.ReadVersion(2); base.Load(reader); var guardObjectId = reader.ReadObjectID(); var guardPosition = reader.ReadVector3(); }
internal void Load(SaveFileReader reader, GameLogic gameLogic, Game game) { reader.ReadVersion(1); reader.ReadVersion(1); var unknown1 = reader.ReadUInt32(); var ghostObjectCount = reader.ReadUInt16(); for (var i = 0; i < ghostObjectCount; i++) { var objectId = reader.ReadObjectID(); var gameObject = gameLogic.GetObjectById(objectId); var ghostObject = new GhostObject(); // TODO ghostObject.Load(reader, gameLogic, game); } }
internal void Load(SaveFileReader reader, GameLogic gameLogic, Game game) { reader.ReadVersion(1); reader.ReadVersion(1); var objectId = reader.ReadObjectID(); _gameObject = gameLogic.GetObjectById(objectId); _geometryType = reader.ReadEnum <ObjectGeometry>(); // Sometimes there's a 0xC0, when it should be 0x0. _geometryIsSmall = reader.ReadByte() == 1; _geometryMajorRadius = reader.ReadSingle(); _geometryMinorRadius = reader.ReadSingle(); _angle = reader.ReadSingle(); _position = reader.ReadVector3(); var unknown6 = reader.ReadUInt32(); if (unknown6 != 0) { throw new InvalidDataException(); } var unknown7 = reader.ReadUInt32(); if (unknown7 != 0) { throw new InvalidDataException(); } var unknown8 = reader.ReadUInt32(); if (unknown8 != 0) { throw new InvalidDataException(); } for (var i = 0; i < 16; i++) { var numModels = reader.ReadByte(); if (numModels > 0 && i != 2) { throw new InvalidDataException(); } var modelInstances = new ModelInstance[numModels]; for (var j = 0; j < numModels; j++) { var modelName = reader.ReadAsciiString(); var model = game.AssetStore.Models.GetByName(modelName); var modelInstance = model.CreateInstance(game.AssetStore.LoadContext); modelInstances[j] = modelInstance; var scale = reader.ReadSingle(); if (scale != 1.0f) { throw new InvalidDataException(); } var houseColor = reader.ReadColorRgba(); // TODO: Use house color. reader.ReadVersion(1); var modelTransform = reader.ReadMatrix4x3Transposed(); modelInstance.SetWorldMatrix(modelTransform.ToMatrix4x4()); var numMeshes = reader.ReadUInt32(); if (numMeshes > 0 && numMeshes != model.SubObjects.Length) { throw new InvalidDataException(); } for (var k = 0; k < numMeshes; k++) { var meshName = reader.ReadAsciiString(); var meshBool = reader.ReadBoolean(); var meshTransform = reader.ReadMatrix4x3Transposed(); if (meshName != model.SubObjects[k].Name) { throw new InvalidDataException(); } // TODO: meshTransform is actually absolute, not relative. modelInstance.RelativeBoneTransforms[k] = meshTransform.ToMatrix4x4(); } } } var unknown = reader.ReadBoolean(); if (unknown) { reader.ReadByte(); reader.ReadUInt32(); } }
internal void Load(SaveFileReader reader) { reader.ReadVersion(1); var id = reader.ReadUInt32(); if (id != Id) { throw new InvalidDataException(); } var numObjects = reader.ReadUInt16(); for (var i = 0; i < numObjects; i++) { ObjectIds.Add(reader.ReadObjectID()); } for (var i = 0; i < 1; i++) { var unknownByte = reader.ReadByte(); if (unknownByte != 0) { throw new InvalidDataException(); } } _enteredOrExitedPolygonTrigger = reader.ReadBoolean(); _isAlive = reader.ReadBoolean(); for (var i = 0; i < 5; i++) { var unknown1 = reader.ReadBoolean(); if (unknown1 != false) { throw new InvalidDataException(); } } _numDestroyedSomething = reader.ReadUInt32(); var unknown11 = reader.ReadUInt32(); if (unknown11 != 0 && unknown11 != ObjectIds.Count) { throw new InvalidDataException(); } var waypointID = reader.ReadUInt32(); var unknown13 = reader.ReadUInt16(); if (unknown13 != 16) { throw new InvalidDataException(); } for (var i = 0; i < unknown13; i++) { var unknown19 = reader.ReadBoolean(); if (unknown19 != false) { //throw new InvalidDataException(); } } var unknown14 = reader.ReadBoolean(); if (unknown14 != false) { throw new InvalidDataException(); } var unknown15 = reader.ReadBoolean(); if (unknown15 != false) { throw new InvalidDataException(); } TargetObjectID = reader.ReadObjectID(); TeamToTeamRelationships.Load(reader); TeamToPlayerRelationships.Load(reader); }
internal void Load(SaveFileReader reader) { reader.ReadVersion(1); var id = reader.ReadUInt32(); if (id != ID) { throw new InvalidDataException(); } var numObjects = reader.ReadUInt16(); for (var i = 0; i < numObjects; i++) { ObjectIds.Add(reader.ReadObjectID()); } for (var i = 0; i < 2; i++) { var unknown1 = reader.ReadBoolean(); if (unknown1 != false) { throw new InvalidDataException(); } } var unknown2 = reader.ReadBoolean(); if (unknown2 != true) { //throw new InvalidDataException(); } for (var i = 0; i < 5; i++) { var unknown1 = reader.ReadBoolean(); if (unknown1 != false) { throw new InvalidDataException(); } } var unknown10 = reader.ReadUInt32(); if (unknown10 != 0) { throw new InvalidDataException(); } var unknown11 = reader.ReadUInt32(); if (unknown11 != 0 && unknown11 != ObjectIds.Count) { throw new InvalidDataException(); } var waypointID = reader.ReadUInt32(); var unknown13 = reader.ReadUInt16(); if (unknown13 != 16) { throw new InvalidDataException(); } for (var i = 0; i < unknown13; i++) { var unknown19 = reader.ReadBoolean(); if (unknown19 != false) { //throw new InvalidDataException(); } } var unknown14 = reader.ReadBoolean(); if (unknown14 != false) { throw new InvalidDataException(); } var unknown15 = reader.ReadBoolean(); if (unknown15 != false) { throw new InvalidDataException(); } TargetObjectID = reader.ReadObjectID(); TeamToTeamRelationships.Load(reader.Inner); TeamToPlayerRelationships.Load(reader.Inner); }