blob: aba217913c2c843bd50f5b9cba99422e70ec4b10 [file] [log] [blame]
/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.replica.replicaisland;
/**
* A game component implements a single feature of a game object. Components are run once per frame
* when their parent object is active. Updating a game object is equivalent to updating all of its
* components. Note that a game object may contain more than one instance of the same type of
* component.
*/
public abstract class GameComponent extends PhasedObject {
// Defines high-level buckets within which components may choose to run.
public enum ComponentPhases {
THINK, // decisions are made
PHYSICS, // impulse velocities are summed
POST_PHYSICS, // inertia, friction, and bounce
MOVEMENT, // position is updated
COLLISION_DETECTION, // intersections are detected
COLLISION_RESPONSE, // intersections are resolved
POST_COLLISION, // position is now final for the frame
ANIMATION, // animations are selected
PRE_DRAW, // drawing state is initialized
DRAW, // drawing commands are scheduled.
FRAME_END, // final cleanup before the next update
}
public boolean shared;
public GameComponent() {
super();
shared = false;
}
}