예제 #1
0
        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);
    }
예제 #3
0
        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);
        }