TFlipperEdge v1.
This commit is contained in:
Binary file not shown.
@@ -189,6 +189,7 @@
|
||||
<ClInclude Include="TEdgeSegment.h" />
|
||||
<ClInclude Include="TFlagSpinner.h" />
|
||||
<ClInclude Include="TFlipper.h" />
|
||||
<ClInclude Include="TFlipperEdge.h" />
|
||||
<ClInclude Include="TGate.h" />
|
||||
<ClInclude Include="THole.h" />
|
||||
<ClInclude Include="timer.h" />
|
||||
@@ -258,6 +259,7 @@
|
||||
<ClCompile Include="TEdgeSegment.cpp" />
|
||||
<ClCompile Include="TFlagSpinner.cpp" />
|
||||
<ClCompile Include="TFlipper.cpp" />
|
||||
<ClCompile Include="TFlipperEdge.cpp" />
|
||||
<ClCompile Include="TGate.cpp" />
|
||||
<ClCompile Include="THole.cpp" />
|
||||
<ClCompile Include="timer.cpp" />
|
||||
|
||||
@@ -219,6 +219,9 @@
|
||||
<ClInclude Include="TEdgeBox.h">
|
||||
<Filter>Header Files\TPinballComponent</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="TFlipperEdge.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="pch.cpp">
|
||||
@@ -404,6 +407,9 @@
|
||||
<ClCompile Include="TEdgeBox.cpp">
|
||||
<Filter>Source Files\TPinballComponent</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="TFlipperEdge.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
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,
|
||||
float maxSpeed, float multiplier);
|
||||
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