Ejemplo n.º 1
0
gameEntityT* newPlayerEntity(void) {
    gameEntityT* entity = newEntity();

    entity->data = calloc(1, sizeof(playerEntityDataT));
    
    const a3dsDataT* a3ds = gameResource      ("mesh:player", ResMesh);
          triMeshT*  mesh = a3dsCreateMesh    (a3ds, "Teapot002");
          materialT* mat  = a3dsCreateMaterial(a3ds, "Material #25");

    assert(mesh != NULL);
    assert(mat  != NULL);

    gameComponentT* gfx = newGraphicsComponent(mesh, mat);
    graphicsComponentDataT* gfx_data = gfx->data;
    assert(gfx_data->material != NULL);

    gameComponentT* phys = newPhysicsComponent(1.0f);
    phys->update_fn = handleInput;

    physicsComponentDataT* phys_data = phys->data;
    bodySetDerivativeFn(phys_data->body, playerDerivativeFn);

    attachComponent(entity, gfx);
    attachComponent(entity, phys);

    return (entity);
}
Ejemplo n.º 2
0
gameEntityT* newAsteroidEntity(void) {
    gameEntityT* entity = newEntity();

    entity->data = calloc(1, sizeof(asteroidEntityDataT));

    gameComponentT* gfx  = createGraphicsComponent();
    gfx->update_fn = rotateAsteroid;
    
    gameComponentT* phys = createPhysicsComponent();

    attachComponent(entity, gfx);
    attachComponent(entity, phys);
    
    asteroidEntityDataT* asteroid = entity->data;
    
    asteroid->a1 = (rand() / (float)RAND_MAX - 0.5f) * 6.0f;
    asteroid->a2 = (rand() / (float)RAND_MAX - 0.5f) * 6.0f;
    asteroid->angle1 = 0.0f;
    asteroid->angle2 = 0.0f;
    asteroid->scale = 0.03f * (0.5f + rand() / (float)RAND_MAX);
    asteroid->rot_axis_1 = randomVector();
    asteroid->rot_axis_2 = randomVector();

    return (entity);
}
Ejemplo n.º 3
0
void WEXPORT MProject::readSelf( WObjectFile& p )
{
    if( !_recursing ) {
        if( p.version() < 26 ) {
            p.readObject( &_filename );
        }
        _filename = p.filename();
//        _filename.toLower();
        setMakefile();
        if( p.version() > 26 ) {
            p.readObject( &_before );
            p.readObject( &_after );
        }
        int icount;
        p.readObject( &icount );
        for( int i=0; i<icount; i++ ) {
            WFileName tgtFilename;
            p.readObject( &tgtFilename );
            if( p.version() < 35 ) {
                tgtFilename.relativeTo( _filename );
            }
            if( !attachComponent( tgtFilename ) ) {
                //this line won't work; no view attached yet!
                //sayf( SayWarning, SayOk, "IDE Error: Unable to read target file '%s'", (const char*)tgtFilename );
            }
        }
        _dirty = false;
        _needsMake = true;
    }
}
Ejemplo n.º 4
0
void MyActor::initializeComponents()
{
	mA = createComponent<ke::NodeComponent>();
	attachComponent(mA);

	mB = createComponent<ke::AnimatorComponent>();
	attachComponent(mB);
	mB->setPosition(-32.f, -32.f);
	mB->addAnimation("idle", "ninja-cat-idle");
	mB->addAnimation("run", "ninja-cat-run");
	mB->playAnimation("idle");

	if (mScene.useLight())
	{
		mC = createComponent<ke::PointLightComponent>();
		attachComponent(mC);
		ke::Texture& texture = getApplication().getResource<ke::Texture>("pointLightTexture");
		mC->setTexture("pointLightTexture");
		mC->setOrigin(sf::Vector2f(texture.getSize().x * 0.5f, texture.getSize().y * 0.5f));
		mC->setColor(sf::Color(200, 200, 10));
		mC->setIntensity(5.f);
	}

	mD = createComponent<ke::InputComponent>();

	if (mBody != nullptr)
	{
		mE = createComponent<ke::PhysicComponent>();
		attachComponent(mE);
		mE->setPoints({ { -10.f, -10.f },{ 10.f, -10.f },{ 10.f, 20.f },{ -10.f, 20.f } });
		mE->setDensity(1.f);
	}

	mCam = createComponent<ke::CameraComponent>();
	attachComponent(mCam);
}
Ejemplo n.º 5
0
bool JFrameLayout::invokeMethod(const std::string &method, int argc, ...)
{
    bool result = false;
    va_list ap;
    va_start(ap, argc);

    // 挂载组件
    if (method == "attach_component") {
        if (argc == 2) {
            IJComponent *component = va_arg(ap, IJComponent*);
#if defined(__unix__)
            bool stayOn = va_arg(ap, int);
#else
            bool stayOn = va_arg(ap, bool);
#endif
            result = attachComponent(component, stayOn);
        }
    }
Ejemplo n.º 6
0
NAMESPACE_APX3D_BEGIN

Object::Object() {
    Transform *trans = new Transform();
    attachComponent(trans);
}