Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
4242 lines
301 KiB
Plaintext
4242 lines
301 KiB
Plaintext
/** @file
|
|
=============================================
|
|
PENTAGRAMS & SUMMONING CIRCLES v1.45
|
|
=============================================
|
|
gaoneng January 17, 2005
|
|
#include "inc_draw"
|
|
|
|
last updated on August 8, 2005
|
|
|
|
modified by Ornedan of PRC to add new parameters:
|
|
fDirectionXZ and fDirectionYZ
|
|
|
|
Draw geometric forms using a variety of media
|
|
=============================================
|
|
*/
|
|
|
|
#include "inc_draw_tools"
|
|
|
|
/*
|
|
=============================================
|
|
DRAW* PLACE* AND BEAM* FUNCTIONS DECLARATIONS
|
|
=============================================
|
|
*/
|
|
// Draws a circle around lCenter
|
|
// =============================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius of circle in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the circle lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the circle. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawCircle(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a spiral around lCenter
|
|
// =============================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of spiral in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of spiral in meters. DEFAULT : 0.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the spiral lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spiral. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a spring around lCenter
|
|
// =============================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of spring in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of spring in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the spring lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a line towards lCenter
|
|
// ============================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fLength = length of line in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDirection = direction of line respective to normal. DEFAULT : 0.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the spring lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fTime = time in seconds taken to draw the line. DEFAULT : 6.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawLineToCenter(int nDurationType, int nVFX, location lCenter, float fLength, float fDirection=0.0f, float fDuration=0.0f, int nFrequency=90, float fTime=6.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a line from lCenter
|
|
// =========================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fLength = length of line in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDirection = direction of line respective to normal. DEFAULT : 0.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the spring lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fTime = time in seconds taken to draw the line. DEFAULT : 6.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawLineFromCenter(int nDurationType, int nVFX, location lCenter, float fLength, float fDirection=0.0f, float fDuration=0.0f, int nFrequency=90, float fTime=6.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a polygonal spring around lCenter
|
|
// =======================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of spring in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of spring in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// nSides = number of sides. nSides < 3 will default to 3. DEFAULT : 3
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the spring lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawPolygonalSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a polygonal spiral around lCenter
|
|
// =======================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of spiral in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of spiral in meters. DEFAULT : 0.0
|
|
// nSides = number of sides. nSides < 3 will default to 3. DEFAULT : 3
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the spiral lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spiral. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawPolygonalSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, int nSides=3, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a polygon around lCenter
|
|
// ==============================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius of polygon in meters. (1 tile = 10.0m X 10.0m)
|
|
// nSides = number of sides. nSides < 3 will default to 3. DEFAULT : 3
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the polygon lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the polygon. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawPolygon(int nDurationType, int nVFX, location lCenter, float fRadius, int nSides=3, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a pentacle (five-pointed star) around lCenter
|
|
// ===================================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius of pentacle in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the pentacle lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the pentacle. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawPentacle(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a pentaclic spiral around lCenter
|
|
// =======================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of spiral in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of spiral in meters. DEFAULT : 0.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the pentacle lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spiral. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawPentaclicSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a pentaclic spring around lCenter
|
|
// =======================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of spring in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of spring in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the pentacle lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawPentaclicSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a star spring around lCenter
|
|
// ==================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStartOuter = starting outer radius of spring in meters.
|
|
// fRadiusStartInner = starting inner radius of spring in meters.
|
|
// fRadiusEndOuter = ending outer radius of spring in meters. DEFAULT : 0.0
|
|
// fRadiusEndInner = ending inner radius of spring in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// nSides = number of sides (or points) DEFAULT : 3
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the pentacle lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawStarSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a star spiral around lCenter
|
|
// ==================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStartOuter = starting outer radius of spiral in meters.
|
|
// fRadiusStartInner = starting inner radius of spiral in meters.
|
|
// fRadiusEndOuter = ending outer radius of spring in meters. DEFAULT : 0.0
|
|
// fRadiusEndInner = ending inner radius of spring in meters. DEFAULT : 0.0
|
|
// nSides = number of sides (or points) DEFAULT : 3
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the pentacle lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawStarSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, int nSides=3, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a star around lCenter
|
|
// ===========================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusOuter = outer radius of star in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusInner = inner radius of star in meters.
|
|
// nSides = number of sides (or points) DEFAULT : 3
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the pentacle lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawStar(int nDurationType, int nVFX, location lCenter, float fRadiusOuter, float fRadiusInner, int nSides=3, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a hemisphere around lCenter
|
|
// =================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of sphere in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of sphere in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of sphere in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of sphere in meters. DEFAULT : 5.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the sphere lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the sphere. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the central/normal axis. DEFAULT : "z"
|
|
void DrawHemisphere(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a perfect sphere around lCenter
|
|
// =====================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius of sphere in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the sphere lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the sphere. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the central/normal axis. DEFAULT : "z"
|
|
void DrawSphere(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a polygonal hemisphere around lCenter
|
|
// ===========================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of sphere in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of sphere in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of sphere in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of sphere in meters. DEFAULT : 5.0
|
|
// nSides = number of sides. nSides < 3 will default to 3. DEFAULT : 3
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the sphere lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the sphere. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the central/normal axis. DEFAULT : "z"
|
|
void DrawPolygonalHemisphere(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a toroidal spring around lCenter
|
|
// ======================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStartOuter = starting outer radius of the torus in meters.
|
|
// fRadiusStartInner = starting inner radius of the torus in meters.
|
|
// fRadiusEndOuter = ending outer radius of the torus in meters. DEFAULT : 0.0
|
|
// fRadiusEndInner = ending inner radius of the torus in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the spring lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fLoopsPerRev = number of loops per revolution. DEFAULT : 36.0
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawToroidalSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fDuration=0.0f, int nFrequency=90, float fLoopsPerRev=36.0f, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a toroidal spiral around lCenter
|
|
// ======================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStartOuter = starting outer radius of the torus in meters.
|
|
// fRadiusStartInner = starting inner radius of the torus in meters.
|
|
// fRadiusEndOuter = ending outer radius of the torus in meters. DEFAULT : 0.0
|
|
// fRadiusEndInner = ending inner radius of the torus in meters. DEFAULT : 0.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the spring lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fLoopsPerRev = number of loops per revolution. DEFAULT : 36.0
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spiral. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawToroidalSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fDuration=0.0f, int nFrequency=90, float fLoopsPerRev=36.0f, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a standard torus around lCenter
|
|
// =====================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusOuter = outer radius of the torus in meters.
|
|
// fRadiusInner = inner radius of the torus in meters.
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the spring lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fLoopsPerRev = number of loops per revolution. DEFAULT : 36.0
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the torus. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawTorus(int nDurationType, int nVFX, location lCenter, float fRadiusOuter, float fRadiusInner, float fDuration=0.0f, int nFrequency=90, float fLoopsPerRev=36.0f, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a sinusoidal curve from lCenter
|
|
// =====================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = amplitude of curve in meters.
|
|
// fLength = horizontal length of curve in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDirection = direction of line respective to normal. DEFAULT : 0.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the spring lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the torus. DEFAULT : 6.0
|
|
// fRotate = the shift in phase in degrees. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawSinusoid(int nDurationType, int nVFX, location lCenter, float fRadius, float fLength, float fDirection=0.0f, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws an elliptical spring around lCenter
|
|
// =========================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStartOuter = starting outer radius of the ellipse in meters.
|
|
// fRadiusStartInner = starting inner radius of the ellipse in meters.
|
|
// fRadiusEndOuter = ending outer radius of the ellipse in meters.DEFAULT : 0.0
|
|
// fRadiusEndInner = ending inner radius of the ellipse in meters.DEFAULT : 0.0
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the VFX lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawEllipticalSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws an elliptical spiral around lCenter
|
|
// =========================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStartOuter = starting outer radius of the ellipse in meters.
|
|
// fRadiusStartInner = starting inner radius of the ellipse in meters.
|
|
// fRadiusEndOuter = ending outer radius of the ellipse in meters.DEFAULT : 0.0
|
|
// fRadiusEndInner = ending inner radius of the ellipse in meters.DEFAULT : 0.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the VFX lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spiral. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawEllipticalSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws an ellipse around lCenter
|
|
// ===============================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusOuter = outer radius of the ellipse in meters.
|
|
// fRadiusInner = inner radius of the ellipse in meters.
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the VFX lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the ellipse. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawEllipse(int nDurationType, int nVFX, location lCenter, float fRadiusOuter, float fRadiusInner, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a rhodonea helix around lCenter
|
|
// =====================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// fRoulette = arbitrary constant, affects number of petals. DEFAULT : 3.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the spring lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawRhodoneaSpring(int nDurationType, int nVFX, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a rhodonea around lCenter
|
|
// ===============================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRoulette = arbitrary constant, affects number of petals. DEFAULT : 3.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the spring lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawRhodonea(int nDurationType, int nVFX, location lCenter, float fRadius, float fRoulette=3.0f, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a hypocycloid helix around lCenter
|
|
// ========================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// fRoulette = arbitrary constant, affects number of petals. DEFAULT : 3.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the spring lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawHypocycloidSpring(int nDurationType, int nVFX, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a hypocycloid around lCenter
|
|
// ==================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRoulette = arbitrary constant, affects number of petals. DEFAULT : 3.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the spring lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawHypocycloid(int nDurationType, int nVFX, location lCenter, float fRadius, float fRoulette=3.0f, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a epicycloid helix around lCenter
|
|
// =======================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// fRoulette = arbitrary constant, affects number of petals. DEFAULT : 3.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the spring lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawEpicycloidSpring(int nDurationType, int nVFX, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Draws a epicycloid around lCenter
|
|
// =================================
|
|
// nDurationType = DURATION_TYPE_* constant
|
|
// nVFX = the VFX_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRoulette = arbitrary constant, affects number of petals. DEFAULT : 3.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the spring lasts before fading. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more effects are
|
|
// generated and the closer they are to each other. DEFAULT : 90
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
void DrawEpicycloid(int nDurationType, int nVFX, location lCenter, float fRadius, float fRoulette=3.0f, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f);
|
|
|
|
// Places a circle around lCenter
|
|
// ==============================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius of circle in meters. (1 tile = 10.0m X 10.0m)
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the circle. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceCircle(string sTemplate, location lCenter, float fRadius, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a spiral around lCenter
|
|
// ==============================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of spiral in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of spiral in meters. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spiral. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceSpiral(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a spring around lCenter
|
|
// ==============================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of spring in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of spring in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceSpring(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a line towards lCenter
|
|
// =============================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fLength = length of line in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDirection = direction of line respective to normal. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fTime = time in seconds taken to draw the line. DEFAULT : 12.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceLineToCenter(string sTemplate, location lCenter, float fLength, float fDirection=0.0f, int nFrequency=60, float fTime=12.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a line from lCenter
|
|
// ==========================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fLength = length of line in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDirection = direction of line respective to normal. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fTime = time in seconds taken to draw the line. DEFAULT : 12.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceLineFromCenter(string sTemplate, location lCenter, float fLength, float fDirection=0.0f, int nFrequency=60, float fTime=12.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a polygonal spring around lCenter
|
|
// ========================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of spring in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of spring in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// nSides = number of sides. nSides < 3 will default to 3. DEFAULT : 3
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlacePolygonalSpring(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a polygonal spiral around lCenter
|
|
// ========================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of spiral in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of spiral in meters. DEFAULT : 0.0
|
|
// nSides = number of sides. nSides < 3 will default to 3. DEFAULT : 3
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spiral. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlacePolygonalSpiral(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, int nSides=3, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a polygon around lCenter
|
|
// ===============================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius of polygon in meters. (1 tile = 10.0m X 10.0m)
|
|
// nSides = number of sides. nSides < 3 will default to 3. DEFAULT : 3
|
|
// nFrequency = number of points, the higher the frequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the polygon. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlacePolygon(string sTemplate, location lCenter, float fRadius, int nSides=3, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a pentacle (five-pointed star) around lCenter
|
|
// ====================================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius of pentacle in meters. (1 tile = 10.0m X 10.0m)
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the pentacle. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlacePentacle(string sTemplate, location lCenter, float fRadius, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a pentaclic spiral around lCenter
|
|
// ========================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of spiral in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of spiral in meters. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spiral. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlacePentaclicSpiral(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a pentaclic spring around lCenter
|
|
// ========================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of spring in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of spring in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlacePentaclicSpring(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a star spring around lCenter
|
|
// ===================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStartOuter = starting outer radius of spring in meters.
|
|
// fRadiusStartInner = starting inner radius of spring in meters.
|
|
// fRadiusEndOuter = ending outer radius of spring in meters. DEFAULT : 0.0
|
|
// fRadiusEndInner = ending inner radius of spring in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// nSides = number of sides (or points) DEFAULT : 3
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceStarSpring(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a star spiral around lCenter
|
|
// ===================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStartOuter = starting outer radius of spiral in meters.
|
|
// fRadiusStartInner = starting inner radius of spiral in meters.
|
|
// fRadiusEndOuter = ending outer radius of spring in meters. DEFAULT : 0.0
|
|
// fRadiusEndInner = ending inner radius of spring in meters. DEFAULT : 0.0
|
|
// nSides = number of sides (or points) DEFAULT : 3
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceStarSpiral(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, int nSides=3, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a star around lCenter
|
|
// ============================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusOuter = outer radius of star in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusInner = inner radius of star in meters.
|
|
// nSides = number of sides (or points) DEFAULT : 3
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceStar(string sTemplate, location lCenter, float fRadiusOuter, float fRadiusInner, int nSides=3, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a hemisphere around lCenter
|
|
// ==================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of sphere in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of sphere in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the sphere in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the sphere in meters. DEFAULT : 5.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the sphere. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the central/normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceHemisphere(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a perfect sphere around lCenter
|
|
// ======================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius of sphere in meters. (1 tile = 10.0m X 10.0m)
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the sphere. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the central/normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceSphere(string sTemplate, location lCenter, float fRadius, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a polygonal hemisphere around lCenter
|
|
// ============================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of sphere in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of sphere in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the sphere in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the sphere in meters. DEFAULT : 5.0
|
|
// nSides = number of sides. nSides < 3 will default to 3. DEFAULT : 3
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the sphere. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the central/normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlacePolygonalHemisphere(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a toroidal spring around lCenter
|
|
// =======================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStartOuter = starting outer radius of the torus in meters.
|
|
// fRadiusStartInner = starting inner radius of the torus in meters.
|
|
// fRadiusEndOuter = ending outer radius of the torus in meters. DEFAULT : 0.0
|
|
// fRadiusEndInner = ending inner radius of the torus in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fLoopsPerRev = number of loops per revolution. DEFAULT : 36.0
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceToroidalSpring(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fLoopsPerRev=36.0f, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a toroidal spiral around lCenter
|
|
// =======================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStartOuter = starting outer radius of the torus in meters.
|
|
// fRadiusStartInner = starting inner radius of the torus in meters.
|
|
// fRadiusEndOuter = ending outer radius of the torus in meters. DEFAULT : 0.0
|
|
// fRadiusEndInner = ending inner radius of the torus in meters. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fLoopsPerRev = number of loops per revolution. DEFAULT : 36.0
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spiral. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceToroidalSpiral(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, int nFrequency=60, float fLoopsPerRev=36.0f, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a standard torus around lCenter
|
|
// ======================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusOuter = outer radius of the torus in meters.
|
|
// fRadiusInner = inner radius of the torus in meters.
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fLoopsPerRev = number of loops per revolution. DEFAULT : 36.0
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the torus. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceTorus(string sTemplate, location lCenter, float fRadiusOuter, float fRadiusInner, int nFrequency=60, float fLoopsPerRev=36.0f, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a sinusoidal curve from lCenter
|
|
// ======================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = amplitude of curve in meters.
|
|
// fLength = horizontal length of curve in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDirection = direction of curve respective to normal. DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the torus. DEFAULT : 12.0
|
|
// fRotate = the shift in phase in degrees. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceSinusoid(string sTemplate, location lCenter, float fRadius, float fLength, float fDirection=0.0f, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places an elliptical spring around lCenter
|
|
// ==========================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStartOuter = starting outer radius of the ellipse in meters.
|
|
// fRadiusStartInner = starting inner radius of the ellipse in meters.
|
|
// fRadiusEndOuter = ending outer radius of the ellipse in meters.DEFAULT : 0.0
|
|
// fRadiusEndInner = ending inner radius of the ellipse in meters.DEFAULT : 0.0
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceEllipticalSpring(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places an elliptical spiral around lCenter
|
|
// ==========================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStartOuter = starting outer radius of the ellipse in meters.
|
|
// fRadiusStartInner = starting inner radius of the ellipse in meters.
|
|
// fRadiusEndOuter = ending outer radius of the ellipse in meters.DEFAULT : 0.0
|
|
// fRadiusEndInner = ending inner radius of the ellipse in meters.DEFAULT : 0.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spiral. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceEllipticalSpiral(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places an ellipse around lCenter
|
|
// ================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusOuter = outer radius of the ellipse in meters.
|
|
// fRadiusInner = inner radius of the ellipse in meters.
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the ellipse. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceEllipse(string sTemplate, location lCenter, float fRadiusOuter, float fRadiusInner, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a stella octangula above lCenter
|
|
// =======================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fTime = time in seconds taken to draw the polyhedron. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceStellaOctangula(string sTemplate, location lCenter, float fRadius, int nFrequency=60, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a regular icosahedron above lCenter
|
|
// ==========================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fTime = time in seconds taken to draw the polyhedron. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceIcosahedron(string sTemplate, location lCenter, float fRadius, int nFrequency=60, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a rhodonea helix around lCenter
|
|
// ======================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// fRoulette = arbitrary constant, affects number of petals. DEFAULT : 3.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceRhodoneaSpring(string sTemplate, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a rhodonea around lCenter
|
|
// ================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRoulette = arbitrary constant, affects number of petals. DEFAULT : 3.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceRhodonea(string sTemplate, location lCenter, float fRadius, float fRoulette=3.0f, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a hypocycloid helix around lCenter
|
|
// =========================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// fRoulette = arbitrary constant, affects number of petals. DEFAULT : 3.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceHypocycloidSpring(string sTemplate, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a hypocycloid around lCenter
|
|
// ===================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRoulette = arbitrary constant, affects number of petals. DEFAULT : 3.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceHypocycloid(string sTemplate, location lCenter, float fRadius, float fRoulette=3.0f, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a epicycloid helix around lCenter
|
|
// ========================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// fRoulette = arbitrary constant, affects number of petals. DEFAULT : 3.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceEpicycloidSpring(string sTemplate, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Places a epicycloid around lCenter
|
|
// ==================================
|
|
// sTemplate = blueprint resref of placeable to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRoulette = arbitrary constant, affects number of petals. DEFAULT : 3.0
|
|
// nFrequency = number of points, the higher nFrequency, the more placeables
|
|
// are created and the closer they are to each other. DEFAULT : 60
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 12.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeables. Default invalid effect. DEFAULT : -1
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait = time in seconds to wait before applying visual effect. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeables get destroyed. DEFAULT : 0.0
|
|
void PlaceEpicycloid(string sTemplate, location lCenter, float fRadius, float fRoulette=3.0f, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a polygonal hemisphere around lCenter
|
|
// ===========================================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of sphere in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of sphere in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the sphere in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the sphere in meters. DEFAULT : 5.0
|
|
// nSides = number of sides. DEFAULT : 3
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the sphere. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the central/normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamPolygonalHemisphere(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a polygonal spring around lCenter
|
|
// =======================================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of spring in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of spring in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// nSides = number of sides. DEFAULT : 3
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamPolygonalSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a polygonal spiral around lCenter
|
|
// =======================================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of spiral in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of spiral in meters. DEFAULT : 0.0
|
|
// nSides = number of sides. DEFAULT : 3
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spiral. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamPolygonalSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a polygon around lCenter
|
|
// ==============================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius of polygon in meters. (1 tile = 10.0m X 10.0m)
|
|
// nSides = number of sides. DEFAULT : 3
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the polygon. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamPolygon(int nDurationType, int nVFX, location lCenter, float fRadius, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a star around lCenter
|
|
// ===========================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusOuter = outer radius of star in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusInner = inner radius of star in meters.
|
|
// nSides = number of sides (or points) DEFAULT : 3
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the pentacle. DEFAULT : 6.0
|
|
// fWait = time in seconds to wait before applying the beams. DEFAULT : 1.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamStar(int nDurationType, int nVFX, location lCenter, float fRadiusOuter, float fRadiusInner, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=1.0f, float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a star spring around lCenter
|
|
// ==================================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStartOuter = starting outer radius of spring in meters.
|
|
// fRadiusStartInner = starting inner radius of spring in meters.
|
|
// fRadiusEndOuter = ending outer radius of spring in meters. DEFAULT : 0.0
|
|
// fRadiusEndInner = ending inner radius of spring in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// nSides = number of sides (or points) DEFAULT : 3
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the pentacle. DEFAULT : 6.0
|
|
// fWait = time in seconds to wait before applying the beams. DEFAULT : 1.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamStarSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a star spiral around lCenter
|
|
// ==================================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStartOuter = starting outer radius of spring in meters.
|
|
// fRadiusStartInner = starting inner radius of spring in meters.
|
|
// fRadiusEndOuter = ending outer radius of spiral in meters. DEFAULT : 0.0
|
|
// fRadiusEndInner = ending inner radius of spiral in meters. DEFAULT : 0.0
|
|
// nSides = number of sides (or points) DEFAULT : 3
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the pentacle. DEFAULT : 6.0
|
|
// fWait = time in seconds to wait before applying the beams. DEFAULT : 1.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamStarSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a pentacle around lCenter
|
|
// ===============================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius of pentacle in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the pentacle. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamPentacle(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a pentaclic spiral around lCenter
|
|
// =======================================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of spiral in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of spiral in meters. DEFAULT : 0.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fRev = number of revolutions. DEFAULT : 1.0
|
|
// fTime = time in seconds taken to draw the spiral. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamPentaclicSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fDuration=0.0f, string sTemplate="", float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a pentaclic spring around lCenter
|
|
// =======================================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of spring in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of spring in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the spring in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the spring in meters. DEFAULT : 5.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fRev = number of revolutions. DEFAULT : 5.0
|
|
// fTime = time in seconds taken to draw the spring. DEFAULT : 6.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamPentaclicSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a line from lCenter
|
|
// =========================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fLength = length of line in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDirection = direction of line respective to normal. DEFAULT : 0.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beam lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use.. DEFAULT : ""
|
|
// fTime = time in seconds taken to draw the line. DEFAULT : 6.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamLineFromCenter(int nDurationType, int nVFX, location lCenter, float fLength, float fDirection=0.0f, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a line to lCenter
|
|
// =======================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fLength = length of line in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDirection = direction of line respective to normal. DEFAULT : 0.0
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beam lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fTime = time in seconds taken to draw the line. DEFAULT : 6.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamLineToCenter(int nDurationType, int nVFX, location lCenter, float fLength, float fDirection=0.0f, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a stella octangula above lCenter
|
|
// ======================================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fTime = time in seconds taken to create the placeable nodes. DEFAULT : 6.0
|
|
// fWait = time in seconds to wait before applying the beams. DEFAULT : 1.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamStellaOctangula(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a regular icosahedron above lCenter
|
|
// =========================================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fTime = time in seconds taken to create the placeable nodes. DEFAULT : 6.0
|
|
// fWait = time in seconds to wait before applying the beams. DEFAULT : 1.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamIcosahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a regular dodecahedron above lCenter
|
|
// =========================================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fTime = time in seconds taken to create the placeable nodes. DEFAULT : 6.0
|
|
// fWait = time in seconds to wait before applying the beams. DEFAULT : 1.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamDodecahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a rhombic triacontahedron above lCenter
|
|
// =============================================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fTime = time in seconds taken to create the placeable nodes. DEFAULT : 6.0
|
|
// fWait = time in seconds to wait before applying the beams. DEFAULT : 1.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamTriacontahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a cuboctahedron above lCenter
|
|
// =============================================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fTime = time in seconds taken to create the placeable nodes. DEFAULT : 6.0
|
|
// fWait = time in seconds to wait before applying the beams. DEFAULT : 1.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamCuboctahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a small rhombicuboctahedron above lCenter
|
|
// =============================================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadius = radius in meters. (1 tile = 10.0m X 10.0m)
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fTime = time in seconds taken to create the placeable nodes. DEFAULT : 6.0
|
|
// fWait = time in seconds to wait before applying the beams. DEFAULT : 1.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamSmallRhombicuboctahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
// Beams a gengon above lCenter
|
|
// ============================
|
|
// nDurationType = DURATION_TYPE_* constant.
|
|
// nVFX = the VFX_BEAM_* constant to use.
|
|
// lCenter = the location of the center.
|
|
// fRadiusStart = starting radius of gengon in meters. (1 tile = 10.0m X 10.0m)
|
|
// fRadiusEnd = ending radius of gengon in meters. DEFAULT : 0.0
|
|
// fHeightStart = starting height of the gengon in meters. DEFAULT : 0.0
|
|
// fHeightEnd = ending height of the gengon in meters. DEFAULT : 5.0
|
|
// nSides = number of sides. DEFAULT : 3
|
|
// fDuration = if nDurationType is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the beams lasts before fading. DEFAULT : 0.0
|
|
// sTemplate = blueprint resref of placeable to use. DEFAULT : ""
|
|
// fTime = time in seconds taken to draw the gengon. DEFAULT : 6.0
|
|
// fWait = time in seconds to wait before applying the beams. DEFAULT : 1.0
|
|
// fRotate = the angle of rotation respective to normal. DEFAULT : 0.0
|
|
// fTwist = rotational displacement of end polygon in degrees. DEFAULT : 0.0
|
|
// sAxis = ("x", "y" or "z") the normal axis. DEFAULT : "z"
|
|
// nDurationType2 = DURATION_TYPE_* constant if an additional visual effect is
|
|
// to be applied. Default invalid duration. DEFAULT : -1
|
|
// nVFX2 = the VFX_* constant to use if an additional visual effect is to be
|
|
// applied to the placeable nodes. Default invalid effect. DEFAULT : -1
|
|
// fDuration2 = if nDurationType2 is DURATION_TYPE_TEMPORARY, this is the number
|
|
// of seconds the effect lasts before fading. DEFAULT : 0.0
|
|
// fWait2 = time in seconds to wait before applying nVFX2. DEFAULT : 1.0
|
|
// fLifetime = if fLifetime is not 0.0, then this is time in seconds before the
|
|
// placeable nodes get destroyed. DEFAULT : 0.0
|
|
void BeamGengon(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, float fTwist=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f);
|
|
|
|
/*
|
|
=============================================
|
|
OBJECT-RETURNING FUNCTIONS DECLARATIONS
|
|
=============================================
|
|
*/
|
|
// Object-returning equivalent of the void-returning functions
|
|
// sTag = tag of oData (the data storage invisible object)
|
|
|
|
object ObjectPlaceSpring(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_SPRING");
|
|
object ObjectPlacePolygonalSpring(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_POLYGONALSPRING");
|
|
object ObjectPlacePentaclicSpring(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_PENTACLICSPRING");
|
|
object ObjectPlaceStarSpring(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_STARSPRING");
|
|
object ObjectPlaceHemisphere(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_HEMISPHERE");
|
|
object ObjectPlacePolygonalHemisphere(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_POLYGONALHEMISPHERE");
|
|
object ObjectPlaceSinusoid(string sTemplate, location lCenter, float fRadius, float fLength, float fDirection=0.0f, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_SINUSOID");
|
|
object ObjectPlaceToroidalSpring(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fLoopsPerRev=36.0f, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_TOROIDALSPRING");
|
|
object ObjectPlaceEllipticalSpring(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_ELLIPTICALSPRING");
|
|
object ObjectPlaceStellaOctangula(string sTemplate, location lCenter, float fRadius, int nFrequency=60, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_STELLAOCTANGULA");
|
|
object ObjectPlaceIcosahedron(string sTemplate, location lCenter, float fRadius, int nFrequency=60, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_ICOSAHEDRON");
|
|
object ObjectPlaceRhodoneaSpring(string sTemplate, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_RHODONEASPRING");
|
|
object ObjectPlaceHypocycloidSpring(string sTemplate, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_HYPOCYCLOIDSPRING");
|
|
object ObjectPlaceEpicycloidSpring(string sTemplate, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_EPICYCLOIDSPRING");
|
|
object ObjectBeamPolygonalHemisphere(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_POLYGONALHEMISPHERE");
|
|
object ObjectBeamPolygonalSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_POLYGONALSPRING");
|
|
object ObjectBeamPolygon(int nDurationType, int nVFX, location lCenter, float fRadius, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_POLYGON");
|
|
object ObjectBeamStar(int nDurationType, int nVFX, location lCenter, float fRadiusOuter, float fRadiusInner, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=1.0f, float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_STAR");
|
|
object ObjectBeamStarSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_STARSPRING");
|
|
object ObjectBeamPentacle(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_PENTACLE");
|
|
object ObjectBeamPentaclicSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_PENTACLICSPRING");
|
|
object ObjectBeamLineFromCenter(int nDurationType, int nVFX, location lCenter, float fLength, float fDirection=0.0f, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_LINEFROM");
|
|
object ObjectBeamLineToCenter(int nDurationType, int nVFX, location lCenter, float fLength, float fDirection=0.0f, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_LINETO");
|
|
object ObjectBeamStellaOctangula(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_STELLAOCTANGULA");
|
|
object ObjectBeamIcosahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_ICOSAHEDRON");
|
|
object ObjectBeamDodecahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_DODECAHEDRON");
|
|
object ObjectBeamTriacontahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_TRIACONTAHEDRON");
|
|
object ObjectBeamCuboctahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_CUBOCTAHEDRON");
|
|
object ObjectBeamSmallRhombicuboctahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_SMALLRHOMBICUBOCTAHEDRON");
|
|
object ObjectBeamGengon(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, float fTwist=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_GENGON");
|
|
|
|
/*
|
|
=============================================
|
|
PRIVATE FUNCTIONS DECLARATIONS
|
|
=============================================
|
|
*/
|
|
// Draws a straight line from vOne to vTwo
|
|
// void DrawLineFromVectorToVector(int nDurationType, int nVFX, object oArea, vector vOne, vector vTwo, float fDuration, int nFrequency, float fTime);
|
|
|
|
// Places a straight line from vOne to vTwo, automatically applies VFX if any
|
|
// void PlaceLineFromVectorToVector(string sTemplate, object oArea, vector vOne, vector vTwo, int nFrequency, float fTime, int nDurationType, int nVFX, float fDuration, float fWait, float fLifetime, object oData);
|
|
|
|
// Delayable CreateObject, automatically applies VFX if any, and sets created object as oData's local object using auto-generated number if fLifetime > 0.0
|
|
// void gao_ActionCreateObject(string sTemplate, location lLocation, int nDurationType, int nVFX, float fDuration, float fWait, float fLifetime, object oData);
|
|
|
|
// Delayable CreateObject, automatically sets created object as oData's local object and applies VFX if any
|
|
// void gao_ActionCreateLocalObject(string sTemplate, location lLocation, string sNumber, object oData, int nDurationType, int nVFX, float fDuration, float fWait, float fLifetime);
|
|
|
|
// Apply EffectBeam between two of oData's local objects
|
|
// void gao_ActionApplyLocalBeamEffect(object oData, string sNumber1, string sNumber2, int nDurationType, int nVFX, float fDuration);
|
|
|
|
// Return properly rotated vector
|
|
//vector gao_RotateVector(vector vCenter, string sAxis, float x, float y, float z, float fRotateXZ, float fRotateYZ);
|
|
|
|
/*
|
|
=============================================
|
|
FUNCTIONS IMPLEMENTATIONS
|
|
=============================================
|
|
*/
|
|
|
|
/*
|
|
=============================================
|
|
PRIVATE FUNCTIONS
|
|
=============================================
|
|
*/
|
|
|
|
void gao_ActionCreateObject(string sTemplate, location lLocation, int nDurationType, int nVFX, float fDuration, float fWait, float fLifetime, object oData)
|
|
{
|
|
object oPlaceable = CreateObject(OBJECT_TYPE_PLACEABLE, sTemplate, lLocation);
|
|
if (nDurationType >= 0 && nVFX >= 0) DelayCommand(fWait, ApplyEffectToObject(nDurationType, EffectVisualEffect(nVFX), oPlaceable, fDuration));
|
|
if (fLifetime > 0.0) DestroyObject(oPlaceable, fLifetime);
|
|
else // if display is permanent, then start storing the objects as local to ease garbage collection later on.
|
|
{ // code modified from Ornedan's modification of the original function
|
|
int i = GetLocalInt(oData, "storetotal");
|
|
AssignCommand(oPlaceable, ActionDoCommand(SetLocalObject(oData, "store" + IntToString(i), oPlaceable)));
|
|
SetLocalInt(oData, "storetotal", i+1);
|
|
}
|
|
}
|
|
|
|
void gao_ActionCreateLocalObject(string sTemplate, location lLocation, string sNumber, object oData, int nDurationType, int nVFX, float fDuration, float fWait, float fLifetime)
|
|
{
|
|
object oObject = CreateObject(OBJECT_TYPE_PLACEABLE, sTemplate, lLocation);
|
|
AssignCommand(oObject, ActionDoCommand(SetLocalObject(oData, sNumber, oObject)));
|
|
if (nDurationType >= 0 && nVFX >= 0) DelayCommand(fWait, ApplyEffectToObject(nDurationType, EffectVisualEffect(nVFX), oObject, fDuration));
|
|
if (fLifetime > 0.0) DestroyObject(oObject, fLifetime);
|
|
}
|
|
|
|
void gao_ActionApplyLocalBeamEffect(object oData, string sNumber1, string sNumber2, int nDurationType, int nVFX, float fDuration)
|
|
{
|
|
object oNode1 = GetLocalObject(oData, sNumber1);
|
|
object oNode2 = GetLocalObject(oData, sNumber2);
|
|
ApplyEffectToObject(nDurationType, EffectBeam(nVFX, oNode1, BODY_NODE_CHEST), oNode2, fDuration);
|
|
}
|
|
|
|
void DrawLineFromVectorToVector(int nDurationType, int nVFX, object oArea, vector vOne, vector vTwo, float fDuration, int nFrequency, float fTime)
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 1;
|
|
vector vResultant = vTwo - vOne;
|
|
vector vUnit = VectorNormalize(vResultant);
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
float fLength = VectorMagnitude(vResultant);
|
|
float fDelta = fLength/IntToFloat(nFrequency); // distance between each node
|
|
float fAngle = VectorToAngle(vUnit);
|
|
location lPos;
|
|
float f;
|
|
for (i=0; i<nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
lPos = Location(oArea, vOne + fDelta*f*vUnit, fAngle);
|
|
DelayCommand(f*fDelay, ApplyEffectAtLocation(nDurationType, EffectVisualEffect(nVFX), lPos, fDuration));
|
|
}
|
|
}
|
|
|
|
void PlaceLineFromVectorToVector(string sTemplate, object oArea, vector vOne, vector vTwo, int nFrequency, float fTime, int nDurationType, int nVFX, float fDuration, float fWait, float fLifetime, object oData)
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 1;
|
|
vector vResultant = vTwo - vOne;
|
|
vector vUnit = VectorNormalize(vResultant);
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
float fLength = VectorMagnitude(vResultant);
|
|
float fTheta = fLength/IntToFloat(nFrequency); // distance between each node
|
|
float fAngle = VectorToAngle(vUnit);
|
|
location lPos;
|
|
float f;
|
|
|
|
for (i=0; i<nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
lPos = Location(oArea, vOne + fTheta*f*vUnit, fAngle);
|
|
DelayCommand(f*fDelay, gao_ActionCreateObject(sTemplate, lPos, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
}
|
|
|
|
vector gao_RotateVector(vector vCenter, string sAxis, float x, float y, float z, float fRotateXZ, float fRotateYZ)
|
|
{
|
|
// Avoiding these if unnecessary should lower the CPU usage per call a fair bit. Not that it seems to be noticeable, but eh :P
|
|
if(fRotateXZ != 0.0f)
|
|
{
|
|
// Determine the length of the vector
|
|
float fLength = sqrt((x * x) + (z * z));
|
|
// Determine the angle of the vector relative to the Z axle
|
|
float fAngle = acos(z / fLength);
|
|
// Adjust for arcuscosine ambiquity
|
|
if(x < 0.0f) fAngle = 360.0f - fAngle;
|
|
|
|
// Add in the new angle to rotate by and calculate new coordinates
|
|
fAngle += fRotateXZ;
|
|
x = fLength * sin(fAngle);
|
|
z = fLength * cos(fAngle);
|
|
}
|
|
if(fRotateYZ != 0.0f)
|
|
{
|
|
// Determine the length of the vector
|
|
float fLength = sqrt((y * y) + (z * z));
|
|
// Determine the angle of the vector relative to the Z axle
|
|
float fAngle = acos(z / fLength);
|
|
// Adjust for arcuscosine ambiquity
|
|
if(y < 0.0f) fAngle = 360.0f - fAngle;
|
|
|
|
// Add in the new angle to rotate by and calculate new coordinates
|
|
fAngle += fRotateYZ;
|
|
y = fLength * sin(fAngle);
|
|
z = fLength * cos(fAngle);
|
|
}
|
|
|
|
// Determine the final vector
|
|
vector vPos;
|
|
if (sAxis == "x") vPos = Vector(y, z, x) ;
|
|
else if (sAxis == "y") vPos = Vector(z, x, y) ;
|
|
else vPos = Vector(x, y, z) ;
|
|
return vPos + vCenter ;
|
|
}
|
|
|
|
/*
|
|
=============================================
|
|
DRAW* FUNCTIONS
|
|
=============================================
|
|
*/
|
|
|
|
void DrawEllipticalSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 90;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
fRadiusStartOuter = (fRadiusStartOuter == 0.0) ? 0.01 : (fRadiusStartOuter < 0.0) ? -fRadiusStartOuter : fRadiusStartOuter ;
|
|
fRadiusStartInner = (fRadiusStartInner == 0.0) ? 0.01 : (fRadiusStartInner < 0.0) ? -fRadiusStartInner : fRadiusStartInner ;
|
|
fRadiusEndOuter = (fRadiusEndOuter == 0.0) ? 0.01 : (fRadiusEndOuter < 0.0) ? -fRadiusEndOuter : fRadiusEndOuter ;
|
|
fRadiusEndInner = (fRadiusEndInner == 0.0) ? 0.01 : (fRadiusEndInner < 0.0) ? -fRadiusEndInner : fRadiusEndInner ;
|
|
float fTheta = 360.0*fRev/IntToFloat(nFrequency); // angle between each node
|
|
float fInnerDecay = (fRadiusStartInner - fRadiusEndInner)/IntToFloat(nFrequency); // change in radius per node
|
|
float fOuterDecay = (fRadiusStartOuter - fRadiusEndOuter)/IntToFloat(nFrequency); // change in radius per node
|
|
float fGrowth = (fHeightStart - fHeightEnd)/IntToFloat(nFrequency); // change in height per node
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector vPos;
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
location lPos;
|
|
float f, fAngle, fElliRadius, fElliAngle, fRadiusOuter, fEccentric;
|
|
for (i = 0; i < nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fElliAngle = fTheta*f;
|
|
fAngle = fElliAngle + fRotate;
|
|
fRadiusOuter = fRadiusStartOuter - fOuterDecay*f;
|
|
fEccentric = 1 - (pow(fRadiusStartInner - fInnerDecay*f, 2.0)/pow(fRadiusOuter, 2.0));
|
|
fElliRadius = fRadiusOuter*sqrt((1 - fEccentric)/(1 - fEccentric*pow(cos(fElliAngle), 2.0)));
|
|
vPos = gao_RotateVector(vCenter, sAxis, fElliRadius*cos(fAngle), fElliRadius*sin(fAngle), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ);
|
|
lPos = Location(oArea, vPos, fAngle);
|
|
DelayCommand(f*fDelay, ApplyEffectAtLocation(nDurationType, EffectVisualEffect(nVFX), lPos, fDuration));
|
|
}
|
|
}
|
|
|
|
void DrawEllipticalSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawEllipticalSpring(nDurationType, nVFX, lCenter, fRadiusStartOuter, fRadiusStartInner, fRadiusEndOuter, fRadiusEndInner, 0.0, 0.0, fDuration, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawEllipse(int nDurationType, int nVFX, location lCenter, float fRadiusOuter, float fRadiusInner, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawEllipticalSpring(nDurationType, nVFX, lCenter, fRadiusOuter, fRadiusInner, fRadiusOuter, fRadiusInner, 0.0, 0.0, fDuration, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 90;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
float fTheta = 360.0*fRev/IntToFloat(nFrequency); // angle between each node
|
|
float fDecay = (fRadiusStart - fRadiusEnd)/IntToFloat(nFrequency); // change in radius per node
|
|
float fGrowth = (fHeightStart - fHeightEnd)/IntToFloat(nFrequency); // change in height per node
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector vPos;
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
location lPos;
|
|
float f, fAngle;
|
|
for (i=0; i<nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fTheta*f + fRotate;
|
|
vPos = gao_RotateVector(vCenter, sAxis, (fRadiusStart - fDecay*f)*cos(fAngle), (fRadiusStart - fDecay*f)*sin(fAngle), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ);
|
|
lPos = Location(oArea, vPos, fAngle);
|
|
DelayCommand(f*fDelay, ApplyEffectAtLocation(nDurationType, EffectVisualEffect(nVFX), lPos, fDuration));
|
|
}
|
|
}
|
|
|
|
void DrawSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawSpring(nDurationType, nVFX, lCenter, fRadiusStart, fRadiusEnd, 0.0, 0.0, fDuration, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawCircle(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawSpring(nDurationType, nVFX, lCenter, fRadius, fRadius, 0.0, 0.0, fDuration, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawLineToCenter(int nDurationType, int nVFX, location lCenter, float fLength, float fDirection=0.0f, float fDuration=0.0f, int nFrequency=90, float fTime=6.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawSpring(nDurationType, nVFX, lCenter, fLength, 0.0, 0.0, 0.0, fDuration, nFrequency, 0.0, fTime, fDirection, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawLineFromCenter(int nDurationType, int nVFX, location lCenter, float fLength, float fDirection=0.0f, float fDuration=0.0f, int nFrequency=90, float fTime=6.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawSpring(nDurationType, nVFX, lCenter, 0.0, fLength, 0.0, 0.0, fDuration, nFrequency, 0.0, fTime, fDirection, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawPolygonalSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
int i;
|
|
if (nSides < 3) nSides = 3;
|
|
if (nFrequency < 1) nFrequency = 90;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fRev == 0.0) fRev = 5.0;
|
|
float fEta = (fRev > 0.0) ? 360.0/IntToFloat(nSides) : -360.0/IntToFloat(nSides); // angle of segment
|
|
float fSidesToDraw = (fRev > 0.0) ? fRev*IntToFloat(nSides) : -fRev*IntToFloat(nSides); // total number of sides to draw including revolutions as float value
|
|
int nSidesToDraw = FloatToInt(fSidesToDraw); // total number of sides to draw including revolutions as int value
|
|
int nFrequencyPerSide = FloatToInt(IntToFloat(nFrequency)/fSidesToDraw);
|
|
float fDecay = (fRadiusStart - fRadiusEnd)/fSidesToDraw; // change in radius per side
|
|
float fGrowth = (fHeightStart - fHeightEnd)/fSidesToDraw; // change in height per side
|
|
float fDelayPerSide = fTime/fSidesToDraw;
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector vPos1, vPos2;
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float f, g, fAngle1, fAngle2;
|
|
for (i = 0; i < nSidesToDraw; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
g = IntToFloat(i+1);
|
|
fAngle1 = fEta*f + fRotate;
|
|
fAngle2 = fEta*g + fRotate;
|
|
vPos1 = gao_RotateVector(vCenter, sAxis, (fRadiusStart - fDecay*f)*cos(fAngle1), (fRadiusStart - fDecay*f)*sin(fAngle1), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ);
|
|
vPos2 = gao_RotateVector(vCenter, sAxis, (fRadiusStart - fDecay*g)*cos(fAngle2), (fRadiusStart - fDecay*g)*sin(fAngle2), fHeightStart - fGrowth*g, fDirectionXZ, fDirectionYZ);
|
|
DelayCommand(f*fDelayPerSide, DrawLineFromVectorToVector(nDurationType, nVFX, oArea, vPos1, vPos2, fDuration, nFrequencyPerSide, fDelayPerSide));
|
|
}
|
|
}
|
|
|
|
void DrawPolygonalSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, int nSides=3, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawPolygonalSpring(nDurationType, nVFX, lCenter, fRadiusStart, fRadiusEnd, 0.0, 0.0, nSides, fDuration, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawPolygon(int nDurationType, int nVFX, location lCenter, float fRadius, int nSides=3, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawPolygonalSpring(nDurationType, nVFX, lCenter, fRadius, fRadius, 0.0, 0.0, nSides, fDuration, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawPentaclicSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 90;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fRev == 0.0) fRev = 5.0;
|
|
float fSidesToDraw = (fRev > 0.0) ? fRev*5.0 : -fRev*5.0;
|
|
int nSidesToDraw = FloatToInt(fSidesToDraw); // total number of sides to draw including revolutions
|
|
int nFrequencyPerSide = FloatToInt(IntToFloat(nFrequency)/fSidesToDraw);
|
|
float fDecay = (fRadiusStart - fRadiusEnd)/fSidesToDraw; // change in radius per node
|
|
float fGrowth = (fHeightStart - fHeightEnd)/fSidesToDraw; // change in height per node
|
|
float fDelayPerSide = fTime/fSidesToDraw;
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector vPos1, vPos2;
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float f, g, fAngle1, fAngle2;
|
|
float fStarangle = (fRev > 0.0) ? 144.0 : -144.0;
|
|
for (i = 0; i < nSidesToDraw; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
g = IntToFloat(i+1);
|
|
fAngle1 = fStarangle*f + fRotate;
|
|
fAngle2 = fStarangle*g + fRotate;
|
|
vPos1 = gao_RotateVector(vCenter, sAxis, (fRadiusStart - fDecay*f)*cos(fAngle1), (fRadiusStart - fDecay*f)*sin(fAngle1), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ);
|
|
vPos2 = gao_RotateVector(vCenter, sAxis, (fRadiusStart - fDecay*g)*cos(fAngle2), (fRadiusStart - fDecay*g)*sin(fAngle2), fHeightStart - fGrowth*g, fDirectionXZ, fDirectionYZ);
|
|
DelayCommand(f*fDelayPerSide, DrawLineFromVectorToVector(nDurationType, nVFX, oArea, vPos1, vPos2, fDuration, nFrequencyPerSide, fDelayPerSide));
|
|
}
|
|
}
|
|
|
|
void DrawPentaclicSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawPentaclicSpring(nDurationType, nVFX, lCenter, fRadiusStart, fRadiusEnd, 0.0, 0.0, fDuration, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawPentacle(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawPentaclicSpring(nDurationType, nVFX, lCenter, fRadius, fRadius, 0.0, 0.0, fDuration, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawStarSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
int i, toggle;
|
|
if (nSides < 2) nSides = 3;
|
|
if (nFrequency < 1) nFrequency = 90;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fRev == 0.0) fRev = 5.0;
|
|
float fSidesToDraw = (fRev > 0.0) ? fRev*IntToFloat(nSides*2) : -fRev*IntToFloat(nSides*2);
|
|
int nSidesToDraw = FloatToInt(fSidesToDraw); // total number of sides to draw including revolutions
|
|
int nFrequencyPerSide = FloatToInt(IntToFloat(nFrequency)/fSidesToDraw);
|
|
float fDecayInner = (fRadiusStartInner - fRadiusEndInner)/fSidesToDraw; // change in radius per node
|
|
float fDecayOuter = (fRadiusStartOuter - fRadiusEndOuter)/fSidesToDraw; // change in radius per node
|
|
float fGrowth = (fHeightStart - fHeightEnd)/fSidesToDraw; // change in height per node
|
|
float fDelayPerSide = fTime/fSidesToDraw;
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector vPos1, vPos2;
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float f, g, fAngle1, fAngle2;
|
|
float fStarangle = (fRev > 0.0) ? 360.0/IntToFloat(nSides*2) : -360.0/IntToFloat(nSides*2);
|
|
for (i = 0; i < nSidesToDraw; i++)
|
|
{
|
|
toggle ^= 1;
|
|
f = IntToFloat(i);
|
|
g = IntToFloat(i+1);
|
|
fAngle1 = fStarangle*f + fRotate;
|
|
fAngle2 = fStarangle*g + fRotate;
|
|
if (!toggle)
|
|
{
|
|
vPos1 = gao_RotateVector(vCenter, sAxis, (fRadiusStartInner - fDecayInner*f)*cos(fAngle1), (fRadiusStartInner - fDecayInner*f)*sin(fAngle1), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ);
|
|
vPos2 = gao_RotateVector(vCenter, sAxis, (fRadiusStartOuter - fDecayOuter*g)*cos(fAngle2), (fRadiusStartOuter - fDecayOuter*g)*sin(fAngle2), fHeightStart - fGrowth*g, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
else
|
|
{
|
|
vPos1 = gao_RotateVector(vCenter, sAxis, (fRadiusStartOuter - fDecayOuter*f)*cos(fAngle1), (fRadiusStartOuter - fDecayOuter*f)*sin(fAngle1), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ);
|
|
vPos2 = gao_RotateVector(vCenter, sAxis, (fRadiusStartInner - fDecayInner*g)*cos(fAngle2), (fRadiusStartInner - fDecayInner*g)*sin(fAngle2), fHeightStart - fGrowth*g, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
DelayCommand(f*fDelayPerSide, DrawLineFromVectorToVector(nDurationType, nVFX, oArea, vPos1, vPos2, fDuration, nFrequencyPerSide, fDelayPerSide));
|
|
}
|
|
}
|
|
|
|
void DrawStarSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, int nSides=3, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawStarSpring(nDurationType, nVFX, lCenter, fRadiusStartOuter, fRadiusStartInner, fRadiusEndOuter, fRadiusEndInner, 0.0, 0.0, nSides, fDuration, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawStar(int nDurationType, int nVFX, location lCenter, float fRadiusOuter, float fRadiusInner, int nSides=3, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawStarSpring(nDurationType, nVFX, lCenter, fRadiusOuter, fRadiusInner, fRadiusOuter, fRadiusInner, 0.0, 0.0, nSides, fDuration, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawHemisphere(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 90;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fRev == 0.0) fRev = 5.0;
|
|
float fTheta = 360.0*fRev/IntToFloat(nFrequency); // angle between each node
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
location lPos;
|
|
float f, fAngle, fSphereRadius, fSphereAngle;
|
|
float fEffectiveHeight = fHeightEnd - fHeightStart;
|
|
for (i = 0; i < nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fTheta*f + fRotate;
|
|
fSphereAngle = fTheta*f*0.25/fRev;
|
|
fSphereRadius = fRadiusStart*cos(fSphereAngle) + fRadiusEnd*sin(fSphereAngle);
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fSphereRadius*cos(fAngle), fSphereRadius*sin(fAngle), fEffectiveHeight*sin(fSphereAngle) + fHeightStart, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelay, ApplyEffectAtLocation(nDurationType, EffectVisualEffect(nVFX), lPos, fDuration));
|
|
}
|
|
}
|
|
|
|
void DrawSphere(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
if (nFrequency < 1) nFrequency = 90;
|
|
if (fRev == 0.0) fRev = 5.0;
|
|
DrawHemisphere(nDurationType, nVFX, lCenter, fRadius, 0.0, fRadius, 0.0, fDuration, nFrequency/2, fRev/2.0, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
DrawHemisphere(nDurationType, nVFX, lCenter, fRadius, 0.0, fRadius, 2.0*fRadius, fDuration, nFrequency/2, -fRev/2.0, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawPolygonalHemisphere(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
int i;
|
|
if (nSides < 3) nSides = 3;
|
|
if (nFrequency < 1) nFrequency = 90;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fRev == 0.0) fRev = 5.0;
|
|
float fEta = (fRev > 0.0) ? 360.0/IntToFloat(nSides) : -360.0/IntToFloat(nSides); // angle of segment
|
|
float fSidesToDraw = (fRev > 0.0) ? fRev*IntToFloat(nSides) : -fRev*IntToFloat(nSides); // total number of sides to draw including revolutions as float value
|
|
int nSidesToDraw = FloatToInt(fSidesToDraw); // total number of sides to draw including revolutions as int value
|
|
int nFrequencyPerSide = FloatToInt(IntToFloat(nFrequency)/fSidesToDraw);
|
|
float fDelayPerSide = fTime/fSidesToDraw;
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector vPos1, vPos2;
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float f, g, fAngle1, fAngle2, fSphereRadius1, fSphereAngle1, fSphereRadius2, fSphereAngle2;
|
|
float fEffectiveHeight = fHeightEnd - fHeightStart;
|
|
for (i = 0; i < nSidesToDraw; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
g = IntToFloat(i+1);
|
|
fAngle1 = fEta*f + fRotate;
|
|
fSphereAngle1 = fEta*f*0.25/fRev;
|
|
fSphereRadius1 = fRadiusStart*cos(fSphereAngle1) + fRadiusEnd*sin(fSphereAngle1);
|
|
fAngle2 = fEta*g + fRotate;
|
|
fSphereAngle2 = fEta*g*0.25/fRev;
|
|
fSphereRadius2 = fRadiusStart*cos(fSphereAngle2) + fRadiusEnd*sin(fSphereAngle2);
|
|
vPos1 = gao_RotateVector(vCenter, sAxis, fSphereRadius1*cos(fAngle1), fSphereRadius1*sin(fAngle1), fEffectiveHeight*sin(fSphereAngle1) + fHeightStart, fDirectionXZ, fDirectionYZ);
|
|
vPos2 = gao_RotateVector(vCenter, sAxis, fSphereRadius2*cos(fAngle2), fSphereRadius2*sin(fAngle2), fEffectiveHeight*sin(fSphereAngle2) + fHeightStart, fDirectionXZ, fDirectionYZ);
|
|
DelayCommand(f*fDelayPerSide, DrawLineFromVectorToVector(nDurationType, nVFX, oArea, vPos1, vPos2, fDuration, nFrequencyPerSide, fDelayPerSide));
|
|
}
|
|
}
|
|
|
|
void DrawToroidalSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fDuration=0.0f, int nFrequency=90, float fLoopsPerRev=36.0f, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 90;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
float fRadiusStart = (fRadiusStartOuter + fRadiusStartInner)*0.5;
|
|
float fRadiusEnd = (fRadiusEndOuter + fRadiusEndInner)*0.5;
|
|
float fToricRadiusStart = (fRadiusStartOuter - fRadiusStartInner)*0.5;
|
|
float fToricRadiusEnd = (fRadiusEndOuter - fRadiusEndInner)*0.5;
|
|
float fTheta = 360.0*fRev/IntToFloat(nFrequency); // angle between each node
|
|
float fDecay = (fRadiusStart - fRadiusEnd)/IntToFloat(nFrequency); // change in radius per node
|
|
float fGrowth = (fHeightStart - fHeightEnd)/IntToFloat(nFrequency); // change in height per node
|
|
float fToricDecay = (fToricRadiusStart - fToricRadiusEnd)/IntToFloat(nFrequency); // change in radius of torus per node
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
location lPos;
|
|
float f, fAngle, fToricAngle, fToricRadius;
|
|
for (i=0; i<nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fTheta*f + fRotate;
|
|
fToricAngle = fLoopsPerRev*fAngle;
|
|
fToricRadius = (fToricRadiusStart - fToricDecay*f);
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, (fRadiusStart - fDecay*f)*cos(fAngle) + fToricRadius*cos(fToricAngle)*cos(fAngle), (fRadiusStart - fDecay*f)*sin(fAngle) + fToricRadius*cos(fToricAngle)*sin(fAngle), fHeightStart - fGrowth*f + fToricRadius*sin(fToricAngle), fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelay, ApplyEffectAtLocation(nDurationType, EffectVisualEffect(nVFX), lPos, fDuration));
|
|
}
|
|
}
|
|
|
|
void DrawToroidalSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fDuration=0.0f, int nFrequency=90, float fLoopsPerRev=36.0f, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawToroidalSpring(nDurationType, nVFX, lCenter, fRadiusStartOuter, fRadiusStartInner, fRadiusEndOuter, fRadiusEndInner, 0.0, 0.0, fDuration, nFrequency, fLoopsPerRev, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawTorus(int nDurationType, int nVFX, location lCenter, float fRadiusOuter, float fRadiusInner, float fDuration=0.0f, int nFrequency=90, float fLoopsPerRev=36.0f, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawToroidalSpring(nDurationType, nVFX, lCenter, fRadiusOuter, fRadiusInner, fRadiusOuter, fRadiusInner, 0.0, 0.0, fDuration, nFrequency, fLoopsPerRev, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawRhodoneaSpring(int nDurationType, int nVFX, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 90;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
float fTheta = 360.0*fRev/IntToFloat(nFrequency); // angle between each node
|
|
float fGrowth = (fHeightStart - fHeightEnd)/IntToFloat(nFrequency); // change in height per node
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
location lPos;
|
|
float f, fAngle, fDist;
|
|
for (i = 0; i < nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fTheta*f;
|
|
fDist = fRadius*sin(fRoulette*fAngle);
|
|
fAngle += fRotate;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fDist*cos(fAngle), fDist*sin(fAngle), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelay, ApplyEffectAtLocation(nDurationType, EffectVisualEffect(nVFX), lPos, fDuration));
|
|
}
|
|
}
|
|
|
|
void DrawRhodonea(int nDurationType, int nVFX, location lCenter, float fRadius, float fRoulette=3.0f, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawRhodoneaSpring(nDurationType, nVFX, lCenter, fRadius, 0.0, 0.0, fRoulette, fDuration, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawHypocycloidSpring(int nDurationType, int nVFX, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 90;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fRoulette == 0.0) fRoulette = 3.0;
|
|
float fTheta = 360.0*fRev/IntToFloat(nFrequency); // angle between each node
|
|
float fGrowth = (fHeightStart - fHeightEnd)/IntToFloat(nFrequency); // change in height per node
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
location lPos;
|
|
float fAlpha = fRadius - fRoulette;
|
|
float fBeta = fAlpha/fRoulette;
|
|
float f, x, y, fAngle, fDist;
|
|
|
|
for (i = 0; i < nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fTheta*f;
|
|
y = fAlpha*sin(fAngle) - fRoulette*sin(fBeta*fAngle);
|
|
x = fAlpha*cos(fAngle) + fRoulette*cos(fBeta*fAngle);
|
|
fDist = sqrt(pow(y, 2.0) + pow(x, 2.0)); // x -> 0; atan(y/x) -> 90;
|
|
fAngle = (x == 0.0 && y < 0.0) ? 270.0 + fRotate : (x==0.0) ? 90.0 + fRotate : (x < 0.0) ? 180.0 + atan(y/x) + fRotate : atan(y/x) + fRotate;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fDist*cos(fAngle), fDist*sin(fAngle), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelay, ApplyEffectAtLocation(nDurationType, EffectVisualEffect(nVFX), lPos, fDuration));
|
|
}
|
|
}
|
|
|
|
void DrawHypocycloid(int nDurationType, int nVFX, location lCenter, float fRadius, float fRoulette=3.0f, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawHypocycloidSpring(nDurationType, nVFX, lCenter, fRadius, 0.0, 0.0, fRoulette, fDuration, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawEpicycloidSpring(int nDurationType, int nVFX, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, float fDuration=0.0f, int nFrequency=90, float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 90;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fRoulette == 0.0) fRoulette = 3.0;
|
|
float fTheta = 360.0*fRev/IntToFloat(nFrequency); // angle between each node
|
|
float fGrowth = (fHeightStart - fHeightEnd)/IntToFloat(nFrequency); // change in height per node
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
location lPos;
|
|
float fAlpha = fRadius + fRoulette;
|
|
float fBeta = fAlpha/fRoulette;
|
|
float f, x, y, fAngle, fDist;
|
|
|
|
for (i = 0; i < nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fTheta*f;
|
|
y = (fAlpha*sin(fAngle) - fRoulette*sin(fBeta*fAngle));
|
|
x = (fAlpha*cos(fAngle) - fRoulette*cos(fBeta*fAngle));
|
|
fDist = sqrt(pow(y, 2.0) + pow(x, 2.0));
|
|
fAngle = (x == 0.0 && y < 0.0) ? 270.0 + fRotate : (x==0.0) ? 90.0 + fRotate : (x < 0.0) ? 180.0 + atan(y/x) + fRotate : atan(y/x) + fRotate;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fDist*cos(fAngle), fDist*sin(fAngle), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelay, ApplyEffectAtLocation(nDurationType, EffectVisualEffect(nVFX), lPos, fDuration));
|
|
}
|
|
}
|
|
|
|
void DrawEpicycloid(int nDurationType, int nVFX, location lCenter, float fRadius, float fRoulette=3.0f, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
DrawEpicycloidSpring(nDurationType, nVFX, lCenter, fRadius, 0.0, 0.0, fRoulette, fDuration, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
|
|
void DrawSinusoid(int nDurationType, int nVFX, location lCenter, float fRadius, float fLength, float fDirection=0.0f, float fDuration=0.0f, int nFrequency=90, float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f)
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 90;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
float fTheta = 360.0*fRev/IntToFloat(nFrequency); // angle between each node
|
|
float fEta = fLength/IntToFloat(nFrequency); // horizontal distance between each node
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector v, vTemp;
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
location lPos;
|
|
float f, fAngle, fSine;
|
|
|
|
for (i = 0; i < nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fTheta*f + fRotate;
|
|
fSine = sin(fAngle);
|
|
v = Vector(fEta*f, fRadius*fSine, 0.0);
|
|
vTemp = VectorMagnitude(v)*AngleToVector(VectorToAngle(v) + fDirection);
|
|
fAngle = (fSine > 0.0) ? 360.0 - fAngle : fAngle ;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, vTemp.x, vTemp.y, 0.0, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelay, ApplyEffectAtLocation(nDurationType, EffectVisualEffect(nVFX), lPos, fDuration));
|
|
}
|
|
}
|
|
|
|
/*
|
|
=============================================
|
|
PLACE* FUNCTIONS
|
|
=============================================
|
|
*/
|
|
|
|
object ObjectPlaceEllipticalSpring(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_ELLIPTICALSPRING")
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 60;
|
|
if (fTime < 0.0) fTime = 12.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
fRadiusStartOuter = (fRadiusStartOuter == 0.0) ? 0.01 : (fRadiusStartOuter < 0.0) ? -fRadiusStartOuter : fRadiusStartOuter ;
|
|
fRadiusStartInner = (fRadiusStartInner == 0.0) ? 0.01 : (fRadiusStartInner < 0.0) ? -fRadiusStartInner : fRadiusStartInner ;
|
|
fRadiusEndOuter = (fRadiusEndOuter == 0.0) ? 0.01 : (fRadiusEndOuter < 0.0) ? -fRadiusEndOuter : fRadiusEndOuter ;
|
|
fRadiusEndInner = (fRadiusEndInner == 0.0) ? 0.01 : (fRadiusEndInner < 0.0) ? -fRadiusEndInner : fRadiusEndInner ;
|
|
float fTheta = 360.0*fRev/IntToFloat(nFrequency); // angle between each node
|
|
float fInnerDecay = (fRadiusStartInner - fRadiusEndInner)/IntToFloat(nFrequency); // change in radius per node
|
|
float fOuterDecay = (fRadiusStartOuter - fRadiusEndOuter)/IntToFloat(nFrequency); // change in radius per node
|
|
float fGrowth = (fHeightStart - fHeightEnd)/IntToFloat(nFrequency); // change in height per node
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
location lPos;
|
|
float f, fAngle, fElliRadius, fElliAngle, fRadiusOuter, fEccentric;
|
|
|
|
object oData = (fLifetime > 0.0) ? OBJECT_INVALID : CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
|
|
for (i = 0; i < nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fElliAngle = fTheta*f;
|
|
fAngle = fElliAngle + fRotate;
|
|
fRadiusOuter = fRadiusStartOuter - fOuterDecay*f;
|
|
fEccentric = 1 - (pow(fRadiusStartInner - fInnerDecay*f, 2.0)/pow(fRadiusOuter, 2.0));
|
|
fElliRadius = fRadiusOuter*sqrt((1 - fEccentric)/(1 - fEccentric*pow(cos(fElliAngle), 2.0)));
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fElliRadius*cos(fAngle), fElliRadius*sin(fAngle), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelay, gao_ActionCreateObject(sTemplate, lPos, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
|
|
return oData;
|
|
}
|
|
|
|
void PlaceEllipticalSpring(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceEllipticalSpring(sTemplate, lCenter, fRadiusStartOuter, fRadiusStartInner, fRadiusEndOuter, fRadiusEndInner, fHeightStart, fHeightEnd, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime);
|
|
}
|
|
|
|
void PlaceEllipticalSpiral(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceEllipticalSpring(sTemplate, lCenter, fRadiusStartOuter, fRadiusStartInner, fRadiusEndOuter, fRadiusEndInner, 0.0, 0.0, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_ELLIPTICALSPIRAL");
|
|
}
|
|
|
|
void PlaceEllipse(string sTemplate, location lCenter, float fRadiusOuter, float fRadiusInner, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceEllipticalSpring(sTemplate, lCenter, fRadiusOuter, fRadiusInner, fRadiusOuter, fRadiusInner, 0.0, 0.0, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_ELLIPSE");
|
|
}
|
|
|
|
object ObjectPlaceSpring(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_SPRING")
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 60;
|
|
if (fTime < 0.0) fTime = 12.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fTheta = 360.0*fRev/IntToFloat(nFrequency); // angle between each node
|
|
float fDecay = (fRadiusStart - fRadiusEnd)/IntToFloat(nFrequency); // change in radius per node
|
|
float fGrowth = (fHeightStart - fHeightEnd)/IntToFloat(nFrequency); // change in height per node
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
location lPos;
|
|
float f, fAngle;
|
|
|
|
object oData = (fLifetime > 0.0) ? OBJECT_INVALID : CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
|
|
for (i = 0; i < nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fTheta*f + fRotate;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, (fRadiusStart - fDecay*f)*cos(fAngle), (fRadiusStart - fDecay*f)*sin(fAngle), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelay, gao_ActionCreateObject(sTemplate, lPos, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
|
|
return oData;
|
|
}
|
|
|
|
void PlaceSpring(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceSpring(sTemplate, lCenter, fRadiusStart, fRadiusEnd, fHeightStart, fHeightEnd, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime);
|
|
}
|
|
|
|
void PlaceSpiral(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceSpring(sTemplate, lCenter, fRadiusStart, fRadiusEnd, 0.0, 0.0, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_SPIRAL");
|
|
}
|
|
|
|
void PlaceCircle(string sTemplate, location lCenter, float fRadius, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceSpring(sTemplate, lCenter, fRadius, fRadius, 0.0, 0.0, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_CIRCLE");
|
|
}
|
|
|
|
void PlaceLineToCenter(string sTemplate, location lCenter, float fLength, float fDirection=0.0f, int nFrequency=60, float fTime=12.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceSpring(sTemplate, lCenter, fLength, 0.0, 0.0, 0.0, nFrequency, 0.0, fTime, fDirection, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_LINETO");
|
|
}
|
|
|
|
void PlaceLineFromCenter(string sTemplate, location lCenter, float fLength, float fDirection=0.0f, int nFrequency=60, float fTime=12.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceSpring(sTemplate, lCenter, 0.0, fLength, 0.0, 0.0, nFrequency, 0.0, fTime, fDirection, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_LINEFROM");
|
|
}
|
|
|
|
object ObjectPlacePolygonalSpring(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_POLYGONALSPRING")
|
|
{
|
|
int i;
|
|
if (nSides < 3) nSides = 3;
|
|
if (nFrequency < 1) nFrequency = 60;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (fTime < 0.0) fTime = 12.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fRev == 0.0) fRev = 5.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fEta = (fRev > 0.0) ? 360.0/IntToFloat(nSides) : -360.0/IntToFloat(nSides); // angle of segment
|
|
float fSidesToDraw = (fRev > 0.0) ? fRev*IntToFloat(nSides) : -fRev*IntToFloat(nSides); // total number of sides to draw including revolutions as float value
|
|
int nSidesToDraw = FloatToInt(fSidesToDraw); // total number of sides to draw including revolutions as int value
|
|
int nFrequencyPerSide = FloatToInt(IntToFloat(nFrequency)/fSidesToDraw);
|
|
float fDecay = (fRadiusStart - fRadiusEnd)/fSidesToDraw; // change in radius per side
|
|
float fGrowth = (fHeightStart - fHeightEnd)/fSidesToDraw; // change in height per side
|
|
float fDelayPerSide = fTime/fSidesToDraw;
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector vPos1, vPos2;
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float f, g, fAngle1, fAngle2;
|
|
|
|
object oData = (fLifetime > 0.0) ? OBJECT_INVALID : CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
|
|
for (i = 0; i < nSidesToDraw; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
g = IntToFloat(i+1);
|
|
fAngle1 = fEta*f + fRotate;
|
|
fAngle2 = fEta*g + fRotate;
|
|
vPos1 = gao_RotateVector(vCenter, sAxis, (fRadiusStart - fDecay*f)*cos(fAngle1), (fRadiusStart - fDecay*f)*sin(fAngle1), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ);
|
|
vPos2 = gao_RotateVector(vCenter, sAxis, (fRadiusStart - fDecay*g)*cos(fAngle2), (fRadiusStart - fDecay*g)*sin(fAngle2), fHeightStart - fGrowth*g, fDirectionXZ, fDirectionYZ);
|
|
DelayCommand(f*fDelayPerSide, PlaceLineFromVectorToVector(sTemplate, oArea, vPos1, vPos2, nFrequencyPerSide, fDelayPerSide, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
|
|
return oData;
|
|
}
|
|
|
|
void PlacePolygonalSpring(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlacePolygonalSpring(sTemplate, lCenter, fRadiusStart, fRadiusEnd, fHeightStart, fHeightEnd, nSides, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime);
|
|
}
|
|
|
|
void PlacePolygonalSpiral(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, int nSides=3, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlacePolygonalSpring(sTemplate, lCenter, fRadiusStart, fRadiusEnd, 0.0, 0.0, nSides, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_POLYGONALSPIRAL");
|
|
}
|
|
|
|
void PlacePolygon(string sTemplate, location lCenter, float fRadius, int nSides=3, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlacePolygonalSpring(sTemplate, lCenter, fRadius, fRadius, 0.0, 0.0, nSides, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_POLYGON");
|
|
}
|
|
|
|
object ObjectPlacePentaclicSpring(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_PENTACLICSPRING")
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 60;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (fTime < 0.0) fTime = 12.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fRev == 0.0) fRev = 5.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fSidesToDraw = (fRev > 0.0) ? fRev*5.0 : -fRev*5.0;
|
|
int nSidesToDraw = FloatToInt(fSidesToDraw); // total number of sides to draw including revolutions
|
|
int nFrequencyPerSide = FloatToInt(IntToFloat(nFrequency)/fSidesToDraw);
|
|
float fDecay = (fRadiusStart - fRadiusEnd)/fSidesToDraw; // change in radius per side
|
|
float fGrowth = (fHeightStart - fHeightEnd)/fSidesToDraw; // change in height per side
|
|
float fDelayPerSide = fTime/fSidesToDraw;
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector vPos1, vPos2;
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float f, g, fAngle1, fAngle2;
|
|
float fStarangle = (fRev > 0.0) ? 144.0 : -144.0;
|
|
|
|
object oData = (fLifetime > 0.0) ? OBJECT_INVALID : CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
|
|
for (i = 0; i < nSidesToDraw; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
g = IntToFloat(i+1);
|
|
fAngle1 = fStarangle*f + fRotate;
|
|
fAngle2 = fStarangle*g + fRotate;
|
|
vPos1 = gao_RotateVector(vCenter, sAxis, (fRadiusStart-fDecay*f)*cos(fAngle1), (fRadiusStart-fDecay*f)*sin(fAngle1), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ);
|
|
vPos2 = gao_RotateVector(vCenter, sAxis, (fRadiusStart-fDecay*g)*cos(fAngle2), (fRadiusStart-fDecay*g)*sin(fAngle2), fHeightStart - fGrowth*g, fDirectionXZ, fDirectionYZ);
|
|
DelayCommand(f*fDelayPerSide, PlaceLineFromVectorToVector(sTemplate, oArea, vPos1, vPos2, nFrequencyPerSide, fDelayPerSide, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
|
|
return oData;
|
|
}
|
|
|
|
void PlacePentaclicSpring(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlacePentaclicSpring(sTemplate, lCenter, fRadiusStart, fRadiusEnd, fHeightStart, fHeightEnd, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime);
|
|
}
|
|
|
|
void PlacePentaclicSpiral(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlacePentaclicSpring(sTemplate, lCenter, fRadiusStart, fRadiusEnd, 0.0, 0.0, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_PENTACLICSPIRAL");
|
|
}
|
|
|
|
void PlacePentacle(string sTemplate, location lCenter, float fRadius, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlacePentaclicSpring(sTemplate, lCenter, fRadius, fRadius, 0.0, 0.0, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_PENTACLE");
|
|
}
|
|
|
|
object ObjectPlaceStarSpring(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_STARSPRING")
|
|
{
|
|
int i, toggle;
|
|
if (nSides < 2) nSides = 3;
|
|
if (nFrequency < 1) nFrequency = 60;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (fTime < 0.0) fTime = 12.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fRev == 0.0) fRev = 5.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fSidesToDraw = (fRev > 0.0) ? fRev*IntToFloat(nSides*2) : -fRev*IntToFloat(nSides*2);
|
|
int nSidesToDraw = FloatToInt(fSidesToDraw); // total number of sides to draw including revolutions
|
|
int nFrequencyPerSide = FloatToInt(IntToFloat(nFrequency)/fSidesToDraw);
|
|
float fDecayInner = (fRadiusStartInner - fRadiusEndInner)/fSidesToDraw; // change in radius per side
|
|
float fDecayOuter = (fRadiusStartOuter - fRadiusEndOuter)/fSidesToDraw; // change in radius per side
|
|
float fGrowth = (fHeightStart - fHeightEnd)/fSidesToDraw; // change in height per side
|
|
float fDelayPerSide = fTime/fSidesToDraw;
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector vPos1, vPos2;
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float f, g, fAngle1, fAngle2;
|
|
float fStarangle = (fRev > 0.0) ? 360.0/IntToFloat(nSides*2) : -360.0/IntToFloat(nSides*2);
|
|
|
|
object oData = (fLifetime > 0.0) ? OBJECT_INVALID : CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
|
|
for (i = 0; i < nSidesToDraw; i++)
|
|
{
|
|
toggle ^= 1;
|
|
f = IntToFloat(i);
|
|
g = IntToFloat(i+1);
|
|
fAngle1 = fStarangle*f + fRotate;
|
|
fAngle2 = fStarangle*g + fRotate;
|
|
if (!toggle)
|
|
{
|
|
vPos1 = gao_RotateVector(vCenter, sAxis, (fRadiusStartInner - fDecayInner*f)*cos(fAngle1), (fRadiusStartInner - fDecayInner*f)*sin(fAngle1), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ);
|
|
vPos2 = gao_RotateVector(vCenter, sAxis, (fRadiusStartOuter - fDecayOuter*g)*cos(fAngle2), (fRadiusStartOuter - fDecayOuter*g)*sin(fAngle2), fHeightStart - fGrowth*g, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
else
|
|
{
|
|
vPos1 = gao_RotateVector(vCenter, sAxis, (fRadiusStartOuter - fDecayOuter*f)*cos(fAngle1), (fRadiusStartOuter - fDecayOuter*f)*sin(fAngle1), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ);
|
|
vPos2 = gao_RotateVector(vCenter, sAxis, (fRadiusStartInner - fDecayInner*g)*cos(fAngle2), (fRadiusStartInner - fDecayInner*g)*sin(fAngle2), fHeightStart - fGrowth*g, fDirectionXZ, fDirectionYZ);
|
|
}
|
|
DelayCommand(f*fDelayPerSide, PlaceLineFromVectorToVector(sTemplate, oArea, vPos1, vPos2, nFrequencyPerSide, fDelayPerSide, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
|
|
return oData;
|
|
}
|
|
|
|
void PlaceStarSpring(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceStarSpring(sTemplate, lCenter, fRadiusStartOuter, fRadiusStartInner, fRadiusEndOuter, fRadiusEndInner, fHeightStart, fHeightEnd, nSides, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime);
|
|
}
|
|
|
|
void PlaceStarSpiral(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, int nSides=3, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceStarSpring(sTemplate, lCenter, fRadiusStartOuter, fRadiusStartInner, fRadiusEndOuter, fRadiusEndInner, 0.0, 0.0, nSides, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_STARSPIRAL");
|
|
}
|
|
|
|
void PlaceStar(string sTemplate, location lCenter, float fRadiusOuter, float fRadiusInner, int nSides=3, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceStarSpring(sTemplate, lCenter, fRadiusOuter, fRadiusInner, fRadiusOuter, fRadiusInner, 0.0, 0.0, nSides, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_STAR");
|
|
}
|
|
|
|
object ObjectPlaceHemisphere(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_HEMISPHERE")
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 60;
|
|
if (fTime < 0.0) fTime = 12.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fRev == 0.0) fRev = 5.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fTheta = 360.0*fRev/IntToFloat(nFrequency); // angle between each node
|
|
float fDecay = (fRadiusStart - fRadiusEnd)/IntToFloat(nFrequency); // change in radius per node
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
location lPos;
|
|
float f, fAngle, fSphereRadius, fSphereAngle;
|
|
float fEffectiveHeight = fHeightEnd - fHeightStart;
|
|
|
|
object oData = (fLifetime > 0.0) ? OBJECT_INVALID : CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
|
|
for (i = 0; i < nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fTheta*f + fRotate;
|
|
fSphereAngle = fTheta*f*0.25/fRev;
|
|
fSphereRadius = fRadiusStart*cos(fSphereAngle) + fRadiusEnd*sin(fSphereAngle);
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fSphereRadius*cos(fAngle), fSphereRadius*sin(fAngle), fEffectiveHeight*sin(fSphereAngle) + fHeightStart, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelay, gao_ActionCreateObject(sTemplate, lPos, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
|
|
return oData;
|
|
}
|
|
|
|
void PlaceHemisphere(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceHemisphere(sTemplate, lCenter, fRadiusStart, fRadiusEnd, fHeightStart, fHeightEnd, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime);
|
|
}
|
|
|
|
void PlaceSphere(string sTemplate, location lCenter, float fRadius, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
if (nFrequency < 1) nFrequency = 60;
|
|
if (fRev == 0.0) fRev = 5.0;
|
|
ObjectPlaceHemisphere(sTemplate, lCenter, fRadius, 0.0, fRadius, 0.0, nFrequency/2, fRev/2.0, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime);
|
|
ObjectPlaceHemisphere(sTemplate, lCenter, fRadius, 0.0, fRadius, 2.0*fRadius, nFrequency/2, -fRev/2.0, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime);
|
|
}
|
|
|
|
object ObjectPlacePolygonalHemisphere(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_POLYGONALHEMISPHERE")
|
|
{
|
|
int i;
|
|
if (nSides < 3) nSides = 3;
|
|
if (nFrequency < 1) nFrequency = 90;
|
|
if (fTime < 0.0) fTime = 12.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fRev == 0.0) fRev = 5.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fEta = (fRev > 0.0) ? 360.0/IntToFloat(nSides) : -360.0/IntToFloat(nSides); // angle of segment
|
|
float fSidesToDraw = (fRev > 0.0) ? fRev*IntToFloat(nSides) : -fRev*IntToFloat(nSides); // total number of sides to draw including revolutions as float value
|
|
int nSidesToDraw = FloatToInt(fSidesToDraw); // total number of sides to draw including revolutions as int value
|
|
int nFrequencyPerSide = FloatToInt(IntToFloat(nFrequency)/fSidesToDraw);
|
|
float fDelayPerSide = fTime/fSidesToDraw;
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector vPos1, vPos2;
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float f, g, fAngle1, fAngle2, fSphereRadius1, fSphereAngle1, fSphereRadius2, fSphereAngle2;
|
|
float fEffectiveHeight = fHeightEnd - fHeightStart;
|
|
|
|
object oData = (fLifetime > 0.0) ? OBJECT_INVALID : CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
|
|
for (i = 0; i < nSidesToDraw; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
g = IntToFloat(i+1);
|
|
fAngle1 = fEta*f + fRotate;
|
|
fSphereAngle1 = fEta*f*0.25/fRev;
|
|
fSphereRadius1 = fRadiusStart*cos(fSphereAngle1) + fRadiusEnd*sin(fSphereAngle1);
|
|
fAngle2 = fEta*g + fRotate;
|
|
fSphereAngle2 = fEta*g*0.25/fRev;
|
|
fSphereRadius2 = fRadiusStart*cos(fSphereAngle2) + fRadiusEnd*sin(fSphereAngle2);
|
|
vPos1 = gao_RotateVector(vCenter, sAxis, fSphereRadius1*cos(fAngle1), fSphereRadius1*sin(fAngle1), fEffectiveHeight*sin(fSphereAngle1) + fHeightStart, fDirectionXZ, fDirectionYZ);
|
|
vPos2 = gao_RotateVector(vCenter, sAxis, fSphereRadius2*cos(fAngle2), fSphereRadius2*sin(fAngle2), fEffectiveHeight*sin(fSphereAngle2) + fHeightStart, fDirectionXZ, fDirectionYZ);
|
|
DelayCommand(f*fDelayPerSide, PlaceLineFromVectorToVector(sTemplate, oArea, vPos1, vPos2, nFrequencyPerSide, fDelayPerSide, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
|
|
return oData;
|
|
}
|
|
|
|
void PlacePolygonalHemisphere(string sTemplate, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlacePolygonalHemisphere(sTemplate, lCenter, fRadiusStart, fRadiusEnd, fHeightStart, fHeightEnd, nSides, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime);
|
|
}
|
|
|
|
object ObjectPlaceSinusoid(string sTemplate, location lCenter, float fRadius, float fLength, float fDirection=0.0f, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_SINUSOID")
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 60;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (fTime < 0.0) fTime = 12.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fTheta = 360.0*fRev/IntToFloat(nFrequency); // angle between each node
|
|
float fEta = fLength/IntToFloat(nFrequency); // horizontal distance between each node
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector v, vTemp;
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
location lPos;
|
|
float f, fAngle, fSine;
|
|
|
|
object oData = (fLifetime > 0.0) ? OBJECT_INVALID : CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
|
|
for (i = 0; i < nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fTheta*f + fRotate;
|
|
fSine = sin(fAngle);
|
|
v = Vector(fEta*f, fRadius*fSine, 0.0);
|
|
vTemp = VectorMagnitude(v)*AngleToVector(VectorToAngle(v) + fDirection);
|
|
fAngle = (fSine > 0.0) ? 360.0 - fAngle : fAngle ;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, vTemp.x, vTemp.y, 0.0, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelay, gao_ActionCreateObject(sTemplate, lPos, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
|
|
return oData;
|
|
}
|
|
|
|
void PlaceSinusoid(string sTemplate, location lCenter, float fRadius, float fLength, float fDirection=0.0f, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceSinusoid(sTemplate, lCenter, fRadius, fLength, fDirection, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime);
|
|
}
|
|
|
|
object ObjectPlaceToroidalSpring(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fLoopsPerRev=36.0f, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_TOROIDALSPRING")
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 60;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (fTime < 0.0) fTime = 12.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fRadiusStart = (fRadiusStartOuter + fRadiusStartInner)*0.5;
|
|
float fRadiusEnd = (fRadiusEndOuter + fRadiusEndInner)*0.5;
|
|
float fToricRadiusStart = (fRadiusStartOuter - fRadiusStartInner)*0.5;
|
|
float fToricRadiusEnd = (fRadiusEndOuter - fRadiusEndInner)*0.5;
|
|
float fTheta = 360.0*fRev/IntToFloat(nFrequency); // angle between each node
|
|
float fDecay = (fRadiusStart - fRadiusEnd)/IntToFloat(nFrequency); // change in radius per node
|
|
float fGrowth = (fHeightStart - fHeightEnd)/IntToFloat(nFrequency); // change in height per node
|
|
float fToricDecay = (fToricRadiusStart - fToricRadiusEnd)/IntToFloat(nFrequency); // change in radius of torus per node
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
location lPos;
|
|
float f, fAngle, fToricAngle, fToricRadius;
|
|
|
|
object oData = (fLifetime > 0.0) ? OBJECT_INVALID : CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
|
|
for (i = 0; i < nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fTheta*f + fRotate;
|
|
fToricAngle = fLoopsPerRev*fAngle;
|
|
fToricRadius = fToricRadiusStart - fToricDecay*f;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, (fRadiusStart - fDecay*f)*cos(fAngle) + fToricRadius*cos(fToricAngle)*cos(fAngle), (fRadiusStart - fDecay*f)*sin(fAngle) + fToricRadius*cos(fToricAngle)*sin(fAngle), fHeightStart - fGrowth*f + fToricRadius*sin(fToricAngle), fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelay, gao_ActionCreateObject(sTemplate, lPos, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
|
|
return oData;
|
|
}
|
|
|
|
void PlaceToroidalSpring(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nFrequency=60, float fLoopsPerRev=36.0f, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceToroidalSpring(sTemplate, lCenter, fRadiusStartOuter, fRadiusStartInner, fRadiusEndOuter, fRadiusEndInner, fHeightStart, fHeightEnd, nFrequency, fLoopsPerRev, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime);
|
|
}
|
|
|
|
void PlaceToroidalSpiral(string sTemplate, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, int nFrequency=60, float fLoopsPerRev=36.0f, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceToroidalSpring(sTemplate, lCenter, fRadiusStartOuter, fRadiusStartInner, fRadiusEndOuter, fRadiusEndInner, 0.0, 0.0, nFrequency, fLoopsPerRev, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_TOROIDALSPIRAL");
|
|
}
|
|
|
|
void PlaceTorus(string sTemplate, location lCenter, float fRadiusOuter, float fRadiusInner, int nFrequency=60, float fLoopsPerRev=36.0f, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceToroidalSpring(sTemplate, lCenter, fRadiusOuter, fRadiusInner, fRadiusOuter, fRadiusInner, 0.0, 0.0, nFrequency, fLoopsPerRev, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_TORUS");
|
|
}
|
|
|
|
object ObjectPlaceStellaOctangula(string sTemplate, location lCenter, float fRadius, int nFrequency=60, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_STELLAOCTANGULA")
|
|
{
|
|
int i;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (nFrequency < 1) nFrequency = 60;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float fSigma = fRadius*2.0/3.0;
|
|
float fEpsilon = fSigma*4.0/3.0/cos(19.47122063449069136924599933997);
|
|
int nFrequencyPerSide = nFrequency/12;
|
|
float fDelayPerSide = fTime/12.0;
|
|
float f, z1, fAngle1, g, z2, fAngle2;
|
|
vector vPos1, vPos2, vTop;
|
|
vTop = gao_RotateVector(vCenter, sAxis, 0.0, 0.0, 3.0*fSigma, fDirectionXZ, fDirectionYZ);
|
|
|
|
object oData = (fLifetime > 0.0) ? OBJECT_INVALID : CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
|
|
for (i = 0; i < 6; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
g = IntToFloat(i+1);
|
|
if (i < 3)
|
|
{
|
|
fAngle1 = fRotate + 120.0*f;
|
|
fAngle2 = fRotate + 120.0*g;
|
|
z1 = 2.0*fSigma;
|
|
z2 = 2.0*fSigma;
|
|
}
|
|
else
|
|
{
|
|
fAngle1 = fRotate + 120.0*f + 60.0 ;
|
|
fAngle2 = fRotate + 120.0*g + 60.0 ;
|
|
z1 = fSigma;
|
|
z2 = fSigma;
|
|
}
|
|
vPos1 = gao_RotateVector(vCenter, sAxis, fEpsilon*cos(fAngle1), fEpsilon*sin(fAngle1), z1, fDirectionXZ, fDirectionYZ);
|
|
vPos2 = gao_RotateVector(vCenter, sAxis, fEpsilon*cos(fAngle2), fEpsilon*sin(fAngle2), z2, fDirectionXZ, fDirectionYZ);
|
|
|
|
if (i<3) DelayCommand(fDelayPerSide*f, PlaceLineFromVectorToVector(sTemplate, oArea, vCenter, vPos1, nFrequencyPerSide, fDelayPerSide, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
else DelayCommand(fDelayPerSide*(f+6.0), PlaceLineFromVectorToVector(sTemplate, oArea, vTop, vPos1, nFrequencyPerSide, fDelayPerSide, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
DelayCommand(fDelayPerSide*(f+3.0), PlaceLineFromVectorToVector(sTemplate, oArea, vPos1, vPos2, nFrequencyPerSide, fDelayPerSide, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
|
|
return oData;
|
|
}
|
|
|
|
void PlaceStellaOctangula(string sTemplate, location lCenter, float fRadius, int nFrequency=60, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceStellaOctangula(sTemplate, lCenter, fRadius, nFrequency, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime);
|
|
}
|
|
|
|
object ObjectPlaceIcosahedron(string sTemplate, location lCenter, float fRadius, int nFrequency=60, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_ICOSAHEDRON")
|
|
{
|
|
int i;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (nFrequency < 1) nFrequency = 60;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float fSigma1 = fRadius*0.55278640450004206071816526625413;
|
|
float fSigma2 = fRadius*0.89442719099991587856366946749173;
|
|
float fEpsilon = fRadius*0.89442719099991587856366946749256;
|
|
int nFrequencyPerSide = nFrequency/30;
|
|
float fDelayPerSide = fTime/30.0;
|
|
float f, z1, fAngle1, g, z2, fAngle2;
|
|
vector vPos1, vPos2, vTop;
|
|
vTop = gao_RotateVector(vCenter, sAxis, 0.0, 0.0, 2.0*fSigma1 + fSigma2, fDirectionXZ, fDirectionYZ);
|
|
|
|
object oData = (fLifetime > 0.0) ? OBJECT_INVALID : CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
|
|
for (i = 0; i < 20; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
g = IntToFloat(i+1);
|
|
if (i < 5)
|
|
{
|
|
fAngle1 = fRotate + f*72.0;
|
|
fAngle2 = fRotate + g*72.0;
|
|
z1 = fSigma1;
|
|
z2 = fSigma1;
|
|
}
|
|
else if (i < 10)
|
|
{
|
|
fAngle1 = fRotate + f*72.0;
|
|
fAngle2 = fRotate + f*72.0 + 36.0;
|
|
z1 = fSigma1;
|
|
z2 = fSigma1 + fSigma2;
|
|
}
|
|
else if (i < 15)
|
|
{
|
|
fAngle1 = fRotate + f*72.0;
|
|
fAngle2 = fRotate + f*72.0 - 36.0;
|
|
z1 = fSigma1;
|
|
z2 = fSigma1 + fSigma2;
|
|
}
|
|
else
|
|
{
|
|
fAngle1 = fRotate + f*72.0 + 36.0;
|
|
fAngle2 = fRotate + g*72.0 + 36.0;
|
|
z1 = fSigma1 + fSigma2;
|
|
z2 = fSigma1 + fSigma2;
|
|
}
|
|
vPos1 = gao_RotateVector(vCenter, sAxis, fEpsilon*cos(fAngle1), fEpsilon*sin(fAngle1), z1, fDirectionXZ, fDirectionYZ);
|
|
vPos2 = gao_RotateVector(vCenter, sAxis, fEpsilon*cos(fAngle2), fEpsilon*sin(fAngle2), z2, fDirectionXZ, fDirectionYZ);
|
|
|
|
if (i < 5)
|
|
{
|
|
DelayCommand(fDelayPerSide*f, PlaceLineFromVectorToVector(sTemplate, oArea, vCenter, vPos1, nFrequencyPerSide, fDelayPerSide, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
DelayCommand(fDelayPerSide*(f+5.0), PlaceLineFromVectorToVector(sTemplate, oArea, vPos1, vPos2, nFrequencyPerSide, fDelayPerSide, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
else if (i < 10)
|
|
{
|
|
DelayCommand(fDelayPerSide*(f+5.0), PlaceLineFromVectorToVector(sTemplate, oArea, vPos1, vPos2, nFrequencyPerSide, fDelayPerSide, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
else if (i < 15)
|
|
{
|
|
DelayCommand(fDelayPerSide*(f+5.0), PlaceLineFromVectorToVector(sTemplate, oArea, vPos2, vPos1, nFrequencyPerSide, fDelayPerSide, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
else
|
|
{
|
|
DelayCommand(fDelayPerSide*(f+10.0), PlaceLineFromVectorToVector(sTemplate, oArea, vTop, vPos1, nFrequencyPerSide, fDelayPerSide, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
DelayCommand(fDelayPerSide*(f+5.0), PlaceLineFromVectorToVector(sTemplate, oArea, vPos1, vPos2, nFrequencyPerSide, fDelayPerSide, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
}
|
|
|
|
return oData;
|
|
}
|
|
|
|
void PlaceIcosahedron(string sTemplate, location lCenter, float fRadius, int nFrequency=60, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceIcosahedron(sTemplate, lCenter, fRadius, nFrequency, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime);
|
|
}
|
|
|
|
object ObjectPlaceRhodoneaSpring(string sTemplate, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_RHODONEASPRING")
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 60;
|
|
if (fTime < 0.0) fTime = 12.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fTheta = 360.0*fRev/IntToFloat(nFrequency); // angle between each node
|
|
float fGrowth = (fHeightStart - fHeightEnd)/IntToFloat(nFrequency); // change in height per node
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
location lPos;
|
|
float f, fAngle, fDist;
|
|
|
|
object oData = (fLifetime > 0.0) ? OBJECT_INVALID : CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
|
|
for (i = 0; i < nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fTheta*f;
|
|
fDist = fRadius*sin(fRoulette*fAngle);
|
|
fAngle += fRotate;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fDist*cos(fAngle), fDist*sin(fAngle), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelay, gao_ActionCreateObject(sTemplate, lPos, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
|
|
return oData;
|
|
}
|
|
|
|
void PlaceRhodoneaSpring(string sTemplate, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceRhodoneaSpring(sTemplate, lCenter, fRadius, fHeightStart, fHeightEnd, fRoulette, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime);
|
|
}
|
|
|
|
void PlaceRhodonea(string sTemplate, location lCenter, float fRadius, float fRoulette=3.0f, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceRhodoneaSpring(sTemplate, lCenter, fRadius, 0.0, 0.0, fRoulette, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_RHODONEA");
|
|
}
|
|
|
|
object ObjectPlaceHypocycloidSpring(string sTemplate, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_HYPOCYCLOIDSPRING")
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 60;
|
|
if (fTime < 0.0) fTime = 12.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
if (fRoulette == 0.0) fRoulette = 3.0;
|
|
float fTheta = 360.0*fRev/IntToFloat(nFrequency); // angle between each node
|
|
float fGrowth = (fHeightStart - fHeightEnd)/IntToFloat(nFrequency); // change in height per node
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
location lPos;
|
|
float fAlpha = fRadius - fRoulette;
|
|
float fBeta = fAlpha/fRoulette; // DIVIDE BY ZERO
|
|
float f, x, y, fAngle, fDist;
|
|
|
|
object oData = (fLifetime > 0.0) ? OBJECT_INVALID : CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
|
|
for (i = 0; i < nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fTheta*f;
|
|
y = (fAlpha*sin(fAngle) - fRoulette*sin(fBeta*fAngle));
|
|
x = (fAlpha*cos(fAngle) + fRoulette*cos(fBeta*fAngle));
|
|
fDist = sqrt(pow(y, 2.0) + pow(x, 2.0));
|
|
fAngle = (x == 0.0 && y < 0.0) ? 270.0 + fRotate : (x==0.0) ? 90.0 + fRotate : (x < 0.0) ? 180.0 + atan(y/x) + fRotate : atan(y/x) + fRotate;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fDist*cos(fAngle), fDist*sin(fAngle), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelay, gao_ActionCreateObject(sTemplate, lPos, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
|
|
return oData;
|
|
}
|
|
|
|
void PlaceHypocycloidSpring(string sTemplate, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceHypocycloidSpring(sTemplate, lCenter, fRadius, fHeightStart, fHeightEnd, fRoulette, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime);
|
|
}
|
|
|
|
void PlaceHypocycloid(string sTemplate, location lCenter, float fRadius, float fRoulette=3.0f, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceHypocycloidSpring(sTemplate, lCenter, fRadius, 0.0, 0.0, fRoulette, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_HYPOCYCLOID");
|
|
}
|
|
|
|
object ObjectPlaceEpicycloidSpring(string sTemplate, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f, string sTag="PSC_P_EPICYCLOIDSPRING")
|
|
{
|
|
int i;
|
|
if (nFrequency < 1) nFrequency = 60;
|
|
if (fTime < 0.0) fTime = 12.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
if (fRoulette == 0.0) fRoulette = 3.0;
|
|
float fTheta = 360.0*fRev/IntToFloat(nFrequency); // angle between each node
|
|
float fGrowth = (fHeightStart - fHeightEnd)/IntToFloat(nFrequency); // change in height per node
|
|
float fDelay = fTime/IntToFloat(nFrequency);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
location lPos;
|
|
float fAlpha = fRadius + fRoulette;
|
|
float fBeta = fAlpha/fRoulette;
|
|
float f, x, y, fAngle, fDist;
|
|
|
|
object oData = (fLifetime > 0.0) ? OBJECT_INVALID : CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
|
|
for (i = 0; i < nFrequency; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fTheta*f;
|
|
y = (fAlpha*sin(fAngle) - fRoulette*sin(fBeta*fAngle));
|
|
x = (fAlpha*cos(fAngle) - fRoulette*cos(fBeta*fAngle));
|
|
fDist = sqrt(pow(y, 2.0) + pow(x, 2.0));
|
|
fAngle = (x == 0.0 && y < 0.0) ? 270.0 + fRotate : (x==0.0) ? 90.0 + fRotate : (x < 0.0) ? 180.0 + atan(y/x) + fRotate : atan(y/x) + fRotate;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fDist*cos(fAngle), fDist*sin(fAngle), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelay, gao_ActionCreateObject(sTemplate, lPos, nDurationType, nVFX, fDuration, fWait, fLifetime, oData));
|
|
}
|
|
|
|
return oData;
|
|
}
|
|
|
|
void PlaceEpicycloidSpring(string sTemplate, location lCenter, float fRadius, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fRoulette=3.0f, int nFrequency=60, float fRev=5.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceEpicycloidSpring(sTemplate, lCenter, fRadius, fHeightStart, fHeightEnd, fRoulette, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime);
|
|
}
|
|
|
|
void PlaceEpicycloid(string sTemplate, location lCenter, float fRadius, float fRoulette=3.0f, int nFrequency=60, float fRev=1.0f, float fTime=12.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType=-1, int nVFX=-1, float fDuration=0.0f, float fWait=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectPlaceEpicycloidSpring(sTemplate, lCenter, fRadius, 0.0, 0.0, fRoulette, nFrequency, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType, nVFX, fDuration, fWait, fLifetime, "PSC_P_EPICYCLOID");
|
|
}
|
|
|
|
/*
|
|
=============================================
|
|
BEAM FUNCTIONS
|
|
=============================================
|
|
*/
|
|
|
|
object ObjectBeamPolygonalSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_POLYGONALSPRING")
|
|
{
|
|
int i;
|
|
if (nSides < 3) nSides = 3;
|
|
if (fWait2 < 1.0) fWait2 = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fRev == 0.0) fRev = 5.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fEta = (fRev > 0.0) ? 360.0/IntToFloat(nSides) : -360.0/IntToFloat(nSides); // angle of segment
|
|
float fSidesToDraw = (fRev > 0.0) ? fRev*IntToFloat(nSides) : -fRev*IntToFloat(nSides); // total number of sides to draw including revolutions as float value
|
|
int nSidesToDraw = FloatToInt(fSidesToDraw); // total number of sides to draw including revolutions as int value
|
|
float fDecay = (fRadiusStart - fRadiusEnd)/fSidesToDraw; // change in radius per side
|
|
float fGrowth = (fHeightStart - fHeightEnd)/fSidesToDraw; // change in height per side
|
|
float fDelayPerSide = fTime/fSidesToDraw;
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float f, fAngle;
|
|
object oData;
|
|
location lPos;
|
|
float fWait = 1.0;
|
|
|
|
oData = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
AssignCommand(oData, ActionDoCommand(SetLocalInt(oData, "storetotal", nSidesToDraw + 1)));
|
|
|
|
for (i = 0; i <= nSidesToDraw; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fEta*f + fRotate;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, (fRadiusStart-fDecay*f)*cos(fAngle), (fRadiusStart-fDecay*f)*sin(fAngle), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelayPerSide, gao_ActionCreateLocalObject(sTemplate, lPos, "store" + IntToString(i), oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime));
|
|
if (i > 0) DelayCommand(f*fDelayPerSide+fWait, gao_ActionApplyLocalBeamEffect(oData, "store" + IntToString(i-1), "store" + IntToString(i), nDurationType, nVFX, fDuration));
|
|
}
|
|
|
|
if (fLifetime > 0.0)
|
|
{
|
|
DestroyObject(oData, fLifetime + fTime + fWait + fWait2 + 5.0);
|
|
return OBJECT_INVALID;
|
|
}
|
|
return oData;
|
|
}
|
|
|
|
void BeamPolygonalSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamPolygonalSpring(nDurationType, nVFX, lCenter, fRadiusStart, fRadiusEnd, fHeightStart, fHeightEnd, nSides, fDuration, sTemplate, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
}
|
|
|
|
void BeamPolygonalSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamPolygonalSpring(nDurationType, nVFX, lCenter, fRadiusStart, fRadiusEnd, 0.0, 0.0, nSides, fDuration, sTemplate, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime, "PSC_B_POLYGONALSPIRAL");
|
|
}
|
|
|
|
object ObjectBeamPolygon(int nDurationType, int nVFX, location lCenter, float fRadius, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_POLYGON")
|
|
{
|
|
int i;
|
|
if (nSides < 3) nSides = 3;
|
|
if (fWait2 < 1.0) fWait2 = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fRev == 0.0) fRev = 1.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fEta = (fRev > 0.0) ? 360.0/IntToFloat(nSides) : -360.0/IntToFloat(nSides); // angle of segment
|
|
float fSidesToDraw = (fRev > 0.0) ? fRev*IntToFloat(nSides) : -fRev*IntToFloat(nSides); // total number of sides to draw including revolutions as float value
|
|
int nSidesToDraw = FloatToInt(fSidesToDraw); // total number of sides to draw including revolutions as int value
|
|
float fDelayPerSide = fTime/fSidesToDraw;
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector vPos;
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float f, x, y, fAngle;
|
|
object oData;
|
|
location lPos;
|
|
float fWait = 1.0;
|
|
|
|
oData = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
AssignCommand(oData, ActionDoCommand(SetLocalInt(oData, "storetotal", nSidesToDraw)));
|
|
|
|
for (i = 0; i < nSidesToDraw; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fEta*f + fRotate;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fRadius*cos(fAngle), fRadius*sin(fAngle), 0.0, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelayPerSide, gao_ActionCreateLocalObject(sTemplate, lPos, "store" + IntToString(i), oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime));
|
|
if (i>0) DelayCommand(f*fDelayPerSide+fWait, gao_ActionApplyLocalBeamEffect(oData, "store" + IntToString(i-1), "store" + IntToString(i), nDurationType, nVFX, fDuration));
|
|
if (fRev == 1.0 && i == nSidesToDraw-1) DelayCommand(fSidesToDraw*fDelayPerSide+fWait, gao_ActionApplyLocalBeamEffect(oData, "store" + IntToString(i), "store0", nDurationType, nVFX, fDuration));
|
|
}
|
|
|
|
if (fLifetime > 0.0)
|
|
{
|
|
DestroyObject(oData, fLifetime + fTime + fWait + fWait2 + 5.0);
|
|
return OBJECT_INVALID;
|
|
}
|
|
return oData;
|
|
}
|
|
|
|
void BeamPolygon(int nDurationType, int nVFX, location lCenter, float fRadius, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamPolygon(nDurationType, nVFX, lCenter, fRadius, nSides, fDuration, sTemplate, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
}
|
|
|
|
object ObjectBeamPentaclicSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_PENTACLICSPRING")
|
|
{
|
|
int i;
|
|
if (fWait2 < 1.0) fWait2 = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fRev == 0.0) fRev = 5.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fSidesToDraw = (fRev > 0.0) ? fRev*5.0 : -fRev*5.0;
|
|
int nSidesToDraw = FloatToInt(fSidesToDraw); // total number of sides to draw including revolutions
|
|
float fDecay = (fRadiusStart - fRadiusEnd)/fSidesToDraw; // change in radius per side
|
|
float fGrowth = (fHeightStart - fHeightEnd)/fSidesToDraw; // change in height per side
|
|
float fDelayPerSide = fTime/fSidesToDraw;
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float f, fAngle;
|
|
float fStarangle = (fRev > 0.0) ? 144.0 : -144.0;
|
|
object oData;
|
|
location lPos;
|
|
float fWait = 1.0;
|
|
|
|
oData = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
AssignCommand(oData, ActionDoCommand(SetLocalInt(oData, "storetotal", nSidesToDraw+1)));
|
|
|
|
for (i = 0; i <= nSidesToDraw; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fStarangle*f + fRotate;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, (fRadiusStart-fDecay*f)*cos(fAngle), (fRadiusStart-fDecay*f)*sin(fAngle), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelayPerSide, gao_ActionCreateLocalObject(sTemplate, lPos, "store" + IntToString(i), oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime));
|
|
if (i > 0) DelayCommand(f*fDelayPerSide+fWait, gao_ActionApplyLocalBeamEffect(oData, "store" + IntToString(i-1), "store" + IntToString(i), nDurationType, nVFX, fDuration));
|
|
}
|
|
|
|
if (fLifetime > 0.0)
|
|
{
|
|
DestroyObject(oData, fLifetime + fTime + fWait + fWait2 + 5.0);
|
|
return OBJECT_INVALID;
|
|
}
|
|
return oData;
|
|
}
|
|
|
|
void BeamPentaclicSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamPentaclicSpring(nDurationType, nVFX, lCenter, fRadiusStart, fRadiusEnd, fHeightStart, fHeightEnd, fDuration, sTemplate, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
}
|
|
|
|
void BeamPentaclicSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fDuration=0.0f, string sTemplate="", float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamPentaclicSpring(nDurationType, nVFX, lCenter, fRadiusStart, fRadiusEnd, 0.0, 0.0, fDuration, sTemplate, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime, "PSC_B_PENTACLICSPIRAL");
|
|
}
|
|
|
|
object ObjectBeamPentacle(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_PENTACLE")
|
|
{
|
|
int i;
|
|
if (fWait2 < 1.0) fWait2 = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fRev == 0.0) fRev = 1.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fSidesToDraw = (fRev > 0.0) ? fRev*5.0 : -fRev*5.0;
|
|
int nSidesToDraw = FloatToInt(fSidesToDraw); // total number of sides to draw including revolutions
|
|
float fDelayPerSide = fTime/fSidesToDraw;
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector vPos;
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float f, x, y, fAngle;
|
|
float fStarangle = (fRev > 0.0) ? 144.0 : -144.0;
|
|
object oData;
|
|
location lPos;
|
|
float fWait = 1.0;
|
|
|
|
oData = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
AssignCommand(oData, ActionDoCommand(SetLocalInt(oData, "storetotal", nSidesToDraw)));
|
|
|
|
for (i = 0; i < nSidesToDraw; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fStarangle*f + fRotate;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fRadius*cos(fAngle), fRadius*sin(fAngle), 0.0, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelayPerSide, gao_ActionCreateLocalObject(sTemplate, lPos, "store" + IntToString(i), oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime));
|
|
if (i>0) DelayCommand(f*fDelayPerSide+fWait, gao_ActionApplyLocalBeamEffect(oData, "store" + IntToString(i-1), "store" + IntToString(i), nDurationType, nVFX, fDuration));
|
|
if (fRev == 1.0 && i == nSidesToDraw-1) DelayCommand(fSidesToDraw*fDelayPerSide+fWait, gao_ActionApplyLocalBeamEffect(oData, "store" + IntToString(i), "store0", nDurationType, nVFX, fDuration));
|
|
}
|
|
|
|
if (fLifetime > 0.0)
|
|
{
|
|
DestroyObject(oData, fLifetime + fTime + fWait + fWait2 + 5.0);
|
|
return OBJECT_INVALID;
|
|
}
|
|
return oData;
|
|
}
|
|
|
|
void BeamPentacle(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fRev=1.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamPentacle(nDurationType, nVFX, lCenter, fRadius, fDuration, sTemplate, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
}
|
|
|
|
object ObjectBeamStarSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_STARSPRING")
|
|
{
|
|
int i, toggle;
|
|
if (nSides < 2) nSides = 3;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (fWait2 < 1.0) fWait2 = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fRev == 0.0) fRev = 5.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fSidesToDraw = (fRev > 0.0) ? fRev*IntToFloat(nSides*2) : -fRev*IntToFloat(nSides*2);
|
|
int nSidesToDraw = FloatToInt(fSidesToDraw); // total number of sides to draw including revolutions
|
|
float fDecayOuter = (fRadiusStartOuter - fRadiusEndOuter)/fSidesToDraw; // change in radius per side
|
|
float fDecayInner = (fRadiusStartInner - fRadiusEndInner)/fSidesToDraw; // change in radius per side
|
|
float fGrowth = (fHeightStart - fHeightEnd)/fSidesToDraw; // change in height per side
|
|
float fDelayPerSide = fTime/fSidesToDraw;
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float f, fAngle;
|
|
float fStarangle = (fRev > 0.0) ? 360.0/IntToFloat(2*nSides) : -360.0/IntToFloat(2*nSides);
|
|
object oData;
|
|
location lPos;
|
|
|
|
oData = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
AssignCommand(oData, ActionDoCommand(SetLocalInt(oData, "storetotal", nSidesToDraw+1)));
|
|
|
|
for (i = 0; i <= nSidesToDraw; i++)
|
|
{
|
|
toggle ^= 1;
|
|
f = IntToFloat(i);
|
|
fAngle = fStarangle*f + fRotate;
|
|
if (!toggle) lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, (fRadiusStartInner - fDecayInner*f)*cos(fAngle), (fRadiusStartInner - fDecayInner*f)*sin(fAngle), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ), fAngle);
|
|
else lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, (fRadiusStartOuter - fDecayOuter*f)*cos(fAngle), (fRadiusStartOuter - fDecayOuter*f)*sin(fAngle), fHeightStart - fGrowth*f, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelayPerSide, gao_ActionCreateLocalObject(sTemplate, lPos, "store" + IntToString(i), oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime));
|
|
if (i>0) DelayCommand(f*fDelayPerSide+fWait, gao_ActionApplyLocalBeamEffect(oData, "store" + IntToString(i-1), "store" + IntToString(i), nDurationType, nVFX, fDuration));
|
|
}
|
|
|
|
if (fLifetime > 0.0)
|
|
{
|
|
DestroyObject(oData, fLifetime + fTime + fWait + fWait2 + 5.0);
|
|
return OBJECT_INVALID;
|
|
}
|
|
return oData;
|
|
}
|
|
|
|
void BeamStarSpring(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamStarSpring(nDurationType, nVFX, lCenter, fRadiusStartOuter, fRadiusStartInner, fRadiusEndOuter, fRadiusEndInner, fHeightStart, fHeightEnd, nSides, fDuration, sTemplate, fRev, fTime, fWait, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
}
|
|
|
|
void BeamStarSpiral(int nDurationType, int nVFX, location lCenter, float fRadiusStartOuter, float fRadiusStartInner, float fRadiusEndOuter=0.0f, float fRadiusEndInner=0.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamStarSpring(nDurationType, nVFX, lCenter, fRadiusStartOuter, fRadiusStartInner, fRadiusEndOuter, fRadiusEndInner, 0.0, 0.0, nSides, fDuration, sTemplate, fRev, fTime, fWait, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime, "PSC_B_STARSPIRAL");
|
|
}
|
|
|
|
object ObjectBeamStar(int nDurationType, int nVFX, location lCenter, float fRadiusOuter, float fRadiusInner, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=1.0f, float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_STAR")
|
|
{
|
|
int i, toggle;
|
|
if (nSides < 2) nSides = 3;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (fWait2 < 1.0) fWait2 = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fRev == 0.0) fRev = 1.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fSidesToDraw = (fRev > 0.0) ? fRev*IntToFloat(2*nSides) : -fRev*IntToFloat(2*nSides);
|
|
int nSidesToDraw = FloatToInt(fSidesToDraw); // total number of sides to draw including revolutions
|
|
float fDelayPerSide = fTime/fSidesToDraw;
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector vPos;
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float f, x, y, fAngle;
|
|
float fStarangle = (fRev > 0.0) ? 360.0/IntToFloat(2*nSides) : -360.0/IntToFloat(2*nSides);
|
|
object oData;
|
|
location lPos;
|
|
|
|
oData = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
AssignCommand(oData, ActionDoCommand(SetLocalInt(oData, "storetotal", nSidesToDraw)));
|
|
|
|
for (i = 0; i < nSidesToDraw; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
toggle ^= 1;
|
|
fAngle = fStarangle*f + fRotate;
|
|
if (!toggle) lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fRadiusInner*cos(fAngle), fRadiusInner*sin(fAngle), 0.0, fDirectionXZ, fDirectionYZ), fAngle);
|
|
else lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fRadiusOuter*cos(fAngle), fRadiusOuter*sin(fAngle), 0.0, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelayPerSide, gao_ActionCreateLocalObject(sTemplate, lPos, "store" + IntToString(i), oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime));
|
|
if (i > 0) DelayCommand(f*fDelayPerSide+fWait, gao_ActionApplyLocalBeamEffect(oData, "store" + IntToString(i-1), "store" + IntToString(i), nDurationType, nVFX, fDuration));
|
|
if (fRev == 1.0 && i == nSidesToDraw-1) DelayCommand(fSidesToDraw*fDelayPerSide+fWait, gao_ActionApplyLocalBeamEffect(oData, "store" + IntToString(i), "store0", nDurationType, nVFX, fDuration));
|
|
}
|
|
|
|
if (fLifetime > 0.0)
|
|
{
|
|
DestroyObject(oData, fLifetime + fTime + fWait + fWait2 + 5.0);
|
|
return OBJECT_INVALID;
|
|
}
|
|
return oData;
|
|
}
|
|
|
|
void BeamStar(int nDurationType, int nVFX, location lCenter, float fRadiusOuter, float fRadiusInner, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=1.0f, float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamStar(nDurationType, nVFX, lCenter, fRadiusOuter, fRadiusInner, nSides, fDuration, sTemplate, fRev, fTime, fWait, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
}
|
|
|
|
object ObjectBeamLineFromCenter(int nDurationType, int nVFX, location lCenter, float fLength, float fDirection=0.0f, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_LINEFROM")
|
|
{
|
|
if (fWait2 < 1.0) fWait2 = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector vPos = fLength*AngleToVector(fDirection);
|
|
vector vPos2;
|
|
float fWait = 1.0;
|
|
|
|
vPos2 = gao_RotateVector(vCenter, sAxis, vPos.x, vPos.y, vPos.z, fDirectionXZ, fDirectionYZ);
|
|
|
|
object oData = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
AssignCommand(oData, ActionDoCommand(SetLocalInt(oData, "storetotal", 2)));
|
|
|
|
gao_ActionCreateLocalObject(sTemplate, lCenter, "store0", oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
DelayCommand(fTime, gao_ActionCreateLocalObject(sTemplate, Location(oArea, vPos2, fDirection), "store1", oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime));
|
|
|
|
DelayCommand(fTime+1.0, gao_ActionApplyLocalBeamEffect(oData, "store0", "store1", nDurationType, nVFX, fDuration));
|
|
|
|
if (fLifetime > 0.0)
|
|
{
|
|
DestroyObject(oData, fLifetime + fTime + fWait + fWait2 + 5.0);
|
|
return OBJECT_INVALID;
|
|
}
|
|
return oData;
|
|
}
|
|
|
|
void BeamLineFromCenter(int nDurationType, int nVFX, location lCenter, float fLength, float fDirection=0.0f, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamLineFromCenter(nDurationType, nVFX, lCenter, fLength, fDirection, fDuration, sTemplate, fTime, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
}
|
|
|
|
object ObjectBeamLineToCenter(int nDurationType, int nVFX, location lCenter, float fLength, float fDirection=0.0f, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_LINETO")
|
|
{
|
|
if (fWait2 < 1.0) fWait2 = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
vector vPos = fLength*AngleToVector(fDirection);
|
|
vector vPos2;
|
|
float fWait = 1.0;
|
|
|
|
vPos2 = gao_RotateVector(vCenter, sAxis, vPos.x, vPos.y, vPos.z, fDirectionXZ, fDirectionYZ);
|
|
|
|
object oData = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
AssignCommand(oData, ActionDoCommand(SetLocalInt(oData, "storetotal", 2)));
|
|
|
|
DelayCommand(fTime, gao_ActionCreateLocalObject(sTemplate, lCenter, "store0", oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime));
|
|
gao_ActionCreateLocalObject(sTemplate, Location(oArea, vPos2, fDirection), "store1", oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
|
|
DelayCommand(fTime+1.0, gao_ActionApplyLocalBeamEffect(oData, "store1", "store0", nDurationType, nVFX, fDuration));
|
|
|
|
if (fLifetime > 0.0)
|
|
{
|
|
DestroyObject(oData, fLifetime + fTime + fWait + fWait2 + 5.0);
|
|
return OBJECT_INVALID;
|
|
}
|
|
return oData;
|
|
}
|
|
|
|
void BeamLineToCenter(int nDurationType, int nVFX, location lCenter, float fLength, float fDirection=0.0f, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamLineToCenter(nDurationType, nVFX, lCenter, fLength, fDirection, fDuration, sTemplate, fTime, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
}
|
|
|
|
object ObjectBeamPolygonalHemisphere(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_POLYGONALHEMISPHERE")
|
|
{
|
|
int i;
|
|
if (nSides < 3) nSides = 3;
|
|
if (fWait2 < 1.0) fWait2 = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (fRev == 0.0) fRev = 5.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fEta = (fRev > 0.0) ? 360.0/IntToFloat(nSides) : -360.0/IntToFloat(nSides); // angle of segment
|
|
float fSidesToDraw = (fRev > 0.0) ? fRev*IntToFloat(nSides) : -fRev*IntToFloat(nSides); // total number of sides to draw including revolutions as float value
|
|
int nSidesToDraw = FloatToInt(fSidesToDraw); // total number of sides to draw including revolutions as int value
|
|
float fDelayPerSide = fTime/fSidesToDraw;
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float f, fAngle, fSphereAngle, fSphereRadius;
|
|
float fEffectiveHeight = fHeightEnd - fHeightStart;
|
|
object oData;
|
|
location lPos;
|
|
float fWait = 1.0;
|
|
|
|
oData = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
AssignCommand(oData, ActionDoCommand(SetLocalInt(oData, "storetotal", nSidesToDraw+1)));
|
|
|
|
for (i = 0; i <= nSidesToDraw; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
fAngle = fEta*f + fRotate;
|
|
fSphereAngle = fEta*f*0.25/fRev;
|
|
fSphereRadius = fRadiusStart*cos(fSphereAngle) + fRadiusEnd*sin(fSphereAngle);
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fSphereRadius*cos(fAngle), fSphereRadius*sin(fAngle), fEffectiveHeight*sin(fSphereAngle) + fHeightStart, fDirectionXZ, fDirectionYZ), fAngle);
|
|
DelayCommand(f*fDelayPerSide, gao_ActionCreateLocalObject(sTemplate, lPos, "store" + IntToString(i), oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime));
|
|
if (i > 0) DelayCommand(f*fDelayPerSide+fWait, gao_ActionApplyLocalBeamEffect(oData, "store" + IntToString(i-1), "store" + IntToString(i), nDurationType, nVFX, fDuration));
|
|
}
|
|
|
|
if (fLifetime > 0.0)
|
|
{
|
|
DestroyObject(oData, fLifetime + fTime + fWait + fWait2 + 5.0);
|
|
return OBJECT_INVALID;
|
|
}
|
|
return oData;
|
|
}
|
|
|
|
void BeamPolygonalHemisphere(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fRev=5.0f, float fTime=6.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamPolygonalHemisphere(nDurationType, nVFX, lCenter, fRadiusStart, fRadiusEnd, fHeightStart, fHeightEnd, nSides, fDuration, sTemplate, fRev, fTime, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
}
|
|
|
|
object ObjectBeamStellaOctangula(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_STELLAOCTANGULA")
|
|
{
|
|
int i;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (fWait2 < 1.0) fWait2 = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float fSigma = fRadius*2.0/3.0;
|
|
float fEpsilon = fSigma*4.0/3.0/cos(19.47122063449069136924599933997);
|
|
float fDelay = fTime/8.0;
|
|
fWait += fDelay;
|
|
float f, z, fAngle;
|
|
location lPos;
|
|
string sNumber, sNumber1;
|
|
|
|
object oData = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
AssignCommand(oData, ActionDoCommand(SetLocalInt(oData, "storetotal", 8)));
|
|
|
|
gao_ActionCreateLocalObject(sTemplate, lCenter, "store7", oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
|
|
for (i = 0; i < 7; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
if (i < 3)
|
|
{
|
|
z = 2.0*fSigma;
|
|
fAngle = fRotate + 120.0*f;
|
|
}
|
|
else if (i < 6)
|
|
{
|
|
z = fSigma;
|
|
fAngle = fRotate + 120.0*f + 60.0;
|
|
}
|
|
else
|
|
{
|
|
z = 3.0*fSigma;
|
|
fEpsilon = 0.0;
|
|
}
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fEpsilon*cos(fAngle), fEpsilon*sin(fAngle), z, fDirectionXZ, fDirectionYZ), fAngle);
|
|
sNumber = "store"+IntToString(i);
|
|
DelayCommand(fDelay*(f+1.0), gao_ActionCreateLocalObject(sTemplate, lPos, sNumber, oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime));
|
|
}
|
|
|
|
for (i=0; i<3; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
sNumber = "store"+IntToString(i);
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, "store7", sNumber, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=0; i<6; i++)
|
|
{
|
|
f = IntToFloat(i+3);
|
|
sNumber = "store"+IntToString(i);
|
|
if (i==2) sNumber1 = "store0";
|
|
else if (i==5) sNumber1 = "store3";
|
|
else sNumber1 = "store"+IntToString(i+1);
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber, sNumber1, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=3; i<6; i++)
|
|
{
|
|
f = IntToFloat(i+6);
|
|
sNumber = "store"+IntToString(i);
|
|
sNumber1 = "store6";
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber, sNumber1, nDurationType, nVFX, fDuration));
|
|
}
|
|
|
|
if (fLifetime > 0.0)
|
|
{
|
|
DestroyObject(oData, fLifetime + fTime + fWait + fWait2 + 5.0);
|
|
return OBJECT_INVALID;
|
|
}
|
|
return oData;
|
|
}
|
|
|
|
void BeamStellaOctangula(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamStellaOctangula(nDurationType, nVFX, lCenter, fRadius, fDuration, sTemplate, fTime, fWait, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
}
|
|
|
|
object ObjectBeamIcosahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_ICOSAHEDRON")
|
|
{
|
|
int i;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (fWait2 < 1.0) fWait2 = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float fSigma1 = fRadius*0.55278640450004206071816526625413;
|
|
float fSigma2 = fRadius*0.89442719099991587856366946749173;
|
|
float fEpsilon = fRadius*0.89442719099991587856366946749256;
|
|
float fDelay = fTime/30.0;
|
|
fWait += fDelay;
|
|
float f, z, fAngle;
|
|
location lPos;
|
|
string sNumber, sNumber1;
|
|
|
|
object oData = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
AssignCommand(oData, ActionDoCommand(SetLocalInt(oData, "storetotal", 12)));
|
|
|
|
gao_ActionCreateLocalObject(sTemplate, lCenter, "store11", oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
|
|
for (i = 0; i < 11; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
if (i < 5)
|
|
{
|
|
fAngle = fRotate + f*72.0;
|
|
z = fSigma1;
|
|
}
|
|
else if (i < 10)
|
|
{
|
|
fAngle = fRotate + f*72.0 + 36.0;
|
|
z = fSigma1 + fSigma2;
|
|
}
|
|
else
|
|
{
|
|
fAngle = fRotate;
|
|
z = 2.0*fSigma1 + fSigma2;
|
|
fEpsilon = 0.0;
|
|
}
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fEpsilon*cos(fAngle), fEpsilon*sin(fAngle), z, fDirectionXZ, fDirectionYZ), fAngle);
|
|
sNumber = "store"+IntToString(i);
|
|
DelayCommand(fDelay*(f+1.0), gao_ActionCreateLocalObject(sTemplate, lPos, sNumber, oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime));
|
|
}
|
|
|
|
for (i=0; i<5; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
sNumber = "store"+IntToString(i);
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, "store11", sNumber, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=0; i<10; i++)
|
|
{
|
|
f = IntToFloat(i+5);
|
|
sNumber = "store"+IntToString(i);
|
|
if (i==4) sNumber1 = "store0";
|
|
else if (i==9) sNumber1 = "store5";
|
|
else sNumber1 = "store"+IntToString(i+1);
|
|
|
|
if (i<5) DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber, sNumber1, nDurationType, nVFX, fDuration));
|
|
else DelayCommand(fDelay*(f+10.0)+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber, sNumber1, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=0; i<10; i++)
|
|
{
|
|
f = IntToFloat(i+10);
|
|
sNumber = "store"+IntToString(i);
|
|
if (i<5) sNumber1 = "store"+IntToString(i+5);
|
|
else if (i==9) sNumber1 = "store0";
|
|
else sNumber1 = "store"+IntToString(i-4);
|
|
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber, sNumber1, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=5; i<10; i++)
|
|
{
|
|
f = IntToFloat(i+20);
|
|
sNumber = "store10";
|
|
sNumber1 = "store"+IntToString(i);
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber, sNumber1, nDurationType, nVFX, fDuration));
|
|
}
|
|
|
|
if (fLifetime > 0.0)
|
|
{
|
|
DestroyObject(oData, fLifetime + fTime + fWait + fWait2 + 5.0);
|
|
return OBJECT_INVALID;
|
|
}
|
|
return oData;
|
|
}
|
|
|
|
void BeamIcosahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamIcosahedron(nDurationType, nVFX, lCenter, fRadius, fDuration, sTemplate, fTime, fWait, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
}
|
|
|
|
object ObjectBeamDodecahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_DODECAHEDRON")
|
|
{
|
|
int i;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (fWait2 < 1.0) fWait2 = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float fSigma1 = fRadius*0.205345527708233877044469071674; // Rd - rd
|
|
float fSigma2 = fRadius*0.79465447229176612295553092832696; // rd
|
|
float fSigma3 = fRadius*0.60706199820668622309539158142001; // Rp
|
|
float fEpsilon = fRadius*0.98224694637684602281567027523513; //Rdisplace ~ Zdisplace, golden
|
|
float fDelay = fTime/30.0;
|
|
fWait += fDelay;
|
|
float f, fAngle;
|
|
location lPos;
|
|
string sNumber1, sNumber2;
|
|
|
|
object oData = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
AssignCommand(oData, ActionDoCommand(SetLocalInt(oData, "storetotal", 20)));
|
|
|
|
for (i = 0; i < 20; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
if (i<5)
|
|
{
|
|
fAngle = fRotate + f*72.0 - 36.0;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fSigma3*cos(fAngle), fSigma3*sin(fAngle), fSigma1, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
else if (i<10)
|
|
{
|
|
fAngle = fRotate + f*72.0 - 36.0;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fEpsilon*cos(fAngle), fEpsilon*sin(fAngle), fSigma1 + fSigma3, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
else if (i<15)
|
|
{
|
|
fAngle = fRotate + f*72.0;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fEpsilon*cos(fAngle), fEpsilon*sin(fAngle), fSigma1 + fEpsilon, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
else
|
|
{
|
|
fAngle = fRotate + f*72.0;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fSigma3*cos(fAngle), fSigma3*sin(fAngle), fSigma1 + 2.0*fSigma2, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
sNumber1 = "store"+IntToString(i);
|
|
DelayCommand(fDelay*f, gao_ActionCreateLocalObject(sTemplate, lPos, sNumber1, oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime));
|
|
}
|
|
|
|
for (i=0; i<5; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = (i<4) ? "store" + IntToString(i+1) : "store0";
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=0; i<15; i++)
|
|
{
|
|
f = (i<10) ? IntToFloat(i+5) : IntToFloat(i+10);
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = "store" + IntToString(i+5);
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=10; i<15; i++)
|
|
{
|
|
f = IntToFloat(i+5);
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = (i<14) ? "store" + IntToString(i-4) : "store5";
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=15; i<20; i++)
|
|
{
|
|
f = IntToFloat(i+10);
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = (i<19) ? "store" + IntToString(i+1) : "store15";
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
|
|
if (fLifetime > 0.0)
|
|
{
|
|
DestroyObject(oData, fLifetime + fTime + fWait + fWait2 + 5.0);
|
|
return OBJECT_INVALID;
|
|
}
|
|
return oData;
|
|
}
|
|
|
|
void BeamDodecahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamDodecahedron(nDurationType, nVFX, lCenter, fRadius, fDuration, sTemplate, fTime, fWait, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
}
|
|
|
|
object ObjectBeamTriacontahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_TRIACONTAHEDRON")
|
|
{
|
|
int i;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (fWait2 < 1.0) fWait2 = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float fSigma1 = fRadius*0.55278640450004206071816526625413;
|
|
float fSigma2 = fRadius*0.89442719099991587856366946749173;
|
|
float fSigma3 = fRadius*0.205345527708233877044469071674; //1 Rd - rd
|
|
float fSigma4 = fRadius*0.79465447229176612295553092832696; //2 rd
|
|
float fSigma5 = fRadius*0.60706199820668622309539158142001; //3 Rp
|
|
float fEpsilon1 = fRadius*0.89442719099991587856366946749256;
|
|
float fEpsilon2 = fRadius*0.98224694637684602281567027523513; //Rdisplace ~ Zdisplace, golden
|
|
float fDelay = fTime/60.0;
|
|
fWait += fDelay;
|
|
float f, fAngle;
|
|
location lPos;
|
|
string sNumber1, sNumber2;
|
|
|
|
object oData = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
AssignCommand(oData, ActionDoCommand(SetLocalInt(oData, "storetotal", 32)));
|
|
|
|
gao_ActionCreateLocalObject(sTemplate, lCenter, "store31", oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
|
|
for (i = 0; i < 31; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
if (i<5)
|
|
{
|
|
fAngle = fRotate + f*72.0 + 36.0;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fSigma5*cos(fAngle), fSigma5*sin(fAngle), fSigma3, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
else if (i<10)
|
|
{
|
|
fAngle = fRotate + f*72.0;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fEpsilon1*cos(fAngle), fEpsilon1*sin(fAngle), fSigma1, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
else if (i<15)
|
|
{
|
|
fAngle = fRotate + f*72.0 + 36.0;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fEpsilon2*cos(fAngle), fEpsilon2*sin(fAngle), fSigma3 + fSigma5, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
else if (i<20)
|
|
{
|
|
fAngle = fRotate + f*72.0;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fEpsilon2*cos(fAngle), fEpsilon2*sin(fAngle), fSigma3 + fEpsilon2, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
else if (i<25)
|
|
{
|
|
fAngle = fRotate + f*72.0 + 36.0;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fEpsilon1*cos(fAngle), fEpsilon1*sin(fAngle), fSigma1 + fSigma2, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
else if (i<30)
|
|
{
|
|
fAngle = fRotate + f*72.0;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fSigma5*cos(fAngle), fSigma5*sin(fAngle), fSigma3 + 2.0*fSigma4, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
else
|
|
{
|
|
fAngle = fRotate;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, 0.0, 0.0, 2.0*fSigma1 + fSigma2, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
sNumber1 = "store"+IntToString(i);
|
|
DelayCommand(fDelay*(f+1.0), gao_ActionCreateLocalObject(sTemplate, lPos, sNumber1, oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime));
|
|
}
|
|
|
|
for (i=0; i<15; i++)
|
|
{
|
|
f = (i<10) ? IntToFloat(i) : IntToFloat(i+5);
|
|
sNumber1 = (i<5) ? "store31" : "store" + IntToString(i-5);
|
|
sNumber2 = "store" + IntToString(i);
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=5; i<15; i++)
|
|
{
|
|
f = (i<10) ? IntToFloat(i+5) : IntToFloat(i+10) ;
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = (i==5) ? "store4" : (i==14) ? "store5" : (i<10) ? "store" + IntToString(i-6) : "store" + IntToString(i-4);
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=5; i<15; i++)
|
|
{
|
|
f = IntToFloat(i+20);
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = "store" + IntToString(i+10);
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=15; i<30; i++)
|
|
{
|
|
f = (i<20) ? IntToFloat(i+20) : (i<25) ? IntToFloat(i+25) : IntToFloat(i+30);
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = (i<25) ? "store" + IntToString(i+5) : "store30" ;
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=20; i<30; i++)
|
|
{
|
|
f = (i<20) ? IntToFloat(i+20) : IntToFloat(i+25) ;
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = (i==24) ? "store15" : (i==25) ? "store24" : (i<25) ? "store" + IntToString(i-4) : "store" + IntToString(i-6);
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
|
|
if (fLifetime > 0.0)
|
|
{
|
|
DestroyObject(oData, fLifetime + fTime + fWait + fWait2 + 5.0);
|
|
return OBJECT_INVALID;
|
|
}
|
|
return oData;
|
|
}
|
|
|
|
void BeamTriacontahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamTriacontahedron(nDurationType, nVFX, lCenter, fRadius, fDuration, sTemplate, fTime, fWait, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
}
|
|
|
|
object ObjectBeamCuboctahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_CUBOCTAHEDRON")
|
|
{
|
|
int i;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (fWait2 < 1.0) fWait2 = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float fSigma = fRadius*0.70710678118654752440084436210485;
|
|
float fEpsilon = fRadius - fSigma ;
|
|
float fDelay = fTime/24.0;
|
|
fWait += fDelay;
|
|
float f, fAngle;
|
|
location lPos;
|
|
string sNumber1, sNumber2;
|
|
|
|
object oData = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
AssignCommand(oData, ActionDoCommand(SetLocalInt(oData, "storetotal", 12)));
|
|
|
|
for (i = 0; i < 12; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
if (i<4)
|
|
{
|
|
fAngle = fRotate + f*90.0;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fSigma*cos(fAngle), fSigma*sin(fAngle), fEpsilon, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
else if (i<8)
|
|
{
|
|
fAngle = fRotate + f*90.0 + 45.0;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fRadius*cos(fAngle), fRadius*sin(fAngle), fRadius, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
else
|
|
{
|
|
fAngle = fRotate + f*90.0;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fSigma*cos(fAngle), fSigma*sin(fAngle), fRadius + fSigma, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
sNumber1 = "store"+IntToString(i);
|
|
DelayCommand(fDelay*f, gao_ActionCreateLocalObject(sTemplate, lPos, sNumber1, oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime));
|
|
}
|
|
|
|
for (i=0; i<4; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = (i<3) ? "store" + IntToString(i+1) : "store0";
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=0; i<8; i++)
|
|
{
|
|
f = (i<4) ? IntToFloat(i+4) : IntToFloat(i+8) ;
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = "store" + IntToString(i+4);
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=0; i<8; i++)
|
|
{
|
|
f = (i<4) ? IntToFloat(i+8) : IntToFloat(i+12);
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = (i==0) ? "store7" : (i<4) ? "store" + IntToString(i+3) : (i==7) ? "store8" : "store" + IntToString(i+5);
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=8; i<12; i++)
|
|
{
|
|
f = IntToFloat(i+12);
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = (i<11) ? "store" + IntToString(i+1) : "store8";
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
|
|
if (fLifetime > 0.0)
|
|
{
|
|
DestroyObject(oData, fLifetime + fTime + fWait + fWait2 + 5.0);
|
|
return OBJECT_INVALID;
|
|
}
|
|
return oData;
|
|
}
|
|
|
|
void BeamCuboctahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamCuboctahedron(nDurationType, nVFX, lCenter, fRadius, fDuration, sTemplate, fTime, fWait, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
}
|
|
|
|
object ObjectBeamSmallRhombicuboctahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_SMALLRHOMBICUBOCTAHEDRON")
|
|
{
|
|
int i;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (fWait2 < 1.0) fWait2 = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float fSigma1 = fRadius*0.50544946512442356216037311029756;
|
|
float fSigma2 = fRadius*0.93394883109446475957738040414503;
|
|
float fEpsilon1 = fRadius*0.13714379053898318189115991804927;
|
|
float fEpsilon2 = fRadius*0.71481348867318651189693394330755;
|
|
float fDelay = fTime/48.0;
|
|
fWait += fDelay;
|
|
float f, z, fAngle;
|
|
location lPos;
|
|
string sNumber1, sNumber2;
|
|
|
|
object oData = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
AssignCommand(oData, ActionDoCommand(SetLocalInt(oData, "storetotal", 24)));
|
|
|
|
for (i = 0; i < 24; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
if (i<4)
|
|
{
|
|
fAngle = fRotate + f*90.0;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fSigma1*cos(fAngle), fSigma1*sin(fAngle), fEpsilon1, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
else if (i<20)
|
|
{
|
|
fAngle = fRotate + 27.5 + (f-4.0)*45.0;
|
|
z = (i<12) ? fEpsilon1 + fSigma1 : fEpsilon1 + fEpsilon2 + fSigma1;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fSigma2*cos(fAngle), fSigma2*sin(fAngle), z, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
else
|
|
{
|
|
fAngle = fRotate + f*90.0;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fSigma1*cos(fAngle), fSigma1*sin(fAngle), fEpsilon1 + 2.0*fSigma1 + fEpsilon2, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
sNumber1 = "store"+IntToString(i);
|
|
DelayCommand(fDelay*f, gao_ActionCreateLocalObject(sTemplate, lPos, sNumber1, oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime));
|
|
}
|
|
|
|
for (i=0; i<24; i++)
|
|
{
|
|
f = (i<4) ? IntToFloat(i) : (i<12) ? IntToFloat(i+8) : (i<20) ? IntToFloat(i+16) : IntToFloat(i+24) ;
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = (i==3) ? "store0" : (i==11) ? "store4" : (i==19) ? "store12" : (i==23) ? "store20" : "store" + IntToString(i+1) ;
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=0; i<20; i++)
|
|
{
|
|
f = (i<4) ? IntToFloat(i*2+4) : (i<12) ? IntToFloat(i+16) : IntToFloat(i+24);
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = (i<4) ? "store" + IntToString(i*2+4) : (i<12) ? "store" + IntToString(i+8) : (i==13||i== 15||i==17) ? "store" + IntToString(21+(i-13)/2) : (i==19) ? "store20" : (i==18) ? "store23" : "store" + IntToString(19+(i-10)/2);
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=0; i<4; i++)
|
|
{
|
|
f = (i==0) ? 11.0 : IntToFloat((i-1)*2+5);
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = (i==0) ? "store11" : "store" + IntToString(i*2+3);
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
|
|
if (fLifetime > 0.0)
|
|
{
|
|
DestroyObject(oData, fLifetime + fTime + fWait + fWait2 + 5.0);
|
|
return OBJECT_INVALID;
|
|
}
|
|
return oData;
|
|
}
|
|
|
|
void BeamSmallRhombicuboctahedron(int nDurationType, int nVFX, location lCenter, float fRadius, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamSmallRhombicuboctahedron(nDurationType, nVFX, lCenter, fRadius, fDuration, sTemplate, fTime, fWait, fRotate, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
}
|
|
|
|
object ObjectBeamGengon(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, float fTwist=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f, string sTag="PSC_B_GENGON")
|
|
{
|
|
int i;
|
|
if (nSides < 3) nSides = 3;
|
|
if (fWait < 1.0) fWait = 1.0;
|
|
if (fWait2 < 1.0) fWait2 = 1.0;
|
|
if (fTime < 0.0) fTime = 6.0;
|
|
if (fLifetime < 0.0) fLifetime = 0.0;
|
|
if (sTemplate == "") sTemplate = "prc_invisobj";
|
|
float fEta = 360.0/IntToFloat(nSides); // angle of segment
|
|
float fDelay = fTime/IntToFloat(3*nSides); // delay per edge
|
|
vector vCenter = GetPositionFromLocation(lCenter);
|
|
object oArea = GetAreaFromLocation(lCenter);
|
|
float f, fAngle;
|
|
object oData;
|
|
location lPos;
|
|
fTwist += fRotate;
|
|
fWait += fDelay;
|
|
string sNumber1, sNumber2;
|
|
|
|
oData = CreateObject(OBJECT_TYPE_PLACEABLE, "prc_invisobj", lCenter, FALSE, sTag);
|
|
AssignCommand(oData, ActionDoCommand(SetLocalInt(oData, "storetotal", 2*nSides)));
|
|
|
|
for (i = 0; i < 2*nSides; i++)
|
|
{
|
|
f = IntToFloat(i);
|
|
if (i<nSides)
|
|
{
|
|
fAngle = fEta*f + fRotate;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fRadiusStart*cos(fAngle), fRadiusStart*sin(fAngle), fHeightStart, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
else
|
|
{
|
|
fAngle = fEta*f + fTwist;
|
|
lPos = Location(oArea, gao_RotateVector(vCenter, sAxis, fRadiusEnd*cos(fAngle), fRadiusEnd*sin(fAngle), fHeightEnd, fDirectionXZ, fDirectionYZ), fAngle);
|
|
}
|
|
sNumber1 = "store"+IntToString(i);
|
|
DelayCommand(fDelay*f, gao_ActionCreateLocalObject(sTemplate, lPos, sNumber1, oData, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime));
|
|
}
|
|
|
|
for (i=0; i<2*nSides; i++)
|
|
{
|
|
f = (i<nSides) ? IntToFloat(i) : IntToFloat(i+nSides);
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = (i==nSides-1) ? "store0" : (i==2*nSides-1) ? "store" + IntToString(nSides) : "store" + IntToString(i+1);
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
for (i=0; i<nSides; i++)
|
|
{
|
|
f = IntToFloat(i + nSides);
|
|
sNumber1 = "store" + IntToString(i);
|
|
sNumber2 = "store" + IntToString(i + nSides);
|
|
DelayCommand(fDelay*f+fWait, gao_ActionApplyLocalBeamEffect(oData, sNumber1, sNumber2, nDurationType, nVFX, fDuration));
|
|
}
|
|
|
|
if (fLifetime > 0.0)
|
|
{
|
|
DestroyObject(oData, fLifetime + fTime + fWait + fWait2 + 5.0);
|
|
return OBJECT_INVALID;
|
|
}
|
|
return oData;
|
|
}
|
|
|
|
void BeamGengon(int nDurationType, int nVFX, location lCenter, float fRadiusStart, float fRadiusEnd=0.0f, float fHeightStart=0.0f, float fHeightEnd=5.0f, int nSides=3, float fDuration=0.0f, string sTemplate="", float fTime=6.0f, float fWait=1.0f, float fRotate=0.0f, float fTwist=0.0f, string sAxis="z", float fDirectionXZ = 0.0f, float fDirectionYZ = 0.0f, int nDurationType2=-1, int nVFX2=-1, float fDuration2=0.0f, float fWait2=1.0f, float fLifetime=0.0f)
|
|
{
|
|
ObjectBeamGengon(nDurationType, nVFX, lCenter, fRadiusStart, fRadiusEnd, fHeightStart, fHeightEnd, nSides, fDuration, sTemplate, fTime, fWait, fRotate, fTwist, sAxis, fDirectionXZ, fDirectionYZ, nDurationType2, nVFX2, fDuration2, fWait2, fLifetime);
|
|
}
|