Add projects including README.md(s), .gitignore(s) and the actual project files.
Signed-off-by: Michael Fabian Dirks <michael.dirks@project-kube.de>
This commit is contained in:
@@ -0,0 +1,207 @@
|
||||
Type Tradelane
|
||||
Field P1.TVector, P2.TVector, Dir.TVector
|
||||
Field From$, Target$
|
||||
Field FromSpot.Spotmark, TargetSpot.Spotmark
|
||||
|
||||
Field Gates.TList, Lasers.TList
|
||||
Field RingsTop.TList, RingsBot.TList
|
||||
Field RingsInnerTop.TList, RingsInnerBot.TList
|
||||
Field TubesTop.TList, TubesBot.TList
|
||||
|
||||
Field PivotTubes
|
||||
Field PivotRings
|
||||
|
||||
Field MeshA, MeshB, OBBa, OBBb
|
||||
Field XTubeA, XTubeB
|
||||
Field Range
|
||||
End Type
|
||||
|
||||
Const Tradelane_Speed# = 50.0
|
||||
Const Tradelane_SpeedForce# = 0.125
|
||||
Const Tradelane_Force# = 0.1
|
||||
|
||||
Const Tradelane_GateDistance# = 5000.0
|
||||
Const Tradelane_Offset# = 144
|
||||
Const Tradelane_Size# = 115
|
||||
|
||||
Function CreateTradelane(StartX,StartY,StartZ, EndX,EndY,EndZ, From$, Target$)
|
||||
Local T.Tradelane = New Tradelane
|
||||
Local TempVec.TVector
|
||||
|
||||
; Information
|
||||
T\From = From:T\Target = Target
|
||||
|
||||
; Start, End and Direction Vector
|
||||
T\P1 = TVector_Create(StartX, StartY, StartZ)
|
||||
T\P2 = TVector_Create(EndX, EndY, EndZ)
|
||||
TempVec = TVector_Subtract(T\P2, T\P1)
|
||||
T\Dir = TVector_Normalize(TempVec):Delete TempVec
|
||||
Local Range# = TVector_Distance(T\P1, T\P2)
|
||||
|
||||
; Initialize LinkedLists
|
||||
T\Gates = TList_Create()
|
||||
T\Lasers = TList_Create()
|
||||
T\RingsTop = TList_Create()
|
||||
T\RingsBot = TList_Create()
|
||||
T\RingsInnerTop = TList_Create()
|
||||
T\RingsInnerBot = TList_Create()
|
||||
T\TubesTop = TList_Create()
|
||||
T\TubesBot = TList_Create()
|
||||
|
||||
T\PivotRings = CreatePivot(PVTxEFFECT)
|
||||
T\PivotTubes = CreatePivot(PVTxEFFECT)
|
||||
|
||||
; Create Spots
|
||||
T\FromSpot.Spotmark = CreateSpot(T\P1\X, T\P1\Y, T\P1\Z, 21, (From + ">>>" + Target))
|
||||
T\FromSpot.Spotmark = CreateSpot(T\P2\X, T\P2\Y, T\P2\Z, 21, (Target + ">>>" + From))
|
||||
|
||||
; Create OBB Collisions
|
||||
TVector_Angle(T\Dir)
|
||||
Local TX#, TY#, TZ#
|
||||
TX = (T\P1\X + T\P2\X) / 2.0
|
||||
TY = (T\P1\Y + T\P2\Y) / 2.0
|
||||
TZ = (T\P1\Z + T\P2\Z) / 2.0
|
||||
|
||||
Local TVecUp.TVector = TVector_Rotate(T\Dir, -90, 0, 0)
|
||||
T\OBBa=CreateOBB(TX, TY, TZ, TVector_Pitch-90, TVector_Yaw, 0, 115, 115, Range/2)
|
||||
T\OBBb=CreateOBB(TX, TY, TZ, TVector_Pitch-90, TVector_Yaw, 0, 115, 115, Range/2)
|
||||
MoveEntity T\OBBa, 0, Tradelane_Offset, 0
|
||||
MoveEntity T\OBBb, 0, -Tradelane_Offset, 0
|
||||
Delete TVecUp
|
||||
|
||||
; Create Gates, Sprites and Rings
|
||||
Local Count = Ceil(Range / Tradelane_GateDistance)
|
||||
Local Stp# = Range / Count
|
||||
For n = 0 To Count
|
||||
; Calculate Position
|
||||
TempVec = TVector_MultiplyScalar(T\Dir, n*Stp)
|
||||
Local Pos.TVector = TVector_Add(T\P1, TempVec)
|
||||
|
||||
; Create Mesh
|
||||
Local Mesh = CopyEntity(TLxMSH, PVTxNORMAL)
|
||||
PositionEntity Mesh, Pos\X, Pos\Y, Pos\Z
|
||||
AlignToVector Mesh, T\Dir\X, T\Dir\Y, T\Dir\Z, 0, 1
|
||||
RotateEntity Mesh, EntityPitch(Mesh, 1), EntityYaw(Mesh, 1), 0, 1
|
||||
EntityAutoFade Mesh,14500,15000
|
||||
TList_AddLast(T\Gates, Mesh)
|
||||
|
||||
; Create Laser
|
||||
Local Laser = CopyEntity(TLxMSX, Mesh)
|
||||
EntityAutoFade Laser,9500,10000
|
||||
TList_AddLast(T\Lasers, Laser)
|
||||
|
||||
; Create Rings
|
||||
Local RingTop = CopyEntity(TLxENT, Mesh)
|
||||
Local RingBot = CopyEntity(TLxENT, Mesh)
|
||||
MoveEntity RingTop, 0, Tradelane_Offset, 0
|
||||
MoveEntity RingBot, 0, -Tradelane_Offset, 0
|
||||
ScaleSprite RingTop, 125, 125:SpriteViewMode RingTop, 2:EntityColor RingTop, 64, 198, 255:EntityAlpha RingTop, 0.5:EntityAutoFade RingTop, 4500, 5000:EntityBlend RingTop, 3:EntityFX RingTop, 1+16
|
||||
ScaleSprite RingBot, 125, 125:SpriteViewMode RingBot, 2:EntityColor RingBot, 255, 0, 0:EntityAlpha RingBot, 0.5:EntityAutoFade RingBot, 4500, 5000:EntityBlend RingBot, 3:EntityFX RingBot, 1+16
|
||||
TList_AddLast(T\RingsTop, RingTop)
|
||||
TList_AddLast(T\RingsBot, RingBot)
|
||||
|
||||
Local RingInTop = CopyEntity(TLxENT2, Mesh)
|
||||
Local RingInBot = CopyEntity(TLxENT2, Mesh)
|
||||
MoveEntity RingInTop, 0, Tradelane_Offset, 0
|
||||
MoveEntity RingInBot, 0, -Tradelane_Offset, 0
|
||||
ScaleSprite RingInTop, 125, 125:SpriteViewMode RingInTop, 2:EntityAlpha RingInTop, 0.5:EntityAutoFade RingInTop, 4500, 5000:EntityBlend RingInTop, 3:EntityFX RingInTop, 1+16
|
||||
ScaleSprite RingInBot, 125, 125:SpriteViewMode RingInBot, 2:EntityAlpha RingInBot, 0.5:EntityAutoFade RingInBot, 4500, 5000:EntityBlend RingInBot, 3:EntityFX RingInBot, 1+16
|
||||
TList_AddLast(T\RingsInnerTop, RingInTop)
|
||||
TList_AddLast(T\RingsInnerBot, RingInBot)
|
||||
|
||||
; Create Refraction Tubes
|
||||
If n < Count
|
||||
Local Tube
|
||||
Tube = CreateCylinder(24, 0, RingInTop)
|
||||
ScaleEntity Tube, Tradelane_Size, Stp/2, Tradelane_Size
|
||||
TurnEntity Tube, -90, 0, 0
|
||||
MoveEntity Tube, 0, -Stp/2, 0
|
||||
EntityParent Tube, T\PivotTubes
|
||||
EntityAutoFade Tube, 5000, 10000
|
||||
EntityFX Tube, 1+8+16
|
||||
EntityTexture Tube,StarBTex,0,0
|
||||
EntityTexture Tube,ProjectTex,0,1
|
||||
EntityAlpha Tube, 0.35
|
||||
TList_AddLast(T\TubesTop, Tube)
|
||||
|
||||
Tube = CreateCylinder(24, 0, RingInBot)
|
||||
ScaleEntity Tube, Tradelane_Size, Stp/2, Tradelane_Size
|
||||
TurnEntity Tube, 90, 0, 0
|
||||
MoveEntity Tube, 0, Stp/2, 0
|
||||
EntityParent Tube, T\PivotTubes
|
||||
EntityAutoFade Tube, 5000, 10000
|
||||
EntityFX Tube, 1+8+16
|
||||
EntityTexture Tube,StarBTex,0,0
|
||||
EntityTexture Tube,ProjectTex,0,1
|
||||
EntityAlpha Tube, 0.35
|
||||
TList_AddLast(T\TubesBot, Tube)
|
||||
EndIf
|
||||
|
||||
; Delete remaining temporary data
|
||||
Delete Pos:Delete TempVec
|
||||
Next
|
||||
End Function
|
||||
|
||||
Function UpdateTradelane()
|
||||
;set test on
|
||||
TLxTST=0
|
||||
|
||||
; Create Camera Vector
|
||||
Local vCam.TVector = New TVector
|
||||
Local vGate.TVector = New TVector
|
||||
Local vTmp.TVector = Null
|
||||
Local vTmp2.TVector = Null
|
||||
vCam\X = EntityX(cCamera, 1)
|
||||
vCam\Y = EntityY(cCamera, 1)
|
||||
vCam\Z = EntityZ(cCamera, 1)
|
||||
|
||||
For TL.Tradelane = Each Tradelane
|
||||
; Rings
|
||||
TList_Reset(TL\RingsTop):TList_Reset(TL\RingsInnerTop)
|
||||
TList_Reset(TL\RingsBot):TList_Reset(TL\RingsInnerBot)
|
||||
TList_Reset(TL\Gates)
|
||||
While TList_HasNext(TL\Gates)
|
||||
Local RT = TList_Next(TL\RingsTop)
|
||||
Local RTI = TList_Next(TL\RingsInnerTop)
|
||||
Local RB = TList_Next(TL\RingsBot)
|
||||
Local RBI = TList_Next(TL\RingsInnerBot)
|
||||
Local Gate = TList_Next(TL\Gates)
|
||||
|
||||
TurnEntity RT, 0, 0, -.1
|
||||
TurnEntity RB, 0, 0, .1
|
||||
|
||||
vGate\X = EntityX(Gate, 1)
|
||||
vGate\Y = EntityY(Gate, 1)
|
||||
vGate\Z = EntityZ(Gate, 1)
|
||||
|
||||
vTmp = TVector_Subtract(vGate, vCam)
|
||||
vTmp2 = TVector_Normalize(vTmp):Delete vTmp
|
||||
|
||||
Local Dot# = TVector_Dot(TL\Dir, vTmp2):Delete vTmp2
|
||||
If Dot >= 0 Then
|
||||
EntityColor RT, 64, 198, 255
|
||||
EntityColor RB, 255, 0, 0
|
||||
Else
|
||||
EntityColor RB, 64, 198, 255
|
||||
EntityColor RT, 255, 0, 0
|
||||
EndIf
|
||||
Wend
|
||||
|
||||
; Traveling
|
||||
If EntityInOBB(TL\OBBa,pvShip)
|
||||
AlignToVector pvShip, TL\Dir\X, TL\Dir\Y, TL\Dir\Z, 0, Tradelane_Force
|
||||
ShipSpeedZ = (ShipSpeedZ * (1-Tradelane_SpeedForce)) + (Tradelane_Speed * Tradelane_SpeedForce)
|
||||
TLxTST=1
|
||||
EndIf
|
||||
If EntityInOBB(TL\OBBB,pvShip)
|
||||
AlignToVector pvShip, -TL\Dir\X, -TL\Dir\Y, -TL\Dir\Z, 0, Tradelane_Force
|
||||
ShipSpeedZ = (ShipSpeedZ * (1-Tradelane_SpeedForce)) + (Tradelane_Speed * Tradelane_SpeedForce)
|
||||
TLxTST=1
|
||||
EndIf
|
||||
Next
|
||||
Delete vCam:Delete vGate
|
||||
|
||||
PositionTexture StarBTex, Sin(MilliSecs() / 10000.0), (MilliSecs() / 10000.0) Mod 1
|
||||
|
||||
End Function
|
||||
;~IDEal Editor Parameters:
|
||||
Reference in New Issue
Block a user