void Xiq::Prepare() { collides = true; angle = RandomUnit(); steer = RandomUnitVector(); SetRadius(30); speed = 100; max_speed = 100; force = RandomUnitVector()*1000; radius_waves[0].amplitude = 60; radius_waves[0].frequency = 1.3f; radius_waves[0].offset = 20; radius_waves[1].amplitude = 30; radius_waves[1].frequency = 0.7f; radius_waves[1].phase = math::pi/2.0f; colors[0].amplitude = 55; colors[0].offset = 200; colors[0].frequency = 0.5f; colors[1].amplitude = 55; colors[1].offset = 200; colors[1].frequency = 1.0f; colors[2].amplitude = 55; colors[2].offset = 200; colors[2].frequency = 1.5f; hit_player = false; location = last_pos = GetRoot()->GetWorld()->GetMidPoint(); }
quaternion RandomQuaternionRange(double dqmax) { quaternion q; double alpha,sina; vector rotaxis; alpha = dqmax*RandomNumber(); rotaxis = RandomUnitVector(); sina = sin(alpha/2.0); q.q0 = cos(alpha/2.0); q.q1 = sina*rotaxis.x; q.q2 = sina*rotaxis.y; q.q3 = sina*rotaxis.z; return q; }
void ParticalEffect::updateFire(float dt, const int scount, int type) { count = scount; for (int x = 0; x < count; x ++) { if(!partsA[x].active) { int mouseX, mouseY; Core::Input::GetMousePos( mouseX, mouseY ); Vector2D mouse((float)mouseX, (float)mouseY); partsA[x] = Partical(); float randInt = randomInRange(1,10); Vector2D rand; if(type == 1) { rand = RandomUnitVector() * randInt; } else { } Vector2D newPath = mouse + rand; partsA[x].updateFire(dt, mouse, newPath); } } }