public LevelPropAnimation(LevelProp lp, string animationName, float unk1 = 0.0f, float animationTime = 0.0f, int unk2 = 1, int unk3 = 1, bool deletePropAfterAnimationFinishes = false) : base(PacketCmd.PKT_S2C_LevelPropAnimation) { buffer.Write(Encoding.Default.GetBytes(animationName)); buffer.fill(0, 64 - animationName.Length); buffer.Write((float)unk1); buffer.Write((float)animationTime); buffer.Write((uint)lp.NetId); buffer.Write((int)unk2); buffer.Write((int)unk3); byte delete = 0x00; if (deletePropAfterAnimationFinishes) { delete = 0x01; } buffer.Write((byte)delete); // Most likely deletes prop after animation ends when set to 1 buffer.Write((byte)0x00); buffer.Write((byte)0x00); }
public void AddPropToGrid(LevelProp _prop, IntVector2 _position) { Square referenceSquare = grid.squareArray[_position.x, _position.y]; for (int i = 0; i < _prop.impassableSquares.Length; i++) { IntVector2 impassablePosition = _prop.impassableSquares[i]; grid.squareArray[_position.x + impassablePosition.x, _position.y + impassablePosition.y].state = Square.State.Impassable; } GameObject element = Instantiate(_prop.physicalObject, referenceSquare.position + _prop.positionOffset, Quaternion.identity, environment); instantiatedLevelPieces.Add(element); }
public LevelPropSpawn(LevelProp lp) : base(PacketCmd.PKT_S2C_LevelPropSpawn) { buffer.Write((int)lp.NetId); buffer.Write((byte)0x40); // unk buffer.Write((byte)lp.SkinId); buffer.Write((byte)0); buffer.Write((byte)0); buffer.Write((byte)0); // Unk buffer.Write((float)lp.X); buffer.Write((float)lp.Z); buffer.Write((float)lp.Y); buffer.Write((float)0.0f); // Rotation Y buffer.Write((float)lp.DirX); buffer.Write((float)lp.DirZ); buffer.Write((float)lp.DirY); buffer.Write((float)lp.Unk1); buffer.Write((float)lp.Unk2); buffer.Write((float)1.0f); buffer.Write((float)1.0f); buffer.Write((float)1.0f); // Scaling buffer.Write((int)lp.Team); // Probably a short buffer.Write((int)2); // nPropType [size 1 . 4] (4.18) -- if is a prop, become unselectable and use direction params foreach (var b in Encoding.Default.GetBytes(lp.Name)) { buffer.Write((byte)b); } buffer.fill(0, 64 - lp.Name.Length); foreach (var b in Encoding.Default.GetBytes(lp.Model)) { buffer.Write(b); } buffer.fill(0, 64 - lp.Model.Length); }