TFlipperEdge v1.
This commit is contained in:
Binary file not shown.
@@ -189,6 +189,7 @@
|
|||||||
<ClInclude Include="TEdgeSegment.h" />
|
<ClInclude Include="TEdgeSegment.h" />
|
||||||
<ClInclude Include="TFlagSpinner.h" />
|
<ClInclude Include="TFlagSpinner.h" />
|
||||||
<ClInclude Include="TFlipper.h" />
|
<ClInclude Include="TFlipper.h" />
|
||||||
|
<ClInclude Include="TFlipperEdge.h" />
|
||||||
<ClInclude Include="TGate.h" />
|
<ClInclude Include="TGate.h" />
|
||||||
<ClInclude Include="THole.h" />
|
<ClInclude Include="THole.h" />
|
||||||
<ClInclude Include="timer.h" />
|
<ClInclude Include="timer.h" />
|
||||||
@@ -258,6 +259,7 @@
|
|||||||
<ClCompile Include="TEdgeSegment.cpp" />
|
<ClCompile Include="TEdgeSegment.cpp" />
|
||||||
<ClCompile Include="TFlagSpinner.cpp" />
|
<ClCompile Include="TFlagSpinner.cpp" />
|
||||||
<ClCompile Include="TFlipper.cpp" />
|
<ClCompile Include="TFlipper.cpp" />
|
||||||
|
<ClCompile Include="TFlipperEdge.cpp" />
|
||||||
<ClCompile Include="TGate.cpp" />
|
<ClCompile Include="TGate.cpp" />
|
||||||
<ClCompile Include="THole.cpp" />
|
<ClCompile Include="THole.cpp" />
|
||||||
<ClCompile Include="timer.cpp" />
|
<ClCompile Include="timer.cpp" />
|
||||||
|
|||||||
@@ -219,6 +219,9 @@
|
|||||||
<ClInclude Include="TEdgeBox.h">
|
<ClInclude Include="TEdgeBox.h">
|
||||||
<Filter>Header Files\TPinballComponent</Filter>
|
<Filter>Header Files\TPinballComponent</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="TFlipperEdge.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="pch.cpp">
|
<ClCompile Include="pch.cpp">
|
||||||
@@ -404,6 +407,9 @@
|
|||||||
<ClCompile Include="TEdgeBox.cpp">
|
<ClCompile Include="TEdgeBox.cpp">
|
||||||
<Filter>Source Files\TPinballComponent</Filter>
|
<Filter>Source Files\TPinballComponent</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="TFlipperEdge.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Natvis Include="NatvisFile.natvis" />
|
<Natvis Include="NatvisFile.natvis" />
|
||||||
|
|||||||
512
SpaceCadetPinball/TFlipperEdge.cpp
Normal file
512
SpaceCadetPinball/TFlipperEdge.cpp
Normal file
File diff suppressed because it is too large
Load Diff
61
SpaceCadetPinball/TFlipperEdge.h
Normal file
61
SpaceCadetPinball/TFlipperEdge.h
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "maths.h"
|
||||||
|
#include "TEdgeSegment.h"
|
||||||
|
|
||||||
|
class TPinballTable;
|
||||||
|
|
||||||
|
class TFlipperEdge : public TEdgeSegment
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TFlipperEdge(TCollisionComponent* collComp, char* someFlag, unsigned int visualFlag, TPinballTable* table,
|
||||||
|
vector_type* origin, vector_type* vecT, vector_type* vec3, float bmpCoef1, float bmpCoef2, float a11,
|
||||||
|
float c4F, float c5F);
|
||||||
|
void port_draw() override;
|
||||||
|
float FindCollisionDistance(ray_type* ray) override;
|
||||||
|
void EdgeCollision(TBall* ball, float coef) override;
|
||||||
|
void place_in_grid() override;
|
||||||
|
void set_control_points(float timeNow);
|
||||||
|
void build_edges_in_motion();
|
||||||
|
float flipper_angle(float timeNow);
|
||||||
|
int is_ball_inside(float x, float y);
|
||||||
|
void SetMotion(int code, float value);
|
||||||
|
|
||||||
|
int FlipperFlag;
|
||||||
|
float CollisionC4F;
|
||||||
|
float CollisionC5F;
|
||||||
|
vector_type RotOrigin;
|
||||||
|
float CirclebaseRadius;
|
||||||
|
float CircleT1Radius;
|
||||||
|
float CirclebaseRadiusSq;
|
||||||
|
float CircleT1RadiusSq;
|
||||||
|
float CirclebaseRadiusMSq;
|
||||||
|
float CircleT1RadiusMSq;
|
||||||
|
float AngleMax;
|
||||||
|
float Angle2;
|
||||||
|
float Angle1;
|
||||||
|
int Unknown15;
|
||||||
|
int Unknown16;
|
||||||
|
vector_type Unknown17V;
|
||||||
|
vector_type A1Src;
|
||||||
|
vector_type A2Src;
|
||||||
|
vector_type B1Src;
|
||||||
|
vector_type B2Src;
|
||||||
|
float Unknown32F;
|
||||||
|
vector_type T1Src;
|
||||||
|
vector_type Unknown36V;
|
||||||
|
float DistanceDivSq;
|
||||||
|
float Unknown40F;
|
||||||
|
vector_type CollisionDirection;
|
||||||
|
int Unknown44;
|
||||||
|
float TimeAngle;
|
||||||
|
float Unknown46F;
|
||||||
|
float AngleMult;
|
||||||
|
float BmpCoef1;
|
||||||
|
float BmpCoef2;
|
||||||
|
vector_type NextBallPosition;
|
||||||
|
|
||||||
|
static float flipper_sin_angle, flipper_cos_angle;
|
||||||
|
static vector_type A1, A2, B1, B2, T1;
|
||||||
|
static line_type lineA, lineB;
|
||||||
|
static circle_type circlebase, circleT1;
|
||||||
|
};
|
||||||
@@ -268,7 +268,8 @@ void maths::vector_add(vector_type* vec1Dst, vector_type* vec2)
|
|||||||
vec1Dst->Y += vec2->Y;
|
vec1Dst->Y += vec2->Y;
|
||||||
}
|
}
|
||||||
|
|
||||||
float maths::basic_collision(TBall* ball, vector_type* nextPosition, vector_type* direction, float a4, float a5, float maxSpeed,
|
float maths::basic_collision(TBall* ball, vector_type* nextPosition, vector_type* direction, float a4, float a5,
|
||||||
|
float maxSpeed,
|
||||||
float multiplier)
|
float multiplier)
|
||||||
{
|
{
|
||||||
ball->Position.X = nextPosition->X;
|
ball->Position.X = nextPosition->X;
|
||||||
@@ -304,3 +305,41 @@ float maths::Distance_Squared(vector_type vec1, vector_type vec2)
|
|||||||
{
|
{
|
||||||
return (vec1.Y - vec2.Y) * (vec1.Y - vec2.Y) + (vec1.X - vec2.X) * (vec1.X - vec2.X);
|
return (vec1.Y - vec2.Y) * (vec1.Y - vec2.Y) + (vec1.X - vec2.X) * (vec1.X - vec2.X);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float maths::DotProduct(vector_type* vec1, vector_type* vec2)
|
||||||
|
{
|
||||||
|
return vec1->Y * vec2->Y + vec1->X * vec2->X;
|
||||||
|
}
|
||||||
|
|
||||||
|
void maths::vswap(vector_type* vec1, vector_type* vec2)
|
||||||
|
{
|
||||||
|
vector_type tmp = *vec1;
|
||||||
|
*vec1 = *vec2;
|
||||||
|
*vec2 = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
float maths::Distance(vector_type* vec1, vector_type* vec2)
|
||||||
|
{
|
||||||
|
auto dx = vec1->X - vec2->X;
|
||||||
|
auto dy = vec1->Y - vec2->Y;
|
||||||
|
return sqrt(dy * dy + dx * dx);
|
||||||
|
}
|
||||||
|
|
||||||
|
void maths::SinCos(float angle, float* sinOut, float* cosOut)
|
||||||
|
{
|
||||||
|
*sinOut = sin(angle);
|
||||||
|
*cosOut = cos(angle);
|
||||||
|
}
|
||||||
|
|
||||||
|
void maths::RotatePt(vector_type* point, float sin, float cos, vector_type* origin)
|
||||||
|
{
|
||||||
|
auto dirX = point->X - origin->X;
|
||||||
|
auto dirY = point->Y - origin->Y;
|
||||||
|
point->X = dirX * cos - dirY * sin + origin->X;
|
||||||
|
point->Y = dirX * sin + dirY * cos + origin->Y;
|
||||||
|
}
|
||||||
|
|
||||||
|
float maths::distance_to_flipper(ray_type* ray1, ray_type* ray2)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|||||||
@@ -62,4 +62,10 @@ public:
|
|||||||
static float basic_collision(TBall* ball, vector_type* nextPosition, vector_type* direction, float a4, float a5,
|
static float basic_collision(TBall* ball, vector_type* nextPosition, vector_type* direction, float a4, float a5,
|
||||||
float maxSpeed, float multiplier);
|
float maxSpeed, float multiplier);
|
||||||
static float Distance_Squared(vector_type vec1, vector_type vec2);
|
static float Distance_Squared(vector_type vec1, vector_type vec2);
|
||||||
|
static float DotProduct(vector_type* vec1, vector_type* vec2);
|
||||||
|
static void vswap(vector_type* vec1, vector_type* vec2);
|
||||||
|
static float Distance(vector_type* vec1, vector_type* vec2);
|
||||||
|
static void SinCos(float angle, float* sinOut, float* cosOut);
|
||||||
|
static void RotatePt(vector_type* point, float sin, float cos, vector_type* origin);
|
||||||
|
static float distance_to_flipper(ray_type* ray1, ray_type* ray2);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user