/*==LICENSE==* CyanWorlds.com Engine - MMOG client, server and tools Copyright (C) 2011 Cyan Worlds, Inc. This program 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 3 of the License, or (at your option) any later version. This program 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 this program. If not, see . You can contact Cyan Worlds, Inc. by email legal@cyan.com or by snail mail at: Cyan Worlds, Inc. 14617 N Newport Hwy Mead, WA 99021 *==LICENSE==*/ #ifndef PLSIMDEFS_H #define PLSIMDEFS_H #pragma once namespace plSimDefs { // Groups are used to determine what a physical collides with, and what a // detector detects enum Group { // A physical that blocks avatars and dynamics kGroupStatic, // Blocks only avatars kGroupAvatarBlocker, // Blocks only dynamics kGroupDynamicBlocker, // No physical should actually be set to this, since the avatar is // controlled by a special kind of physical. However, you can use this // for detecting. kGroupAvatar, // A physical that can be pushed around by the avatar or other dynamics kGroupDynamic, // A physical that doesn't block anything, but reports on any physical // that enters it kGroupDetector, // Blocks nothing, for los checks only kGroupLOSOnly, //kExcludeRegion setting up so only blocks avatars and only when not in seek mode kGroupExcludeRegion, // Just for error checking kGroupMax, }; /** A taxonomy of action types. Crucial for doing things like making sure you don't do things like attach duplicate actions. */ enum ActionType { kUnknownAction = 0x01, // don't know the type (probably forgot to override GetType()) kUnknownZAction = 0x02, // unknown type of z-order action kAntiGravityAction = 0x03, // an action that counters gravity exactly kUprightAction = 0x04, // an action that keeps an object upright by apply force kPhysAnimAction = 0x05, // an action that parses keyframed animation into physical information kConstraint = 0x06, // a general constraint. kCallbackAction = 0x07, // an action that just hands us the physics "tick" kPseudoPhysAction = 0x08, // replacement for the physAnim kAntiGravAction = 0x09, // makes things float in the air kBasicGroundAction = 0x0a, // for your basic walkAroundOnGround corrections kHorizontalFreeze = 0x0b, // Let's you fall vertically, but otherwise keeps you in place (generic brains) kMaxAction = 0xffff // force 16-bit }; /** Different types of line-of-sight requests. */ enum LOSReqType { // these are MASKS -- keep powers of two kLOS_IgnoreCameraRequest = 0x1, kLOS_IgnoreUIRequest = 0x2, kLOS_CameraAvoidObject = 0x4, kLOS_Max = 0xffff // force 16-bit }; /** Different types of physics shapes. In most cases they dictate how we intepret the raw vertices. In some cases (sphere) they explain why there aren't any vertices */ enum Bounds { kBoxBounds = 0x01, // bounding box kSphereBounds, // bounding sphere kHullBounds, // convex hull kProxyBounds, // use alternate proxy geometry kExplicitBounds, // use the primary geometry kNumBounds, // the number of bounds types kBoundsMax = 0xff // force 8-bit }; enum plLOSDB { kLOSDBNone = 0x0000, kLOSDBUIBlockers = 0x0001, // things that block ui probes kLOSDBUIItems = 0x0002, // ui items -- we check these first for a hit before checking blockers kLOSDBCameraBlockers = 0x0004, // things that block camera probes kLOSDBCustom = 0x0008, // special things. only the user knows kLOSDBLocalAvatar = 0x0010, // yes, this is silly. it's transitional :) kLOSDBShootableItems = 0x0020, // shootable items, like from the VaporMiner gun kLOSDBAvatarWalkable = 0x0040, // stuff the avatar is expected to walk on. Used to prevent sliding and allow // jumping. All terrain automatically goes here. kLOSDBSwimRegion = 0x0080, kLOSDBMax = 0x0100, // MOVE THIS UP if you add new classes under it. we need it to iterate through the DBs kLOSDBForce16 = 0xffff }; } #endif PLSIMDEFS_H