예제 #1
0
    public void DropOrUpdateItem(Items.ID Type, Vector3 Position, Vector3 BaseMomentum, string Name)     //Performs the actual drop
    {
        if (EntitiesRoot.HasNode(Name))
        {
            DroppedItem Instance = EntitiesRoot.GetNode <DroppedItem>(Name);
            Instance.Translation    = Position;
            Instance.Momentum       = BaseMomentum;
            Instance.PhysicsEnabled = true;
        }
        else
        {
            Vector3 LevelPlayerPos = new Vector3(Game.PossessedPlayer.Translation.x, 0, Game.PossessedPlayer.Translation.z);

            if (GetChunkPos(Position).DistanceTo(LevelPlayerPos) <= Game.ChunkRenderDistance * (PlatformSize * 9))
            {
                DroppedItem ToDrop = DroppedItemScene.Instance() as DroppedItem;
                ToDrop.Translation = Position;
                ToDrop.Momentum    = BaseMomentum;
                ToDrop.Type        = Type;
                ToDrop.Name        = Name;
                ToDrop.GetNode <MeshInstance>("MeshInstance").Mesh = Items.Meshes[Type];

                AddItemToChunk(ToDrop);
                ItemList.Add(ToDrop);
                EntitiesRoot.AddChild(ToDrop);
            }
        }
    }