示例#1
0
        public RemotePlayer(GameObject playerBody, PlayerContext playerContext, List <TechType> equippedTechTypes, PlayerModelManager playerModelManager)
        {
            Body          = playerBody;
            PlayerContext = playerContext;
            equipment     = new HashSet <TechType>(equippedTechTypes);

            this.playerModelManager = playerModelManager;

            Body.name = PlayerName;

            RigidBody            = Body.AddComponent <Rigidbody>();
            RigidBody.useGravity = false;

            // Get player
            PlayerModel = Body.RequireGameObject("player_view");

            // Move variables to keep player animations from mirroring and for identification
            ArmsController = PlayerModel.GetComponent <ArmsController>();
            ArmsController.smoothSpeedUnderWater = 0;
            ArmsController.smoothSpeedAboveWater = 0;

            AnimationController = PlayerModel.AddComponent <AnimationController>();

            playerModelManager.AttachPing(this);
            playerModelManager.BeginApplyPlayerColor(this);

            UpdateEquipmentVisibility();

            ErrorMessage.AddMessage($"{PlayerName} joined the game.");
        }
示例#2
0
        public RemotePlayer(GameObject playerBody, PlayerContext playerContext, List <TechType> equippedTechTypes, List <Pickupable> inventoryItems, PlayerModelManager modelManager)
        {
            PlayerContext = playerContext;

            Body      = playerBody;
            Body.name = PlayerName;

            equipment = new HashSet <TechType>(equippedTechTypes);

            RigidBody            = Body.AddComponent <Rigidbody>();
            RigidBody.useGravity = false;

            NitroxEntity.SetNewId(Body, playerContext.PlayerNitroxId);

            // Get player
            PlayerModel = Body.RequireGameObject("player_view");
            // Move variables to keep player animations from mirroring and for identification
            ArmsController = PlayerModel.GetComponent <ArmsController>();
            ArmsController.smoothSpeedUnderWater = 0;
            ArmsController.smoothSpeedAboveWater = 0;

            // ConditionRules has Player.Main based conditions from ArmsController
            PlayerModel.GetComponent <ConditionRules>().enabled = false;

            AnimationController = PlayerModel.AddComponent <AnimationController>();

            Transform inventoryTransform = new GameObject("Inventory").transform;

            inventoryTransform.SetParent(Body.transform);
            Inventory = new ItemsContainer(6, 8, inventoryTransform, "NitroxInventoryStorage_" + PlayerName, null);
            foreach (Pickupable item in inventoryItems)
            {
                Inventory.UnsafeAdd(new InventoryItem(item));
                Log.Debug($"Added {item.name} to {playerContext.PlayerName}.");
            }

            ItemAttachPoint = PlayerModel.transform.Find(PlayerEquipmentConstants.ITEM_ATTACH_POINT_GAME_OBJECT_NAME);

            playerModelManager = modelManager;
            playerModelManager.AttachPing(this);
            playerModelManager.BeginApplyPlayerColor(this);
            playerModelManager.RegisterEquipmentVisibilityHandler(PlayerModel);
            UpdateEquipmentVisibility();

            ErrorMessage.AddMessage($"{PlayerName} joined the game.");
        }