void Start() { myRenderer = GetComponent <MeshRenderer>(); actor = GetComponent <GridActor>(); inventory = GetComponent <InventoryComponent>(); if (actor && inventory) { inventoryObserver = new SimpleObserver <InventoryUpdateEvent>(inventory, (update) => { if (update.Type == InventoryUpdateEvent.UpdateType.Added) { OnItemAdded(); } else if (update.Type == InventoryUpdateEvent.UpdateType.Removed) { OnItemRemoved(); } }); ItemMap.RegisterInventory(inventory, actor.Position); transform.position = actor.Position + new Vector3(.25f, -.25f, .25f); Item mainItem = inventory.GetMostCommonItem(); visualizer = GetComponent <BlockVisualizer>(); visualizer.RenderBlock(mainItem.GetTexturePosition()); } cameraObserver = new SimpleObserver <CameraController>(Camera.main.GetComponent <CameraController>(), (c) => { if (this.myRenderer && actor) { this.myRenderer.enabled = c.PositionShouldBeVisible(actor.Position); } }); }