19d4cc2572d37983607df38b0f4216ed76ac51814sm/*
29d4cc2572d37983607df38b0f4216ed76ac51814sm * Copyright (C) 2010 The Android Open Source Project
39d4cc2572d37983607df38b0f4216ed76ac51814sm *
49d4cc2572d37983607df38b0f4216ed76ac51814sm * Licensed under the Apache License, Version 2.0 (the "License");
59d4cc2572d37983607df38b0f4216ed76ac51814sm * you may not use this file except in compliance with the License.
69d4cc2572d37983607df38b0f4216ed76ac51814sm * You may obtain a copy of the License at
79d4cc2572d37983607df38b0f4216ed76ac51814sm *
89d4cc2572d37983607df38b0f4216ed76ac51814sm *      http://www.apache.org/licenses/LICENSE-2.0
99d4cc2572d37983607df38b0f4216ed76ac51814sm *
109d4cc2572d37983607df38b0f4216ed76ac51814sm * Unless required by applicable law or agreed to in writing, software
119d4cc2572d37983607df38b0f4216ed76ac51814sm * distributed under the License is distributed on an "AS IS" BASIS,
129d4cc2572d37983607df38b0f4216ed76ac51814sm * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139d4cc2572d37983607df38b0f4216ed76ac51814sm * See the License for the specific language governing permissions and
149d4cc2572d37983607df38b0f4216ed76ac51814sm * limitations under the License.
159d4cc2572d37983607df38b0f4216ed76ac51814sm */
169d4cc2572d37983607df38b0f4216ed76ac51814sm
179d4cc2572d37983607df38b0f4216ed76ac51814sm
189d4cc2572d37983607df38b0f4216ed76ac51814smpackage com.replica.replicaisland;
199d4cc2572d37983607df38b0f4216ed76ac51814sm
209d4cc2572d37983607df38b0f4216ed76ac51814smpublic class FrameRateWatcherComponent extends GameComponent {
219d4cc2572d37983607df38b0f4216ed76ac51814sm	private RenderComponent mRenderComponent;
229d4cc2572d37983607df38b0f4216ed76ac51814sm	private DrawableObject mDrawable;
239d4cc2572d37983607df38b0f4216ed76ac51814sm	private float mMaxFrameTime = 1.0f / 30.0f;
249d4cc2572d37983607df38b0f4216ed76ac51814sm
259d4cc2572d37983607df38b0f4216ed76ac51814sm	public FrameRateWatcherComponent() {
269d4cc2572d37983607df38b0f4216ed76ac51814sm        super();
279d4cc2572d37983607df38b0f4216ed76ac51814sm        setPhase(GameComponent.ComponentPhases.THINK.ordinal());
289d4cc2572d37983607df38b0f4216ed76ac51814sm    }
299d4cc2572d37983607df38b0f4216ed76ac51814sm
309d4cc2572d37983607df38b0f4216ed76ac51814sm    @Override
319d4cc2572d37983607df38b0f4216ed76ac51814sm    public void reset() {
329d4cc2572d37983607df38b0f4216ed76ac51814sm    	mRenderComponent = null;
339d4cc2572d37983607df38b0f4216ed76ac51814sm    	mDrawable = null;
349d4cc2572d37983607df38b0f4216ed76ac51814sm    }
359d4cc2572d37983607df38b0f4216ed76ac51814sm
369d4cc2572d37983607df38b0f4216ed76ac51814sm    @Override
379d4cc2572d37983607df38b0f4216ed76ac51814sm    public void update(float timeDelta, BaseObject parent) {
389d4cc2572d37983607df38b0f4216ed76ac51814sm    	if (mRenderComponent != null && mDrawable != null) {
399d4cc2572d37983607df38b0f4216ed76ac51814sm    		if (timeDelta > mMaxFrameTime) {
409d4cc2572d37983607df38b0f4216ed76ac51814sm    			mRenderComponent.setDrawable(mDrawable);
419d4cc2572d37983607df38b0f4216ed76ac51814sm    		} else {
429d4cc2572d37983607df38b0f4216ed76ac51814sm    			mRenderComponent.setDrawable(null);
439d4cc2572d37983607df38b0f4216ed76ac51814sm    		}
449d4cc2572d37983607df38b0f4216ed76ac51814sm    	}
459d4cc2572d37983607df38b0f4216ed76ac51814sm	}
469d4cc2572d37983607df38b0f4216ed76ac51814sm
479d4cc2572d37983607df38b0f4216ed76ac51814sm    public void setup(RenderComponent render, DrawableObject drawable) {
489d4cc2572d37983607df38b0f4216ed76ac51814sm    	mRenderComponent = render;
499d4cc2572d37983607df38b0f4216ed76ac51814sm    	mDrawable = drawable;
509d4cc2572d37983607df38b0f4216ed76ac51814sm    }
519d4cc2572d37983607df38b0f4216ed76ac51814sm}
52