1 /* 2 * Entreri, an entity-component framework in Java 3 * 4 * Copyright (c) 2013, Michael Ludwig 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without modification, 8 * are permitted provided that the following conditions are met: 9 * 10 * Redistributions of source code must retain the above copyright notice, 11 * this list of conditions and the following disclaimer. 12 * Redistributions in binary form must reproduce the above copyright notice, 13 * this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 20 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 23 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 */ 27 package com.lhkbob.entreri; 28 29 /** 30 * <p/> 31 * An interface that designates something is ownable. Both entities and components can be 32 * ownable. This can be used to create hierarchies of components. As an example, a 33 * ParticleSystem component might own the Geometry component that a task prepares for it. 34 * <p/> 35 * The Ownable interface is the main entry-point for programmers to manage their 36 * inter-entity/component relationships, and not {@link Owner}. The Owner interface exists 37 * so that Ownable implementations can notify owners of changes. 38 * 39 * @author Michael Ludwig 40 */ 41 public interface Ownable { 42 /** 43 * <p/> 44 * Set the new owner of the given object. If the current owner before this call is 45 * non-null, it must be first notified that its ownership has been revoked, before 46 * granting ownership to the new owner. 47 * <p/> 48 * If the new owner is null, the object becomes un-owned by anything. 49 * 50 * @param owner The new owner 51 */ 52 public void setOwner(Owner owner); 53 54 /** 55 * Get the current owner of this object. If null is returned, the object is not owned 56 * by anything. 57 * 58 * @return The current owner 59 */ 60 public Owner getOwner(); 61 }