Blame |
Last modification |
View Log
| RSS feed
package com.gebauz.burutaru.game.entities;
import java.util.HashMap;
import java.util.Map;
import com.gebauz.bauzoid.graphics.sprite.SpriteInstance;
import com.gebauz.bauzoid.math.Vector2;
import com.gebauz.bauzoid.math.Vector3;
import com.gebauz.burutaru.GameConsts;
import com.gebauz.burutaru.game.GameLogic;
public class LightManager
extends Entity
{
// Constants========================================================================================
public static final int NUM_LIGHTS =
10;
public static final float DEFAULT_LIGHT_Z = 1.4f
;
// Embedded Types===================================================================================
// Fields===========================================================================================
private Vector3 mLightPos =
new Vector3
();
private Vector3 mTargetLightPos =
new Vector3
();
private Vector3
[] mLights =
new Vector3
[NUM_LIGHTS
];
private boolean[] mLightActive =
new boolean[NUM_LIGHTS
];
private int mNumLightsActive =
0;
private Vector2 mTempVector =
new Vector2
();
// Methods==========================================================================================
public LightManager
(GameLogic gameLogic
)
{
super(gameLogic
);
}
@
Override
public void initAsync
()
{
}
@
Override
public void init
()
{
for (int i =
0; i
< NUM_LIGHTS
; i++
)
{
mLights
[i
] =
new Vector3
();
mLightActive
[i
] =
false;
}
mLightPos.
set(GameConsts.
VIRTUAL_SCREEN_WIDTH/
2, GameConsts.
VIRTUAL_SCREEN_HEIGHT/
3, 1.4f
);
}
@
Override
public void exit
()
{
}
@
Override
public void update
(float deltaTime
)
{
/*mTargetLightPos.x = GameConsts.VIRTUAL_SCREEN_WIDTH/2;
mTargetLightPos.y = GameConsts.VIRTUAL_SCREEN_WIDTH/3;
mTargetLightPos.z = DEFAULT_LIGHT_Z;
mNumLightsActive = 1;
for (int i = 0; i < NUM_LIGHTS; i++)
{
if (mLightActive[i])
{
mTargetLightPos.x += mLights[i].x;
mTargetLightPos.y += mLights[i].y;
mTargetLightPos.z += mLights[i].z;
mNumLightsActive++;
}
}
if (mNumLightsActive > 0)
{
mTargetLightPos.x /= mNumLightsActive;
mTargetLightPos.y /= mNumLightsActive;
mTargetLightPos.z /= mNumLightsActive;
}*/
//mLightPos.set(mTargetLightPos.x, mTargetLightPos.y, mTargetLightPos.z);
//mLightPos.x = getGameLogic().getLevel().getCurrentScrollVelocity
mLightPos.
set(GameConsts.
VIRTUAL_SCREEN_WIDTH*2/
3, -
100, 1.4f
);
/*mLightPos.x -= getGameLogic().getLevel().getCurrentScrollVelocity().x;
mLightPos.y -= getGameLogic().getLevel().getCurrentScrollVelocity().y;
if (getGameLogic().getLevel().getCurrentScrollVelocity().x > 0)
{
if (mLightPos.x < 0)
mLightPos.x = GameConsts.VIRTUAL_SCREEN_WIDTH;
}
else
{
if (mLightPos.x > GameConsts.VIRTUAL_SCREEN_WIDTH)
mLightPos.x = 0;
}
if (getGameLogic().getLevel().getCurrentScrollVelocity().y > 0)
{
if (mLightPos.y < 0)
mLightPos.y = GameConsts.VIRTUAL_SCREEN_HEIGHT;
}
else
{
if (mLightPos.y > GameConsts.VIRTUAL_SCREEN_HEIGHT)
mLightPos.y = 0;
}
*/
}
@
Override
public void render
()
{
}
public void clearLightSources
()
{
for (int i =
0; i
< NUM_LIGHTS
; i++
)
{
mLightActive
[i
] =
false;
}
}
public void addLightSource
(float x,
float y,
float z
)
{
for (int i =
0; i
< NUM_LIGHTS
; i++
)
{
if (!mLightActive
[i
])
{
mLightActive
[i
] =
true;
mLights
[i
].
set(x, y, z
);
break;
}
}
}
// Getters/Setters==================================================================================
public final Vector3 getLightPos
()
{
return mLightPos
;
}
public final int getNumLightsActive
()
{
return mNumLightsActive
;
}
public final void setLightPosTo
(SpriteInstance sprite
)
{
float lightPosX = mLightPos.
x;
float lightPosY = mLightPos.
y;
sprite.
transform.
worldToSprite(lightPosX, lightPosY, mTempVector
);
//mTempVector.x = lightPosX - sprite.transform.x + sprite.transform.pivotX;
//mTempVector.y = lightPosY - sprite.transform.y + sprite.transform.pivotY;
mTempVector.
x /= sprite.
transform.
w;
mTempVector.
y /= sprite.
transform.
h;
sprite.
setLightPos(mTempVector.
x, mTempVector.
y, mLightPos.
z);
}
}