mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-29 06:07:57 +03:00
Hard reset
This commit is contained in:
commit
09bed43f97
1594 changed files with 892326 additions and 0 deletions
592
code/globalcpp/simpleentity.cpp
Normal file
592
code/globalcpp/simpleentity.cpp
Normal file
|
@ -0,0 +1,592 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2015 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
OpenMoHAA source code is free software; you can redistribute it
|
||||
and/or modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
OpenMoHAA source code is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenMoHAA source code; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
// simpleentity.cpp : Simple entity
|
||||
|
||||
#include "glb_local.h"
|
||||
#include "simpleentity.h"
|
||||
#include "world.h"
|
||||
|
||||
Event EV_SimpleEntity_GetAngle
|
||||
(
|
||||
"angle",
|
||||
EV_DEFAULT,
|
||||
NULL,
|
||||
NULL,
|
||||
"get the angles of the entity using just one value.\n"
|
||||
"Gets the yaw of the entity or an up and down\n"
|
||||
"direction if newAngle is[ 0 - 359 ] or - 1 or - 2",
|
||||
EV_GETTER
|
||||
);
|
||||
|
||||
Event EV_SetAngle
|
||||
(
|
||||
"angle",
|
||||
EV_DEFAULT,
|
||||
"f",
|
||||
"newAngle",
|
||||
"set the angles of the entity using just one value.\n"
|
||||
"Sets the yaw of the entity or an up and down\n"
|
||||
"direction if newAngle is[ 0 - 359 ] or - 1 or - 2",
|
||||
EV_NORMAL
|
||||
);
|
||||
|
||||
Event EV_SimpleEntity_SetterAngle
|
||||
(
|
||||
"angle",
|
||||
EV_DEFAULT,
|
||||
"f",
|
||||
"newAngle",
|
||||
"set the angles of the entity using just one value.\n"
|
||||
"Sets the yaw of the entity or an up and down\n"
|
||||
"direction if newAngle is[ 0 - 359 ] or - 1 or - 2",
|
||||
EV_SETTER
|
||||
);
|
||||
|
||||
Event EV_SimpleEntity_GetAngles
|
||||
(
|
||||
"angles",
|
||||
EV_DEFAULT,
|
||||
NULL,
|
||||
NULL,
|
||||
"get the angles of the entity.",
|
||||
EV_GETTER
|
||||
);
|
||||
|
||||
Event EV_SetAngles
|
||||
(
|
||||
"angles",
|
||||
EV_DEFAULT,
|
||||
"v[0,360][0,360][0,360]",
|
||||
"newAngles",
|
||||
"Set the angles of the entity to newAngles.",
|
||||
EV_NORMAL
|
||||
);
|
||||
|
||||
Event EV_SimpleEntity_SetterAngles
|
||||
(
|
||||
"angles",
|
||||
EV_DEFAULT,
|
||||
"v[0,360][0,360][0,360]",
|
||||
"newAngles",
|
||||
"Set the angles of the entity to newAngles.",
|
||||
EV_SETTER
|
||||
);
|
||||
|
||||
Event EV_SimpleEntity_GetOrigin
|
||||
(
|
||||
"origin",
|
||||
EV_DEFAULT,
|
||||
NULL,
|
||||
NULL,
|
||||
"entity's origin",
|
||||
EV_GETTER
|
||||
);
|
||||
|
||||
Event EV_SetOrigin
|
||||
(
|
||||
"origin",
|
||||
EV_DEFAULT,
|
||||
"v",
|
||||
"newOrigin",
|
||||
"Set the origin of the entity to newOrigin.",
|
||||
EV_NORMAL
|
||||
);
|
||||
|
||||
Event EV_SimpleEntity_SetterOrigin
|
||||
(
|
||||
"origin",
|
||||
EV_DEFAULT,
|
||||
"v",
|
||||
"newOrigin",
|
||||
"Set the origin of the entity to newOrigin.",
|
||||
EV_SETTER
|
||||
);
|
||||
|
||||
Event EV_SimpleEntity_GetTargetname
|
||||
(
|
||||
"targetname",
|
||||
EV_DEFAULT,
|
||||
NULL,
|
||||
NULL,
|
||||
"entity's targetname",
|
||||
EV_GETTER
|
||||
);
|
||||
|
||||
Event EV_SimpleEntity_SetTargetname
|
||||
(
|
||||
"targetname",
|
||||
EV_DEFAULT,
|
||||
"s",
|
||||
"targetName",
|
||||
"set the targetname of the entity to targetName.",
|
||||
EV_NORMAL
|
||||
);
|
||||
|
||||
Event EV_SimpleEntity_SetterTargetname
|
||||
(
|
||||
"targetname",
|
||||
EV_DEFAULT,
|
||||
"s",
|
||||
"targetName",
|
||||
"set the targetname of the entity to targetName.",
|
||||
EV_SETTER
|
||||
);
|
||||
|
||||
Event EV_SimpleEntity_GetTarget
|
||||
(
|
||||
"target",
|
||||
EV_DEFAULT,
|
||||
NULL,
|
||||
NULL,
|
||||
"entity's target",
|
||||
EV_GETTER
|
||||
);
|
||||
|
||||
Event EV_SimpleEntity_SetTarget
|
||||
(
|
||||
"target",
|
||||
EV_DEFAULT,
|
||||
"s",
|
||||
"targetname_to_target",
|
||||
"target another entity with targetname_to_target.",
|
||||
EV_NORMAL
|
||||
);
|
||||
|
||||
Event EV_SimpleEntity_SetterTarget
|
||||
(
|
||||
"target",
|
||||
EV_DEFAULT,
|
||||
"s",
|
||||
"targetname_to_target",
|
||||
"target another entity with targetname_to_target.",
|
||||
EV_SETTER
|
||||
);
|
||||
|
||||
Event EV_SimpleEntity_Centroid
|
||||
(
|
||||
"centroid",
|
||||
EV_DEFAULT,
|
||||
NULL,
|
||||
NULL,
|
||||
"entity's centroid",
|
||||
EV_GETTER
|
||||
);
|
||||
|
||||
Event EV_SimpleEntity_ForwardVector
|
||||
(
|
||||
"forwardvector",
|
||||
EV_DEFAULT,
|
||||
NULL,
|
||||
NULL,
|
||||
"get the forward vector of angles",
|
||||
EV_GETTER
|
||||
);
|
||||
|
||||
Event EV_SimpleEntity_LeftVector
|
||||
(
|
||||
"leftvector",
|
||||
EV_DEFAULT,
|
||||
NULL,
|
||||
NULL,
|
||||
"get the left vector of angles",
|
||||
EV_GETTER
|
||||
);
|
||||
|
||||
Event EV_SimpleEntity_RightVector
|
||||
(
|
||||
"rightvector",
|
||||
EV_DEFAULT,
|
||||
NULL,
|
||||
NULL,
|
||||
"get the right vector of angles",
|
||||
EV_GETTER
|
||||
);
|
||||
|
||||
Event EV_SimpleEntity_UpVector
|
||||
(
|
||||
"upvector",
|
||||
EV_DEFAULT,
|
||||
NULL,
|
||||
NULL,
|
||||
"get the up vector of angles",
|
||||
EV_GETTER
|
||||
);
|
||||
|
||||
void SimpleEntity::SimpleArchive( Archiver& arc )
|
||||
{
|
||||
int index;
|
||||
|
||||
Listener::Archive( arc );
|
||||
|
||||
arc.ArchiveVector( &angles );
|
||||
|
||||
arc.ArchiveString( &target );
|
||||
arc.ArchiveString( &targetname );
|
||||
|
||||
if( targetname.length() )
|
||||
{
|
||||
if( arc.Loading() )
|
||||
{
|
||||
arc.ArchiveInteger( &index );
|
||||
world->AddTargetEntityAt( this, index );
|
||||
}
|
||||
else
|
||||
{
|
||||
index = world->GetTargetnameIndex( this );
|
||||
arc.ArchiveInteger( &index );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SimpleEntity::Archive( Archiver& arc )
|
||||
{
|
||||
SimpleEntity::SimpleArchive( arc );
|
||||
|
||||
arc.ArchiveVector( &origin );
|
||||
arc.ArchiveVector( ¢roid );
|
||||
}
|
||||
|
||||
void SimpleEntity::setOrigin( Vector origin )
|
||||
{
|
||||
this->origin = origin;
|
||||
this->centroid = origin;
|
||||
}
|
||||
|
||||
void SimpleEntity::setOriginEvent( Vector origin )
|
||||
{
|
||||
setOrigin( origin );
|
||||
}
|
||||
|
||||
void SimpleEntity::setAngles( Vector angles )
|
||||
{
|
||||
this->angles = angles.AnglesMod();
|
||||
}
|
||||
|
||||
SimpleEntity::SimpleEntity()
|
||||
{
|
||||
entflags = 0;
|
||||
}
|
||||
|
||||
SimpleEntity::~SimpleEntity()
|
||||
{
|
||||
if( world ) {
|
||||
world->RemoveTargetEntity( this );
|
||||
}
|
||||
}
|
||||
|
||||
void SimpleEntity::SetTarget( str target )
|
||||
{
|
||||
this->target = target;
|
||||
}
|
||||
|
||||
void SimpleEntity::SetTargetName( str targetname )
|
||||
{
|
||||
world->RemoveTargetEntity( this );
|
||||
|
||||
this->targetname = targetname;
|
||||
|
||||
world->AddTargetEntity( this );
|
||||
}
|
||||
|
||||
str& SimpleEntity::Target()
|
||||
{
|
||||
return target;
|
||||
}
|
||||
|
||||
str& SimpleEntity::TargetName()
|
||||
{
|
||||
return targetname;
|
||||
}
|
||||
|
||||
SimpleEntity *SimpleEntity::Next( void )
|
||||
{
|
||||
SimpleEntity *ent = world->GetTarget( target, true );
|
||||
|
||||
if( !ent || !ent->isSubclassOf( SimpleEntity ) )
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
return ent;
|
||||
}
|
||||
}
|
||||
|
||||
void SimpleEntity::EventGetAngle( Event *ev )
|
||||
{
|
||||
ev->AddFloat( angles[ 1 ] );
|
||||
}
|
||||
|
||||
void SimpleEntity::EventGetAngles( Event *ev )
|
||||
{
|
||||
ev->AddVector( angles );
|
||||
}
|
||||
|
||||
void SimpleEntity::EventGetOrigin( Event *ev )
|
||||
{
|
||||
ev->AddVector( origin );
|
||||
}
|
||||
|
||||
void SimpleEntity::EventGetTargetname( Event *ev )
|
||||
{
|
||||
ev->AddString( TargetName() );
|
||||
}
|
||||
|
||||
void SimpleEntity::EventGetTarget( Event *ev )
|
||||
{
|
||||
ev->AddString( Target() );
|
||||
}
|
||||
|
||||
void SimpleEntity::EventSetAngle( Event *ev )
|
||||
{
|
||||
Vector dir;
|
||||
float angle = ev->GetFloat( 1 );
|
||||
|
||||
dir = G_GetMovedir( angle );
|
||||
dir.toAngles();
|
||||
|
||||
setAngles( dir );
|
||||
}
|
||||
|
||||
void SimpleEntity::EventSetAngles( Event *ev )
|
||||
{
|
||||
Vector angles;
|
||||
|
||||
if( ev->NumArgs() == 1 )
|
||||
{
|
||||
angles = ev->GetVector( 1 );
|
||||
}
|
||||
else
|
||||
{
|
||||
angles = Vector( ev->GetFloat( 1 ), ev->GetFloat( 2 ), ev->GetFloat( 3 ) );
|
||||
}
|
||||
|
||||
setAngles( angles );
|
||||
}
|
||||
|
||||
void SimpleEntity::EventSetOrigin( Event *ev )
|
||||
{
|
||||
setOriginEvent( ev->GetVector( 1 ) );
|
||||
}
|
||||
|
||||
void SimpleEntity::EventSetTargetname( Event *ev )
|
||||
{
|
||||
SetTargetName( ev->GetString( 1 ) );
|
||||
}
|
||||
|
||||
void SimpleEntity::EventSetTarget( Event *ev )
|
||||
{
|
||||
SetTarget( ev->GetString( 1 ) );
|
||||
}
|
||||
|
||||
void SimpleEntity::GetCentroid( Event *ev )
|
||||
{
|
||||
ev->AddVector( centroid );
|
||||
}
|
||||
|
||||
void SimpleEntity::GetForwardVector( Event *ev )
|
||||
{
|
||||
Vector fwd;
|
||||
|
||||
AngleVectorsLeft( angles, fwd, NULL, NULL );
|
||||
ev->AddVector( fwd );
|
||||
}
|
||||
|
||||
void SimpleEntity::GetLeftVector( Event *ev )
|
||||
{
|
||||
Vector left;
|
||||
|
||||
AngleVectorsLeft( angles, NULL, left, NULL );
|
||||
ev->AddVector( left );
|
||||
}
|
||||
|
||||
void SimpleEntity::GetRightVector( Event *ev )
|
||||
{
|
||||
Vector right;
|
||||
|
||||
AngleVectors( angles, NULL, right, NULL );
|
||||
ev->AddVector( right );
|
||||
}
|
||||
|
||||
void SimpleEntity::GetUpVector( Event *ev )
|
||||
{
|
||||
Vector up;
|
||||
|
||||
AngleVectorsLeft( angles, NULL, NULL, up );
|
||||
ev->AddVector( up );
|
||||
}
|
||||
|
||||
void SimpleEntity::MPrintf( const char *msg, ... )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfEntity( void ) const
|
||||
{
|
||||
return ( entflags & EF_ENTITY );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfAnimate( void ) const
|
||||
{
|
||||
return ( entflags & EF_ANIMATE );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfSentient( void ) const
|
||||
{
|
||||
return ( entflags & EF_SENTIENT );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfPlayer( void ) const
|
||||
{
|
||||
return ( entflags & EF_PLAYER );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfActor( void ) const
|
||||
{
|
||||
return ( entflags & EF_ACTOR );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfItem( void ) const
|
||||
{
|
||||
return ( entflags & EF_ITEM );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfInventoryItem( void ) const
|
||||
{
|
||||
return ( entflags & EF_INVENTORYITEM );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfWeapon( void ) const
|
||||
{
|
||||
return ( entflags & EF_WEAPON );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfProjectile( void ) const
|
||||
{
|
||||
return ( entflags & EF_PROJECTILE );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfDoor( void ) const
|
||||
{
|
||||
return ( entflags & EF_DOOR );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfCamera( void ) const
|
||||
{
|
||||
return ( entflags & EF_CAMERA );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfVehicle( void ) const
|
||||
{
|
||||
return ( entflags & EF_VEHICLE );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfVehicleTank( void ) const
|
||||
{
|
||||
return ( entflags & EF_VEHICLETANK );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfVehicleTurretGun( void ) const
|
||||
{
|
||||
return ( entflags & EF_VEHICLETURRET );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfTurretGun( void ) const
|
||||
{
|
||||
return ( entflags & EF_TURRET );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfPathNode( void ) const
|
||||
{
|
||||
return ( entflags & EF_PATHNODE );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfWaypoint( void ) const
|
||||
{
|
||||
return ( entflags & EF_WAYPOINT );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfTempWaypoint( void ) const
|
||||
{
|
||||
return ( entflags & EF_TEMPWAYPOINT );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfVehiclePoint( void ) const
|
||||
{
|
||||
return ( entflags & EF_VEHICLEPOINT );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfSplinePath( void ) const
|
||||
{
|
||||
return ( entflags & EF_SPLINEPATH );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfCrateObject( void ) const
|
||||
{
|
||||
return ( entflags & EF_CRATEOBJECT );
|
||||
}
|
||||
|
||||
int SimpleEntity::IsSubclassOfBot( void ) const
|
||||
{
|
||||
return ( entflags & EF_BOT );
|
||||
}
|
||||
|
||||
CLASS_DECLARATION( Listener, SimpleEntity, NULL )
|
||||
{
|
||||
{ &EV_SimpleEntity_GetAngle, &SimpleEntity::EventGetAngle },
|
||||
{ &EV_SimpleEntity_GetAngles, &SimpleEntity::EventGetAngles },
|
||||
{ &EV_SimpleEntity_GetOrigin, &SimpleEntity::EventGetOrigin },
|
||||
{ &EV_SimpleEntity_GetTargetname, &SimpleEntity::EventGetTargetname },
|
||||
{ &EV_SimpleEntity_GetTarget, &SimpleEntity::EventGetTarget },
|
||||
{ &EV_SimpleEntity_SetterAngle, &SimpleEntity::EventSetAngle },
|
||||
{ &EV_SimpleEntity_SetterAngles, &SimpleEntity::EventSetAngles },
|
||||
{ &EV_SimpleEntity_SetterOrigin, &SimpleEntity::EventSetOrigin },
|
||||
{ &EV_SimpleEntity_SetterTargetname, &SimpleEntity::EventSetTargetname },
|
||||
{ &EV_SimpleEntity_SetterTarget, &SimpleEntity::EventSetTarget },
|
||||
{ &EV_SetAngle, &SimpleEntity::EventSetAngle },
|
||||
{ &EV_SetAngles, &SimpleEntity::EventSetAngles },
|
||||
{ &EV_SetOrigin, &SimpleEntity::EventSetOrigin },
|
||||
{ &EV_SimpleEntity_SetTargetname, &SimpleEntity::EventSetTargetname },
|
||||
{ &EV_SimpleEntity_SetTarget, &SimpleEntity::EventSetTarget },
|
||||
{ &EV_SimpleEntity_Centroid, &SimpleEntity::GetCentroid },
|
||||
{ &EV_SimpleEntity_ForwardVector, &SimpleEntity::GetForwardVector },
|
||||
{ &EV_SimpleEntity_LeftVector, &SimpleEntity::GetLeftVector },
|
||||
{ &EV_SimpleEntity_RightVector, &SimpleEntity::GetRightVector },
|
||||
{ &EV_SimpleEntity_UpVector, &SimpleEntity::GetUpVector },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
SimpleArchivedEntity::SimpleArchivedEntity()
|
||||
{
|
||||
level.m_SimpleArchivedEntities.AddObject( this );
|
||||
}
|
||||
|
||||
SimpleArchivedEntity::~SimpleArchivedEntity()
|
||||
{
|
||||
level.m_SimpleArchivedEntities.RemoveObject( this );
|
||||
}
|
||||
|
||||
CLASS_DECLARATION( SimpleEntity, SimpleArchivedEntity, NULL )
|
||||
{
|
||||
{ NULL, NULL }
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue