Moving by dragging mouse?

Posted By: Blade280891

Moving by dragging mouse? - 09/22/08 21:36

I am trying to move a model up and down by dragging the mouse up and down, but i cant seem to get it to work, can anyone help?

i tried something similar to this
Code:
action move_model()
{
 while(mouse_left)
 {
   my.z = mouse_pos.z
 }
}

but that didnt do anything
Posted By: zazang

Re: Moving by dragging mouse? - 09/23/08 01:43

Hi

If I'm not wrong there is nothing like mouse_pos.z.
Mouse coordinates are in x and y.
However even with mouse_pos.y there would be problems
because my.z is in world coordinates and mouse_pos.y in
screen coordinates.
So you need to add some sort of conversion formula to
make it move,which can be done with vec_for_screen()
function.

Hope it helps smile





Posted By: Blade280891

Re: Moving by dragging mouse? - 09/23/08 02:27

I get no errors from using mouse_pos.z

And how would i convert, my future plan is to have the character click something then move it with the mouse.
Posted By: Blade280891

Re: Moving by dragging mouse? - 09/23/08 19:31

any one?
Posted By: Ottawa

Re: Moving by dragging mouse? - 09/23/08 23:59

Hi!

I picked up the following code (or something close to it) in this forum a few years back.
I use the mouse to pick an object (my) with the left mouse button
I move it around and when I let go
The enity drops on something or not.

Here the code...you will have to play with this. smile

function pick_drop ()
{
wait (1);
i_counter += 1;
if ((i_counter % 2) == 1)
{
while (mouse_left == 1) //the object is selected with the mouse
{
vec_set (temp_m, vector(mouse_cursor.x,mouse_cursor.y,194)); // play with the z position
vec_for_screen(temp_m, camera);
vec_set (my.x,temp_m.x); // entity and camera are the same
wait (1);
}
}
vec_set (temp_m.x, my.x);
my.z += 10; // (20)

c_move(my,nullvector,nullvector, IGNORE_MAPS| ACTIVATE_TRIGGER | IGNORE_CONTENT | USE_AABB);

if (event_type != EVENT_TRIGGER)
{
my.z -= 10; //
i_counter += 1;
}
}

Hope this is what you wanted.
Ottawa
Posted By: MrGuest

Re: Moving by dragging mouse? - 09/24/08 18:55

i'd use
Code:
my.z += mickey.y;

Posted By: Blade280891

Re: Moving by dragging mouse? - 09/24/08 19:09

Ok, i tried this
Code:
#include <acknex.h> // include these predefined, needed files in our project
#include <default.c>

ENTITY*box;
function force_power();
function pick_drop();
action forcebox();

function main()
{
	level_load("force_test.wmb");
	wait(1);
	mouse_mode = 4;
	while(1)
	{
		mouse_pos.x = mouse_cursor.x;
	  	mouse_pos.y = mouse_cursor.y;
		wait(1);
	}
}

function pick_drop ()
{
	wait (1);
	i_counter += 1;
	if ((i_counter % 2) == 1)
	{
		while (mouse_left == 1) //the object is selected with the mouse
		{
			vec_set (temp_m, vector(mouse_cursor.x,mouse_cursor.y,194)); // play with the z position
			vec_for_screen(temp_m, camera);
			vec_set (my.x,temp_m.x); // entity and camera are the same
			wait (1);
		}
	}
	vec_set (temp_m.x, my.x);
	my.z += 10; // (20)
	
	c_move(my,nullvector,nullvector, IGNORE_MAPS| ACTIVATE_TRIGGER | IGNORE_CONTENT | USE_AABB);
	
	if (event_type != EVENT_TRIGGER)
	{
		my.z -= 10; //
		i_counter += 1;
	}
}
/*
function force_power()
{
	if (event_type == EVENT_TOUCH)
 	{
		my.ambient = 100; // the make it look bright
	  	my.lightrange = 200; // and generate light on a radius of 200 quants!
	}
	else if(event_type == EVENT_RELEASE)
	{
		my.ambient = 0;
   	my.lightrange = 0;
	}
	if(event_type == EVENT_CLICK)
	{
		while(1)
		{
			if(mouse_left)
			{
				box.z = mouse_pos.z;
				box.x = mouse_cursor.x;
				box.y = mouse_cursor.y;
			//	camera.x = mouse_pos.x;	
			}
		}
	}
}
*/
action forcebox()
{
/*	box = me;
	my.emask |= ENABLE_TOUCH | ENABLE_RELEASE | ENABLE_CLICK;
   // run function highlight_event the wizards are touched or released
   my.event = force_power; 
   */
   if(mouse_left == 1)
   {
		pick_drop();
	}
}


I get errors for undeclared vars, i declared i_counter as an int var, but waht about the temp ones?
Posted By: Ottawa

Re: Moving by dragging mouse? - 09/24/08 23:12

Hi Blade !

Yes, you have to declare all var...
I just provided the code...(that came from the A6 forum
The temp_m var is a temporary variable and should be different for temp

I will look at your code later tonight and get back to you.

Ottawa smile
Posted By: Blade280891

Re: Moving by dragging mouse? - 09/24/08 23:19

Ok, thanks , i beleive temp_m should be just temp, but im not sure it doesnt seem to work for me frown
Posted By: Ottawa

Re: Moving by dragging mouse? - 09/24/08 23:25

I changed temp to temp_m to better control my code.
But you can use temp if you want to.

edit :

Notes on your code :
The action for your entity is very important
It must be alive at all times..it may wait or it may do something
but it must be alive...working
in this situation it is processed one time only...and forgotten
You need a repetition somewhere in your code (while(1))
The "my.event" is a good start.

The declaration of the variables
var i_counter = 0; // or integer
VECTOR* temp_m = {x=0;y=0;z=0;}
should help you.

Ottawa wink
Posted By: Blade280891

Re: Moving by dragging mouse? - 09/24/08 23:51

well both say undefined var, but surely temp doesn't need to be defined.
Posted By: Blade280891

Re: Moving by dragging mouse? - 09/27/08 20:12

Trying this, but the person (model, with action assigned) isn't moving at all

Code:
#include <acknex.h> // include these predefined, needed files in our project
#include <default.c>

ENTITY*box;
function force_power();
function pick_drop();
action forcebox();
var i_counter = 0; // or integer
VECTOR* temp_m = {x=0;y=0;z=0;}

function main()
{
	level_load("force_test.wmb");
	wait(1);
	mouse_mode = 4;
	while(1)
	{
		mouse_pos.x = mouse_cursor.x;
	  	mouse_pos.y = mouse_cursor.y;
		wait(1);
	}
}

function pick_drop ()
{
	wait (1);
	i_counter += 1;
	if ((i_counter % 2) == 1)
	{
		while (mouse_left == 1) //the object is selected with the mouse
		{
			vec_set (temp_m, vector(mouse_cursor.x,mouse_cursor.y,194)); // play with the z position
			vec_for_screen(temp_m, camera);
			vec_set (my.x,temp_m.x); // entity and camera are the same
			wait (1);
		}
	}
	vec_set (temp_m.x, my.x);
	my.z += 10; // (20)
	
	c_move(my,nullvector,nullvector, IGNORE_MAPS| ACTIVATE_TRIGGER | IGNORE_CONTENT | USE_AABB);
	
	if (event_type != EVENT_TRIGGER)
	{
		my.z -= 10; //
		i_counter += 1;
	}
}
/*
function force_power()
{
	if (event_type == EVENT_TOUCH)
 	{
		my.ambient = 100; // the make it look bright
	  	my.lightrange = 200; // and generate light on a radius of 200 quants!
	}
	else if(event_type == EVENT_RELEASE)
	{
		my.ambient = 0;
   	my.lightrange = 0;
	}
	if(event_type == EVENT_CLICK)
	{
		while(1)
		{
			if(mouse_left)
			{
				box.z = mouse_pos.z;
				box.x = mouse_cursor.x;
				box.y = mouse_cursor.y;
			//	camera.x = mouse_pos.x;	
			}
		}
	}
}
*/
action forcebox()
{
/*	box = me;
	my.emask |= ENABLE_TOUCH | ENABLE_RELEASE | ENABLE_CLICK;
   // run function highlight_event the wizards are touched or released
   my.event = force_power; 
   */
   if(mouse_left == 1)
   {
		pick_drop();
	}
}

Posted By: Ottawa

Re: Moving by dragging mouse? - 09/29/08 22:46

Hi Blade

Is it working?

Ottawa smile
Posted By: Blade280891

Re: Moving by dragging mouse? - 09/30/08 13:41

No, unfortunatly, no movement at all, i am wondering could this be due to my update to A7.5, as i cant see the model unless i am right next to it.
Posted By: i_program_games

Re: Moving by dragging mouse? - 10/01/08 20:33

I've got some code which allows someone to move 3d objects in lite-c. I'll upload once I get home.
Posted By: Blade280891

Re: Moving by dragging mouse? - 10/01/08 20:47

Ok, cool thanks games laugh
© 2024 lite-C Forums